In an ideal world, you wouldn’t need a resume. You’d have a recruiter reach out to you along the lines of: “Your ex-colleague Bob spoke extremely highly of your time working at Stack Overflow. Our company is growing, and we’d love to talk with you. Do you have time to chat with a few members of the team next Wednesday?”
However, in reality, you will, at some point, find yourself applying at a company where Bob is not there to vouch for you, so you cannot skip through the process of being evaluated before the team will talk to you.
I’ve been a hiring manager for numerous companies and typically go through hundreds of resumes per year. I’ve also researched the topic of writing a developer resume that represents you well while writing the book The Tech Resume Inside Out: What a Good Developer Resume Looks Like. For the book, I ended up talking with two dozen recruiters and hiring managers at the likes of Google, Facebook, Microsoft, Transferwise, and other well-known companies.
Based on that experience, here are the seven pieces of advice that I give to engineers on writing a resume that represents you as fairly as possible.
Know what the goal of your resume is
Many engineers assume their resume should just contain highlights of their employment history. They’ve seen other people’s LinkedIn profiles and seen a few resumes. Most of these look like this, and companies must be interested in what you did. Right?
The goal of your resume is to sell you enough to get a recruiter phone call and continue the process. This is a very different goal from telling your entire professional story. Your goal should be to showcase to the company why you’re a good fit for the position they are recruiting for.
This means highlighting parts of your resume that show you being a great match for a specific position. Tuning it to fit the opening might be as simple as changing the order of things or adding specific details that only this position might find interesting. When you have lots of experience, this might mean cutting less relevant parts short and leaving irrelevant things off.
Use an easy-to-scan template
Here’s how a typical hiring manager and recruiter will read your resume:
1. Quick scan. They’ll do a short scan of a few seconds, gathering all key information. Your location, years of experience, languages and technologies, position names, company names, and anything else that stands out.
2. Second read. Assuming this first scan matches what they’re looking for, they’ll re-read your resume, top to bottom, reading the content you wrote. However, if, in the quick scan, it didn’t seem that you have what the position needs, there will be no second read.
You should choose a resume format that helps highlight the key information the recruiter or hiring manager looks for in that first scan. A good resume template follows these principles:
- Single column, allowing for easy top-to-bottom reading.
- Dates, position name, and company name are all separated. Dates are easy to scan, top-to-bottom.
- Your location and languages/technologies are easy to find.
Why bother spending the time finding a good template? The less effort it is for a recruiter to get the key information in the quick scan, the more time they’ll have to look at other parts of your resume. Here’s a resume template you could use—I created this template for the book, and it satisfies all the above requirements. Of course, there are many others to choose from, and you can also design your own.
Structure: relevant things first
The recruiter or hiring manager will read your resume top to bottom. You’ll want the most relevant parts to be at the top and less relevant ones towards the bottom. When you have lots of experience, it’s fine to go beyond just one page: just make sure that everything relevant is still on the first page.
When you’re a new grad or bootcamp grad, hiring managers usually care about experience in this order:
- Real-world experience, if you have any, including internships.
- Contribution to real-world projects: e.g., open-source projects.
- Details about your education.
- Projects that stand out for a reason or another. Things that go beyond “Hello, world."
- Tutoring and leadership positions in student groups.
When you have work experience, the way a recruiter reads your resume changes. Here is what will be most relevant:
- Work experience: current company and title.
- Languages and technologies that you are proficient with.
- Education details: these become less relevant over time. With a few years’ experience, they can still be good indicators. After multiple jobs or decades, consider moving this lower down.
- Extracurricular things like patents, publications, talks, and standout open source contributions.
- Certifications. This one is interesting. Companies hiring for generalists don’t usually care, especially if it’s not an industry-wide recognized certification. Agencies and more “traditional” companies could give it some weight, though.
- Personal projects. The more experience you have, the less important these become. Standout contributions, especially to popular projects, could be an exception. Still, they rarely weigh more than your work experience.
- Interests: these can be a starting point for the conversation on an onsite interview, and they make your resume more personal.
With lots of work experience, you start to stand out from the crowd of applicants. At the same time, you’ll probably have more experience than would fit on a page or two. In this case, a one-page resume is no longer a must-have, but you’ll want to be more concise in your earlier experience: especially when that experience is not as relevant. Here’s the order you could consider structuring your resume:
- A summary section, briefly describing the standout part of your experience and what the company would get with you. Tailor this one for the job. With more experience, recruiters and hiring managers are far more likely to pay attention to this.
- Work experience: cut down on the older ones. Aim to tell a story of your career progression. You might even decide to drop old positions when they are not supporting your story.
- Education: a brief mention, at the end of your resume. You can safely remove all details—such as GPA, extracurricular activities—except for the fact of any degree you might have.
It can feel painful to cut away some of your experience from your resume. But keep in mind your goal: it’s to have that recruiter call. I collaborated with a systems administrator turned developer who had 20 years of experience. Ten years ago, they went back to college to get a computer science degree. Their original resume had all 20 years of experience listed: non-CS degree, ten years working as a systems admin, CS degree, ten years as a developer. The first ten years did not add much professionally to their resume: they ended up removing this, but still keeping their first, non-CS degree there. The new resume was cleaner, and they saw more callbacks with it.
While you don’t need to remove old positions, you should aim to reduce detail mentions significantly, except if they would add something very valuable for your current job application.
Keep regional and cultural differences in mind as you craft your resume. For example, in most of the US, a one-page resume is the norm for developers with less than a few years’ experience. Even more senior people aim to fit everything important on the first page. In most of Europe, resumes of two pages are common, and some hiring managers actually prefer to read longer resumes for senior people. Whatever the length, make sure you communicate the relevant parts first. Use the space wisely, elaborating more on your experiences and results that relate to the position you are applying for.
Languages and technologies: be crisp on what you know
Positions hiring for generalist software engineers will want to see some evidence that you have worked with a few technologies. For these places, it’s a good sign if you’ve mastered multiple technologies. Positions hiring for specific technologies will want to confirm that you did meaningful work with those technologies.
There are a few ways you could make it clear what languages and technologies you are proficient with:
1. Have a separate section for “languages and technologies” on the first page of your resume.
In this section, list out areas you are proficient with. Don’t bother specifying your expertise level: the hiring manager will assume you know these well enough if you listed them. An example of this approach can look like this:
2. Call out languages and technologies that you used as part of your work experience.
An alternative to the previous approach is to mention the tools you used in each position. This gives more context on when you used these technologies or frameworks and what problems you solved using them. You could just list these out separately at the end of each position like this:
However, I recommend “weaving in” the languages and technologies to the description itself. This both reads better, and you can give even more context:
Standing out: results, impact, and numbers
One thing I wish more resumes had is specifics. The majority of CVs I’ve read tend to list responsibilities, what work was assigned, or have a hand-wavy explanation of the work. Here’s an example of a resume snippet that recruiters and hiring managers see all too commonly:
While the person writing these details probably felt they were showcasing the work they were doing—the hiring manager gets little to no context on the specifics of the work. To stand out, be specific. To be specific, follow this approach:
- Use numbers and quantify whatever you can. Numbers can be the number of users, service load numbers, number of customer support tickets you proactively resolved, and many others.
- Use active language that shows what you have done and how you have been proactive. For example, instead of stating “Fixing various bugs that improve the user experience”, you could use active language and more specifics and write “Reduced user reported defects by 50% after I identified and fixed root causes of the four most common user reports.” The first version reads more passive: “fixing” might be seen as “I was told to be fixing”. In the second version, you make it clear what it was that you did and the results you achieved.
- Mention specific languages and technologies where they make sense. This gives more context and makes your resume details more interesting as well.
Tailor your resume to the position
Having a “master” resume and tailoring it for every position you apply for is a great strategy. The tailoring doesn’t have to be drastic. However, if you are applying for a company where the job listing lists the stack as React and Node—and you have experience with these, among other languages—moving these up front could be a small change with a big impact. Similarly, if you’ve done work similar to what the position is asking for, having these bullet points listed first are all good ways to grab the attention of the person reading the resume earlier.
One last thing I need to call out, as developers seeking jobs bring it up: the application tracking systems (ATS), and robots “rejecting” your resume. This is false. Your resume will be read by a human. At tech companies, ATSes do not “reject” resumes, and “robot rejection” does not exist in tech. Be wary of any resource that claims this is true: they are probably using the tactic to create fear, uncertainty, and doubt as an incentive for you to buy their service. I’m saying this both as a hiring manager who has worked with ATSes and as an author who interviewed recruiters at all major tech companies. I asked them about robot rejections; they all confirmed that they have not seen or heard of such a practice.
Things that will help you beyond the resume
Applying for a job does not end with having a good resume. A few things can greatly help your job search: referrals, cover letters, LinkedIn, GitHub, and Stack Overflow.
Employee referrals are the best way to increase your chances of hearing back from a company. If you have a strong referral, much of the above becomes less relevant. How do you get a referral? You ask. Ask around in your network to see who is hiring. Ask on public forums where tech professionals gather like Twitter or LinkedIn—potentially even Blind. You can try and reach out for a cold referral: but if you do, add context on why you think you are a great fit for a job and offer an easy way out for the person to not refer you if they do not feel comfortable doing so.
Cover letters are a coin toss. For larger companies, these places usually either don’t ask for one, or don’t pay much attention to it. At smaller firms and startups, where hiring managers are likely to read resumes and cover letters, it’s a better investment to spend time on this. Keep it short, sweet, and relevant. Don’t repeat your resume: add additional details that make your case stronger as to why you are a good fit for the position you are applying to.
Even if you are not looking for a job today, invest in growing your professional network. The larger your network, the easier you can get referrals from people who know the professional “you." To grow your network, build genuine relationships with others, help people, and make yourself visible. You don’t have to do this on social media: you can start right now at your workplace, within and outside your team.
LinkedIn, GitHub, and Stack Overflow are all sites where having an up-to-date profile will greatly help your job search. Keep your LinkedIn up to date: it’s a good idea to refresh it as you write your resume. For GitHub, consider creating a GitHub README to present yourself and your key projects more effectively. Make sure projects you mention in your resume or those that you pin to your GitHub profile also have READMEs that share what the project is about. On Stack Overflow, tailor your Developer Story to make it easy for recruiters and hiring managers to find you with relevant opportunities.
For more advice, tips from recruiters in tech companies, and real-world “before” and “after” resume examples that worked, you can always grab The Tech Resume Inside Out. The book is complimentary for devs currently out of a job.
Good luck with writing your resume!