What it took to land my first software engineering job
Tags: career, beginners, productivity, tips
Published: 2020-02-10 16:38:34

Even before I started my job search in January 2018, I knew I wanted to work at [DigitalOcean](https://www.digitalocean.com/). The culture, the learning opportunities, and the chance to work on a product I believed in. It was everything I wanted in my next role.

But I knew it’d be a long shot.

The quality of engineering and scalability at DigitalOcean is remarkable.

As a software engineer without a CS degree, I was not the best candidate on paper. Furthermore, I moved to New York City only 6 months prior and my network was pretty much nil.

I would need to prove that I could outperform engineers with advanced degrees without relying on any string-pulling.

I had my work cut out for me.

### Fast forward 8 weeks

It is March 2018 and I have accepted an offer from DigitalOcean to work as a Software Engineer.

![seinfeld celebrate gif](https://media.giphy.com/media/12UlfHpF05ielO/giphy.gif)

I also more callbacks than I had expected given that it was my first time interviewing for a software engineering role.

Of the 74 companies to which I directly applied, I had:

* 20 phone screens.

* 15 technical screens.

* 8 onsite interviews (with more scheduled).

* 7 offers.

That is a response rate of ~27% for direct applications and ~10% of applications turned into offers.

### So what happened?

This post will go over what happened in those 8 weeks and how I was able to get my first tech job.

These are not going to be the typical “Don’t Give Up!” and “Stay Motivated!” pieces of advice that I read so often. While those idioms are nice, they are not particularly useful.

I am going to outline the detailed steps that I took to market myself, prepare for interviews, and compete with the other engineers on the market.

I hope people reading this can glean some useful insights. Especially those with non-traditional backgrounds.

## Warning: there are no shortcuts

![code snippet about mastery](https://cdn-images-1.medium.com/max/2000/1*QEcy9ntAK6jb_CYuzldXng.png)

If you’re searching for *“How to get a job in X months?”*, this isn’t it.

I have some novel tips on how to promote oneself, but there isn’t a replacement for mastering the fundamentals — not even a fancy resume and cover letter.

I’ve learned that the hard way.

If you’re having trouble with technical interviews due to lack of experience and/or knowledge, dedicate this time to addressing those mental gaps and studying core principles.

A strong engineering foundation will put you in the 90th percentile of job candidates. This article is meant to take that foundation and make it marketable.

If that sounds like what you’re looking for, enough small talk.

Let's begin.

## 1. Build a badass project

![Conclave in action](https://cdn-images-1.medium.com/max/2854/1*0M9KYogIiSumOCbXeR2Dgw.gif)*Conclave in action*

I’m not talking about a Trello-clone or another CRUD app. Everyone has those in their portfolios. I’m talking about something that takes serious research and shows off your technical prowess.

For [Nitin](undefined), [Elise](undefined), and myself, that was [Conclave](http://bit.ly/conclave-site). We built Conclave as part of the [Launch School Capstone Program](https://launchschool.com/results) during the fall of 2017.

It is badass. It also took a lot of work.

We spent hundreds of hours over several weeks researching and building Conclave. This involved reading white-papers, sifting through open-source code, and implementing custom data-structures. We even had to implement consensus and conflict-resolution algorithms for decentralized systems.

This may sound like a lot, but it was crucial.

If your dream company is a big-name tech giant, you are going to have a lot of competition with CS graduates. While we non-traditional folks cannot compete with their pedigree, we can beat them in applied experience.

Even if you do not want to work for one of the Big Four, a badass project is important. Every interviewer will ask about your recent projects and biggest challenges.

Showing that you have tackled interesting problems, such as concurrency and scaling, will make you shine.

## 2. Show off badass project

Once our team built Conclave, it was time to show it off.

We wrote an extensive case study that we posted to Hacker News and Reddit. We also wrote a condensed version that we published on [Medium](http://bit.ly/conclave-post).

This not only displayed our ability to explain complex ideas in simple terms, it even lead to some companies reaching out to us!

### Meetups

I’m always hearing advice that you should attend Meetups while looking for a job.

Do you know what is more impressive than attending a Meetup?

[Speaking at one!](https://livestream.com/accounts/686369/events/8027195/videos/169294389)

During my job search, I spoke at two local JavaScript and Ruby Meetups. This can be great for a couple reasons:

1. If it’s recorded, you can put the video on your LinkedIn and website. This will be very impressive to any managers who look you up and will set you apart from the other candidates.

1. Speaking at Meetups can be a fantastic referral generator.

I know that many engineers shy at the idea of public speaking and will avoid it at any cost. But think about the upsides.

How many job candidates can say they have given a public presentation?

It shows that you know your stuff to the point that you are willing to teach and tell others about it!

Are you willing to talk for 30 mins in front of a group of your fellow engineers for your dream job?

## 3. Beef up your LinkedIn

Your LinkedIn profile is the first place a recruiter looks when you apply to their company. If you do not have, get one.

I made sure to beef up my LinkedIn profile until it hit the “All-Star” rating. [“All Stars” are 40 times more likely to get contacted](https://www.themuse.com/advice/allstar-linkedin-users-are-40-times-more-likely-to-get-contactedheres-how-to-score-that-rating).

Instead of describing all the stuff I included, [you can look for yourself](https://www.linkedin.com/in/sjbeatteay/).

I also subscribed to the Premium account so that I could inMail recruiters (more on this later).

## 4. Apply to companies in reverse order of interest

Before I started applying for jobs, I created a long list of companies that interested me. I then separated this list into 3 groups based on preference.

These were my “Tiers”.

Each tier determined when I would apply and how much effort I would put towards the application. The greater my interest, the longer I waited to apply.

### Why apply to top tier companies last?

Hiring is an incredibly imprecise process. There are so many factors and variables that are impossible to control.

![linus sweating](https://media.giphy.com/media/AHFjDijGeHjb2/giphy.gif)

Nerves, imperfect answers, and simple mistakes can take down even the most senior engineer. No matter how brilliant you are with computers, [only stellar interviewers get stellar offers](https://twitter.com/mxcl/status/608682016205344768).

And while mock interviews can improve your skill to a certain degree, there is no substitute for the real thing. That is why I wanted to hold off interviewing for my top choice companies until I had some practice.

I didn’t receive an offer from my first onsite because of rookie mistakes. By the time of my eighth onsite, those errors were fewer and farther between.

## 5. Create customized resumes and cover letters

Here is my [resume](https://personal-site-assets.sfo2.cdn.digitaloceanspaces.com/public/images/sunli-resume-v37-cloud.pdf).

Notice the “v37” in the URL? This is the 37th version of my resume.

I mentioned before that the more a company interested me, the more effort went into applying. This includes creating a customized resume and cover letter for almost all of the top tier companies. By the end of my job search, I had 40–50 different versions of my resume

### Why go through all that effort?

Because it worked.

I started my job search with AngelList, LinkedIn Easy Apply, and other low yield tactics. I figured I would need to blast out lots of applications but I would eventually get a response.

100 applications later, complete silence.

![ryan reynolds eye roll](https://media.giphy.com/media/54PaD9dWT0go/giphy.gif)

I learned later that those job aggregators tend to spam companies to the point that HR just ignores the applicants. Once I started applying directly to company career pages, emailing recruiters, and crafting unique resumes and cover letters, the interview requests can rolling in.

### Resume Tips

There are [plenty](https://www.amazon.com/Complete-Software-Developers-Career-Guide-ebook/dp/B073X6GNJ1) [of](https://medium.freecodecamp.org/how-to-write-a-great-resume-for-software-engineers-75d514dd8322) [resources](https://medium.freecodecamp.org/how-to-write-a-good-resume-in-2017-b8ea9dfdd3b9) on how to write a professional resume. While my resume still needs work, here are 3 things that helped me:

* I added a “Summary” section at the top that summarizes my interests and experience in 2–3 sentences. It is both helpful to recruiters, because they can quickly skim it, and highly customizable.

* I emphasized my personal projects. I mixed-and-matched them depending on the company I was applying to. Hosting them on Heroku was a big plus.

* I curated my “Skills” section to each job description. I omitted front-end technologies for back-end positions and vice-versa. I wanted to show my potential employer that I was the perfect person for the role, down to the skills and technologies I displayed.

### Cover Letter Tips

Cover letters are tricky and I still have a lot to learn about them. The best advice I received was to create a [cover letter template](https://docs.google.com/document/d/1Rv9K4JHSjy0TaHUnKmD4IIVh1sUI5sIXYSRQyYN0GuM/edit?usp=sharing).

Custom assets take time and energy but can significantly increase the chance of receiving phone screens. The majority of my applications did not come endorsed with a referral. My CV and cover letter were my main selling points.

While many people say the cover letters are dead, based on my response rate, I can only assume the recruiters appreciated the extra effort.

### A quick note on when to apply

![apply before 10am](https://media.giphy.com/media/3ohc195qzItZnSfi80/giphy.gif)

I reserved Monday — Wednesday for sending applications. Those are the most popular days for job postings and talent searching.

Applying to fresh listings was the best way to get my application in front of a recruiter or hiring manager.

[The chance of getting a response decreases as the week goes on. Weekends are the worst by far.](https://careers.workopolis.com/advice/the-best-and-worst-days-to-apply-for-a-job/)

## 6. Reach out to fellow engineers

![get coffee with people](https://media.giphy.com/media/3oD3YQ350ESVrAFLH2/giphy.gif)

The idea of building a network from scratch in a new city may cause others to panic, but it excited me.

I love to meet new people.

While I’m sure elaborate networking strategies exist, I kept mine simple.

I found engineers at companies in my Tier 1 list and sent “Connect” requests through LinkedIn. If they went to the same college as me, all the better.

I included a note saying I was new to the city, had recently finished a project, and wanted to get more involved in the community.

Short and sweet.

Engineers are much more open to grabbing coffee with strangers than one might think. I was able to meet engineers from DigitalOcean, Spotify, Datadog, and others.

I even got to eat lunch in the Google cafeteria. Check that one off the bucket list!

### “But I hate networking!”

Many people do not like networking because they feel it is dishonest and/or “salesy”.

It doesn’t have to be that way.

I didn’t go to these hangouts seeking something in return. Many meetings didn’t result in a referral, and that was perfectly fine.

I was genuinely eager to involve myself in the local dev community and talk with other engineers. I asked them about their backgrounds, current projects, and interests outside of programming.

I continue to reach out even now that I am employed. Everyone has a unique story and I enjoy hearing them.

If you have trouble meeting other developers, take some notes from Dale Carnegie.

Find engineers who have blogs, podcasts, or have spoken at conferences. Reach out and express a genuine interest in their work. Ask to pick their brain about a certain topic they have talked about that you find fascinating.

You may be surprised with the response.

## 7. STUDY

![anime studying gif](https://media.giphy.com/media/fhAwk4DnqNgw8/giphy.gif)

Slick cover letters and referrals were effective for getting my foot in the door. It was my technical chops that took me the rest of the way.

Since I did not major in computer science in college, my weakest areas were algorithms, data structures, and system design.

I made sure to change that.

### Algo/DS

To get a basic overview of algorithms and data structures, I read [*A Common Sense Guide to Algorithms and Data Structures](https://pragprog.com/book/jwdsal/a-common-sense-guide-to-data-structures-and-algorithms).*

To build on my baseline knowledge, I solved around 100 problems on [LeetCode](https://leetcode.com/). I made sure they covered the different topics I might face in a technical screen:

* Arrays/Strings

* Matrices

* Binary Trees

* Linked Lists

* Backtracking

* Dynamic programming

I wrote down my mental models for most of the algorithm problems I completed in a Google Spreadsheet that you can see [here](https://docs.google.com/spreadsheets/d/1VVqowDcoPq7IgmRDaQ_cp37XDZEcQUOLcrdp6dbJObk/edit?usp=sharing).

This helped me to better understand the solutions and patterns involved. It also served as a useful refresher before onsite interviews.

![Credit: pramp.com](https://cdn-images-1.medium.com/max/3200/1*MCK8fzyGBaW20IAb6MsNTQ.png)*Credit: pramp.com*

Alongside LeetCode, I also did over 30 [Pramp](https://www.pramp.com) interviews. If you’re not familiar with Pramp, it’s a “free online peer-2-peer platform for practicing technical interviews.”

You get to practice algorithm questions and your interview skills at the same time. I can’t recommend it enough.

I also bought some [whiteboard wall tape](https://www.amazon.com/Life-Party-Adhesive-Whiteboard-Calendar/dp/B01LWNFD90/ref=sr_1_1?ie=UTF8&qid=1522084651&sr=8-1&keywords=whiteboard+wall+tape) to practice for whiteboard interviews. It came in handy.

### System Design

System design interviews are the true test of whether someone has mastered the fundamentals. Don’t think you can walk in and half-ass them. Interviewers can detect BS.

Not only does system design help determine if you will get an offer, but how lucrative that offer will be.

Take it seriously.

Like many engineers, I didn’t have a lot firsthand experience designing large-scale production systems. To prepare, I studied from those who did.

The best resource I found was [Grokking the System Design Interview](https://www.educative.io/collection/5668639101419520/5649050225344512). It has many detailed case studies that are easy to follow and cover common scenarios. The $80 price tag is well worth it.

There are plenty of free resources as well:

* YouTube

* [Gainlo Blog](http://blog.gainlo.co/)

* [High Scalability Blog](http://highscalability.com/)

* [Software Engineering Daily Podcast](https://softwareengineeringdaily.com/category/podcast/)

I also learned a lot from case studies written by previous Launch School Capstone graduates. The topics they cover are common topics in interviews:

* [LRU Caches](https://corvostore.github.io/)

* [Word search using Tries](https://prefixy.github.io/)

* [Background job processors](https://workerholic.github.io/)

* [Distributed hash tables and decentralized systems](https://xorro-p2p.github.io/)

### Do not learn new technologies

Some people may fight me on this, but you shouldn’t spend what limited time you have learning new languages or frameworks.

This is the time to **hone** what you already know.

Treat your upcoming interviews like a music tour. Does a musician prepare for an upcoming performance by learning new songs?

**Hell no!**

They dedicate their time to fine-tuning their repertoire and making sure every note is perfect.

That is what you must do.

A great tech company won’t care which languages you know. They will trust you can learn whatever technology you need on the job. Spend your time sharpening the tools you have.

## 8. Leverage job offers

This was the most beneficial step in my job hunt and the most difficult.

It took around 5.5 weeks to get my first job offer. The next 6 came in the following 2.5 weeks.

How?

**Leverage and timing.**

My first offer opened many doors. It not only put me in a better negotiating position with other companies, it made the entire process speed up 10 fold.

![quiksilver running gif](https://media.giphy.com/media/3oriNYQX2lC6dfW2Ji/giphy.gif)

I let all the other companies know that another offer was on the table. I asked, if they were still interested in me, to be streamlined through their process.

The next step was to email recruiters at companies where I had applied but hadn’t received a response. I let them know I was still interested but had a standing offer. If they thought I was a good fit, I would need to be put on the fast track.

This is where LinkedIn inMail comes in handy. Not every recruiter checks their inMail, so I also used [Clearbit](https://chrome.google.com/webstore/detail/clearbit-connect-supercha/pmnhcgfcafcnkbengdcanjablaabjplo?hl=en) for direct emails.

From a recruiter’s perspective, I was a desirable candidate. Another company had vetted me and had confirmed that I knew my stuff. I also proved my passion for the recruiter’s company by placing my other offers on hold.

Recruiters love passionate candidates.

Most places can take anywhere from 3 weeks to a couple months to interview a candidate.

With an offer in hand, the turnaround can be as short as a week.

Even if your first offer is from your dream company, it’s worth delaying your acceptance to improve your negotiation position. They may not like this, but it’s not up to them.

This is your career and your future. Do what’s best for **you**.

![you got this](https://media.giphy.com/media/11F0d3IVhQbreE/giphy.gif)

Thank you for reading this long-winded essay!

I know that applying to jobs is a difficult process. My hope is that this information helps non-traditional candidates leverage their talents and teach them to how to sell their skills.

Best of luck to all of you job seekers. If you have any questions or concerns, feel free to reach out in the comments below. I will answer as best I can.

Now go off and start building some badass projects! I look forward to seeing them soon at a Meetup near me.