⭐️ Note: The original edition of this tutorial can be found on my site here!
The software engineering space is booming right now🚀 With the pandemic increasing demand for digital services across a spectrum of industries, the appeal of becoming a developer has increased profoundly. And market analyses only further optimism — for example, the U.S. Bureau of Labor Statistics projects software engineering job growth to reach 22% over the next decade. That's massive! In summary, this is a great time to break into the software development space.
As someone looking to get a job in this space, it’s more important now than ever that you present yourself as not only competent, but uniquely suited for roles to which you apply. But hunting for your first developer job is no easy feat, and it can be especially overwhelming when it comes down to figuring out where to start. 🤷♀️🤷♂️
As a Director and Senior Software Engineer who has sat on both sides of the interview table, here are the 7 tips I wish someone had given me when I was embarking on the hunt for my first job as a developer...
This is probably pretty obvious to most, but if you are going to apply to a position that works within, say, the MERN stack (Mongo, Express, React, Node), you should be familiar with each element in that stack. There may be few exceptions where a company is looking to switch to some novel technology or framework and thus is flexible on the incoming engineers' stacks, but more often than not, you should already be able to navigate and effectively use whatever tech the job is set to use on a day-to-day basis.
One important note here is that "comfortable" can mean different things to different people. In this context, "comfortable" means being able to do the basic things across the various elements of the stack. Think...
- Writing out routes on an Express + Node server
- Building out functional and class components in React
- Implementing CRUD operations with Node + Mongo
- Creating authentication middleware within Express
The idea is: you want to be prepared to jump into whatever job you land and contribute quickly. Therefore, you should know your way around your tech stack as it'll likely be the stack you're hired to work within.
⭐️ Note: Try to include a standard unit testing framework in your stack (like Jest or Mocha). This is often overlooked when evaluating devs at small to midsize software companies. The frameworks are easy and very important when working in a large and quickly changing code base.
This is also a pretty intuitive point. Most technical interviewers are going to ask you to dive into a project, be it personal or professional. When you do this, your goal should be to demonstrate to them that you:
- Are familiar with all (or at least most) of the elements in the interviewer's company stack
- Are thoughtful and meticulous when it comes to planning
- Are competent at implementation
- Can solve problems effectively as they appear
- Are passionate about software development
It's especially important that, with whatever project you pick, you are able to discuss at least one significant challenge that came up which you were able to overcome. This problem should be a topic you can talk about in depth. It may be helpful to frame this in the following context:
- What was the problem?
- How did you approach solving it?
- What tradeoffs existed with your solution, if any?
- Was your solution successful?
When determining which project you plan to show off, definitely lean toward projects you genuinely enjoyed — your interest and passion for the work will likely come across in the interview (that's a good thing).
You will likely receive at least one stage of technical evaluation, so be prepared! Here are some great resources for practicing some of the common technical interview questions:
- 31 Software Engineering Interview Questions With Answers
- 29 Software Engineer Interview Questions (With Example Answers)
- Tech Interview Handbook
- System Design Primer
Practice with friends and family until you have these answers down. There are plenty more resources out there, so lean on Google to find more!
The big takeaway here is: come prepared to talk technical theory. Know those "must-know" interview questions (eg. "What is an array?"), but also be ready to answer questions you've never seen before. Software engineering is problem solving at its core, so make sure you're ready to flex your problem solving muscles 💪
4 | Assemble a neat resume, a portfolio on your own hosted website, and polish your resume, as well as your GitHub
For many interviewers, one’s resume, portfolio, LinkedIn, and GitHub go a long way in forming the initial impression of a candidate. Make sure each of these mediums are polished and squeaky clean. Don’t give reviewers a reason to cross you off the list of candidates before you get the chance to chat in-person. The following resources can help you ensure you leave a good impression on paper:
If you haven’t already, try to find a mentor software engineer who would be willing to give you a couple hours of their time to sit down with you on a video call and simulate a technical interview.
I was fortunate enough to know several developers when I got started in the software space. One of them, a good friend of mine, spent a couple hours one day just drilling me on technical questions using screen-share on a Google Hangout. This can be really useful, especially when it comes to getting the pre-interview jitters out of the way!
A mentor is also a great resource for feedback. Try asking them for input on your resume, portfolio, LinkedIn, and GitHub account — they might just spot an issue that can be a red flag for an interviewer 👀
Recruiting firms are a fantastic way to connect with businesses offering positions that are well aligned with your skill set and stack. There are many of them out there and each has a unique process for how they vet candidates and onboard them into their various candidate pools (typically organized by tech stack). You can connect with these firms in a few different ways.
- LinkedIn can be a quick and easy tool to get a dialogue started with recruiters. Just open up your
Profileon your LinkedIn and click the
Open tobutton and then select the
Finding a new joboption. This should let recruiters in your area know you are happy to chat. Then just stay on top of your LinkedIn messenger and wait for recruiter outreach to begin.
- Reach out directly. There are plenty of recruiting firms out there, many of whom are becoming more flexible geographically with remote work options increasing. Most of these have some kind of resume submission portal through which you can send a CV. I've worked with Motion Recruitment before, formerly "Workbridge Associates," in the greater Boston area and they were great 👍
When you begin chatting with recruiters, ensure you research their firm's reputation on their website and GlassDoor. Also, be sure to only consider firms that do not take a cut from your salary as a fee — there are plenty of them that earn a head hunter fee from the businesses posting the open positions, those are the ones you should try to work with.
Also, I'd recommend being open to allowing their firm rep that you work with negotiate on your behalf once you have possible job offerings in the pipeline. More often than not, these reps can increase your job offer as they are typically the liaisons between you and the client company. What's great is their interests are aligned with yours, so the more money you make, the more money they’ll make as well - everybody wins! 💰
Like anything worth doing, failure is a probability, especially across the first few interviews. Be ready to fail, and be ready to learn from your failures.
Interviewing is a skill like anything else, so long as you are genuinely prepared and are applying yourself, the more reps you get, the higher your chance of a successful outcome
Software Engineering is a fantastic field with tons of exciting opportunities, however, it’s not for everyone. It can be cognitively intensive and very fast moving, forcing you to learn always. If you’re not passionate about or compelled to build software, it’s probably not worth investing your time and effort searching for a job in the space. Only do it if you love it.
That's it! I hope these tips are helpful in your pursuit to lock down your first developer job. With dedication and persistence, any knowledgeable engineer should be able to find a position at a company to which they can effectively contribute. You can do it! 💪