What does it take to land your first job as a software developer? Recruiters are looking for someone who knows how to build code, test and deploy it, with an understanding of the software development life cycle.
The strongest software developer candidates — especially for startup jobs — are full-stack engineers (front-end UI and backend infrastructure/cloud service architecture), but it’s not necessary for every role.
We conducted a series of in-depth interviews with hiring managers as we built our curriculum for the Software Engineering Career Track to understand the most in-demand skills and attributes companies look for. Here are some of those findings.
Related: What Does a Software Engineer Do?
1. Learn all of the technical skills for a software developer job
What skills do I need to have?
You must be comfortable picking up new technologies, including programming languages, tools and platforms. If you have experience with production, that’s a major plus. Often, new grads without prior software development experience have never written production-ready code.
Experience with production makes a big difference because it consists of “not just building something and getting it working, but deploying it to production, monitoring it, understanding where things are going to break, things that might only work with a small user base and not a large one,” one chief technology officer told us.
What programming languages should I know?
- Node (front-end)
- MongoDB for storing data
- Experience with a relational database like MySQL
- Typescript (a nice-to-have but not essential)
How can I prove to a hiring manager that I have these skills?
First and foremost, you should be able to explain your work process as a software developer. It’s not enough to say you can write SQL. Can you also explain how to use an IDE or text editor? You’ll be asked to talk through projects you’ve worked on, whether in class, a boot camp or a passion project. When you present your project, the hiring manager should get a sense of how you approach problems, pick particular tools and why.
What types of software engineer jobs should I apply for as a new grad?
Hiring managers told us that smaller companies or startups tend to hire experienced software engineers because they need people with the skills to make an impact right away. This is because even senior members of the team are still individual contributors (as opposed to being in a solely leadership-focused role) so they may not have the bandwidth to mentor a junior engineer.
Larger companies have more formalized processes for training, mentoring and promoting a junior software developer because they have a more mature product and larger teams.
If you have a lot of hands-on experience, whether in a previous role or passion project outside of classwork, you stand a greater chance of being hired at a startup.
2. Understand the hiring process for a software developer
The standard hiring process generally consists of the following:
- Resume screen
- Phone screen (non-technical interview conducted by HR to assess culture fit)
- Technical phone screen (technical interview typically consisting of quiz-style questions and/or questions about your work processes and prior experience)
- Remote phone coding task or offline coding challenge (usually a timed test. Some companies will compensate you for your time)
- Onsite interview (may involve some whiteboard coding)
Here are some other less common screening procedures companies may require:
- An in-person coding exercise (you perform a hands-on task for an hour)
- System design interview in a simulated work context with another engineer where you hypothetically build something and discuss how to approach a problem
- Behavioral-focused interview specifically on team values/culture fit
- A presentation where you’re asked to show a project from class, a coding bootcamp, previous job/internship or a passion project to assess your skill level and problem-solving approach
- A live coding challenge where the candidate shares their screen with the interviewer, who observes their work
3. Differentiate yourself as a candidate software developer
- You’re self-motivated
The strongest candidates are active on GitHub, contribute regularly to open-source projects, participate in hackathons, take online courses and display select passion projects on their portfolio that they can explain in depth. Maybe you run a coding blog or give out advice on Reddit’s r/learnprogramming — whatever it is, you show a voracious appetite for self-improvement and immersing yourself in the coding community.
- You’re not afraid to Google things
Despite the taboo surrounding Googling — in any profession, not just software engineering — even the best coders can’t memorize everything. Admitting that you Google things shows you are comfortable with it and you’re good at searching for the information you need quickly.
- You list your most cutting-edge skills at the top of your resume
Each tech company has a prevailing tech stack consisting of their most in-demand programming languages. At Google, for instance, it’s Angular. Bay Area tech startups are hungry for candidates proficient in React and MongoDB. Meanwhile, Typescript is growing in popularity across the board. Tailor the way you list your skills to the role you’re applying for to maximize your chances of your resume getting noticed.
- You understand the use cases for different tools and programming languages
- You’re a good communicator who works well on a team
The biggest challenge of working as a software developer — especially on a mature product — is that every line of code you write has a “downstream effect.” Say you’re building a new feature, any changes you make to the source code could cause other features to break or conflict with another feature that’s being introduced concurrently.
Things break all the time — and sometimes the code you write never goes into production — so you have to be prepared to cooperate with your teammates to reach a solution that works for everyone.
“Teams are built on trust,” one head of engineering told us. “And if I don’t get an early indicator that you’re willing to be open and honest, it will take a tremendous amount of work to build trust with you.”
- You take ownership of your work and you’re accountable when things go wrong
Hiring managers will most likely probe for this with questions like: “Tell me about a time you missed a deadline,” or “Tell me about a time when you were responsible for delivering something and the quality wasn’t there.” A prospective employer wants to know that they can count on you to own a problem when things go wrong, rather than assigning blame or dodging responsibility.
“If someone’s vague, won’t give a specific example or tries to spin it into a positive story, then I don’t believe them,” one head of engineering told us.
- You’re self-aware and you know how to use your strengths
Even if you lack work experience as a software developer, you may have transferable skills from previous non-software roles that make you a promising candidate. Most companies are trying to expand their diversity profile, and many are hiring job seekers with less linear backgrounds. This is especially great news if you’re in the midst of a career switch!
4. Be aware of the areas where software developer candidates fall short
In the application/on their resume:
- Candidates just list technologies or programming languages on their resume without giving a nuanced explanation of how they’ve used it
- Basic mistakes, such as miscategorizing a programming language as a markup language
- Lack of support engineering skills (eg: using a debugger or text editor, monitoring logins and other analytics for an application)
- Overemphasis on one or two languages. Candidates must be able to show that they can pick up new tools quickly, even if they don’t need to be an expert in each one
- Their resume is homogenous/too similar to other new grads. Most candidates don’t play up their interests outside of engineering, and since they lack work experience, most junior developer resumes look very similar. Outside interests are increasingly important in a job market where hiring managers emphasize a wider diversity profile. For instance, the CTO at a top sports journalism site told us that an engineer who’s also interested in sports and media would be a “major plus.”
During the interview process:
- Passion projects are too general or similar to what other fresh grads have done. Not only does it become impossible to differentiate candidates, but hiring managers may take this as a lack of initiative or critical thinking skills.
- Lack of self-awareness, so they may overestimate their skill level or present themselves in an inauthentic way because they want to land the role so badly.
- Lack of confidence and basic interviewing skills. New grads often assume that the software engineering hiring process is a purely technical one, with little to no consideration for soft skills. Conversely, qualities like communication and trust are the number one traits hiring managers look for starting from the phone screen. Many junior developers also let interview nerves get in the way of using what they’ve learned. If you get stuck, speak up and explain why. “I’m not concerned if [a candidate] is stuck if they tell me they’re stuck for a good reason,” said one lead software engineer.
- Candidates get excited about working with specific technologies instead of trying to find a role based on fit or their values. This could lead to the candidate being rejected during the interview process due to a lack of culture fit or eventual job dissatisfaction if hired
- Their problem-solving approach is too narrow. Interviewers will often give candidates real, open-ended problems to see how they think about it. More senior candidates will start at a higher level and talk about they system, while newer ones will dive into something very specific that they’ve done before without thinking about the bigger picture.