by Stella Chung

7 key steps to getting your first software engineering job

I graduated from a web development bootcamp in 2017. I had no experience working as a software engineer or in the tech industry. I started applying for jobs in October and began working full-time as a Front End Engineer in December.

The job hunting process was a short but stressful 5 weeks for me. There were things that I wish I had known, and other things that paid off way more than I expected. To save you a lot of time and stress, I’ve distilled what I’ve learned into seven key things I did to secure my first job.

1. Make a portfolio of a few standout projects

I’ve reviewed the resumes of other bootcamp grads where they only listed one or two partially completed projects. They don’t have to be perfect (my glitchy Phaser.js game isn’t), but they should show the progress you’ve made as a software engineer.

This means if you say you know React, you should have at least one React app in your portfolio. If you don’t have work experience as a developer, a portfolio of at least three projects is critical. These also shouldn’t be tutorials — get creative! The more fun the project is to you, the more work you’ll put into it. And the more passionate you’ll sound when you describe it to your interviewer. (Bonus points if you make your own portfolio website too!).

You should also be ready to discuss your project’s strengths and weaknesses with an interviewer. Several of my interviewers pulled up my Github and asked me to walk through my code with them. I definitely fumbled the first time this happened, since it had been weeks since I had looked at the code! Preparation is key.

Afterwards, I made sure I could navigate around my projects on Github and could talk about one tough challenge I solved in each project.

On the topic of Git, all my interviewers were impressed that I had experience using Git for version control and collaboration. I recommend familiarizing yourself with Git + Github. If you’ve never used Git for team collaboration, I would definitely recommend making your first PR to an open-source project. Good Git habits also go a long way. One of my interviewers just stepped through my commit history to see how I “think,” and I was very glad it was a project with good commit messages.

2. Prepare for the technical interview

Unsplash

There are lots of problems with the way tech interviews are done, but the fact is that for many companies white-boarding is here to stay. There are tons of great resources out there to practice this (Pramp, InterviewCake, and of course Cracking the Coding Interview to name a few).

I have to confess that I struggle with this a LOT — my mind tends to go blank under pressure. But the most important thing is that you practice thinking out loud. Complete awkward silence during an interview is the last thing you want, and the more you think out loud, the more the interviewer will know how far you’ve gotten (and be more able to help you, if they’re so inclined!).

I also just bought a whiteboard and dry erase marker so that I got used to working without a code editor (trust me, it’s jarring going from coding with the aid of a linter to a blank wall!).

Not all companies will ask you to whiteboard — but almost all will ask you some basic technical questions, which I call “trivia” for lack of a better term. For the positions I applied for, these questions usually focused on HTML, CSS, JavaScript, and web performance. There are also lots of online resources out there with lists of common questions — I just made a bunch of flashcards and practiced!

There are few topics with which any front-end or full-stack web developer should be comfortable. These include the event loop in JS, promises and async/await, the CSS box-model, CSS specificity weights, and ways to speed up the loading times of a web page. I’ve been asked questions about all of these more than once.

3. Define what kind of company or role you want

Unsplash

In the beginning of my job search, I made the mistake of casting a very broad net, with a “beggars-can’t-be-choosers” mindset. But no matter where you land, you’re going to be devoting the majority of your time to work. What’s the point if you can barely muster any excitement about going to the office, or worse, dread it?

Making a list of priorities for your new job will help you a TON in staying in charge of the job-hunt, instead of letting the job-hunt run you. My top priorities were:

  • Opportunities to solve challenging problems that interest me
  • Good work/life balance
  • Opportunities to work with a modern tech stack

These priorities led me to focus on jobs at companies where there was a healthy work culture (no working nights and weekends). I also wanted to used modern frameworks (sorry jQuery). They also had to have interesting missions that I could get behind (no thank you soulless corporations).

Also, remember that interviews are not just a time for the company to evaluate you. Often you’ll be able to find warning signs if the company is toxic or not a good fit. I encountered one company that issued a long coding challenge before even talking with candidates. Another company was working on a fascinating product, but my interviewers bristled when I brought up work/life balance. I could go on and on about all the warning signs I experienced.

Always, always ask questions during interviews. It shows that you are serious and interested, but can also help you detect these warning signs.

4. Stay organized and track everything

You have some killer projects under your belt, prepped for the technical interview, and have a target company in mind. Now it’s time to start applying for jobs. But holy moly, keeping track of dozens of applications can be a nightmare! I used to keep applications in folders on my computer, but it got unwieldy and cumbersome.

I ended up using Airtable instead to track all my applications. I used it to track the job listings, cover letters, any email or written communications, salary ranges, contacts, meeting logs, and more.

Here is a link to the template I used. (For all non-spreadsheet nerds out there, Airtable is like the love child of an Excel spreadsheet and a relational database.) One thing I love about Airtable is the ability to link between records in different tables. This allowed me to keep a thorough list of company contacts and individuals on the “People” page, and companies on another.

But why bother staying this organized?? Besides satisfying my love of spreadsheets, it makes it a lot easier to pinpoint strengths and weaknesses in your job search strategy.

For example, here is a breakdown of the state of my job applications after I had gotten the job:

I sent 40 job applications in total. ‘Declined’ means that I declined to continue interviewing. ‘Rejections’ means that the company rejected me as a candidate.

Out of the 40 applications I sent, I received no response from ~50%, and job offers from 20%. Not bad considering the shot-gun approach I had for sending out applications. But, still not as high as I would have liked.

But if we take a look at the jobs that I had an opportunity to interview for:

I interviewed for 16 positions. I got 8 offers, declined to continue interviewing for 2 positions, got rejected from 1 company. I was between interviews for 5 companies when I accepted another job.

Things look a lot better. I have a 50% offer rate. For a quarter of the jobs I interviewed for, I was still between rounds of interviews when I accepted my job offer. So they also might have turned into offers if I continued interviewing with them. I was only rejected by one company after interviewing (and that was likely because I laughed when I found out their average workweek was 60+ hours — a rather awkward interview!).

Thanks to my meticulous spreadsheet, I realized that as soon as I talked to an actual person at the company, my odds of getting an offer went way up. My interview game was mostly on-point, but my ability to get that interview was not so great. If my job search had lasted a few more months, I would have definitely switched up my strategy. I would have spent less time writing a ton of cover letters and applications, and more time networking and cultivating referrals.

That brings us to my next few points…

5. Write a meaningful resume and cover letter

Instead of writing lots of low-quality applications, spend more time writing highly-tailored applications. After all, a resume or cover letter with typos or grammatical errors will get rejected immediately. Resumes that are over one page, more often than not, get rejected immediately.

Generic cover letters might not get rejected immediately. However, in a sea of job applications, they really don’t do anything for you. Take a few minutes to visit the company website, and come up with a genuine reason why you’d like to work for that specific company. If you can’t, well, maybe that’s a sign it’s not the right company for you.

Either way, you should tailor your responses as much as possible. Avoid copying and pasting any templates you find online (hiring managers will Google it, I promise).

I could write a whole article on resumes alone. But in general, you should highlight the most relevant technical aspects of your previous jobs. For example, I used to work in nonprofit development and fundraising — nothing about the job title screams “web developer.” HOWEVER, I made sure to highlight my work on migrating data and managing fundraising software. In addition, I placed my top three most relevant portfolio projects at the top of my resume. Thus, my technical ability was demonstrated BEFORE my work history.

6. Network!

How I feel at networking events.

So, I am TERRIBLE at networking. I’m a shy introvert and find it hard to mingle in large-group settings. But even for me, it was possible. I dragged myself to local meetups, and sometimes I even had fun chatting with other techies.

The vast majority of the meetups didn’t result in any job leads, honestly, but the handful that did really paid off. In fact, the job that I have now is one that I learned about through someone I met at a meetup!

So I really, really encourage you to put yourself out there and attend meetups, lectures, and Slack groups for tech professionals. Even connecting with people/companies online via social media is helpful. The best jobs are often never even posted, so it’s important to try and build your professional network even as a newcomer to the industry.

And remember — this is a mutually beneficial exchange! Many companies offer referral bonuses to employees, so it is often in their interest to lend a helping hand too.

7. Avoid settling for less, and negotiate, negotiate, negotiate

Unsplash

At nearly every position I interviewed for, at some point, I was asked what my target salary was. This was frustrating, as in general, the first one to name a number is in a weaker position for negotiations. At the same time, you don’t want to waste your time interviewing at a company that falls far below your desired salary.

After fumbling with this question a few times, I finally got my act together and conducted some salary research. I looked up salary estimates for developers with my level of experience in my city on websites like Payscale, as well as a salary survey from my local tech meetup. At larger companies, you can also look up salaries on Glassdoor, so you can be surer that your range more or less aligns with theirs.

So whenever I was asked what my salary requirements were, I said: “My target salary range is $X to $X. However, money is not the most important thing. I’m really looking for a company where I can continue to grow and contribute to the team.” This was basically my way of stating my target salary in the politest way I knew how. I stated a range to express my flexibility but made sure that the bottom of the range was something that I would be 100% happy with.

And once you do get an offer, never be afraid to negotiate. It never ever hurts to ask! You can also negotiate on other things besides salary. These can include vacation days, delaying your start-date, and sign-on bonuses, which can be more flexible than base-pay.

Conclusion

Thank you to all of you who made it this far! I hope that you found this helpful in your job search. My last piece of advice is this: don’t worry about just getting a job. There is a ton of demand out there for software engineers, even outside of the major tech hubs. If you’ve studied and prepared, you WILL be able to get a job.

Focus on getting the right job — a role that involves working in technologies that you love, at a company that treats its employees well. It might not always be possible to get both at your first tech job, but once you get your foot in the door, pursuing the next opportunity will get a lot easier. It only gets better from here.

Be kind to yourself, and take care. Good luck!

P.S. If you’d like to hear a bit more about my personal interview experiences, as well as where I finally ended up, check out my article Interviewing as a Software Engineer at Niche.