How to craft the perfect programmer resume

adminguy's picture
Posted February 4th, 2015 by adminguy

If you are a hiring manager the following quote will seem familiar, but it may not if you are a programmer. But that's also the reason why I have written this article. To help you understand your own resume from the perspective of your customer - the hiring manager.

Programmer resumes may seem like something of a mundane topic, but after spending the last few weeks wading through resumes from software developers, it is clear to me that most developers need help with their resumes. -- Daniel Read (Editor and publisher of the developer.* web magazine)

It's not unusual for a single job posting to receive hundreds of candidate applications. Imagine your are the hiring manager of a software organization, hiring for the position of a mid level Python developer. The team needs a good Angular.js developer ASAP, and you have about 250 resumes to sift through. 

You can imagine that a person who does this this day in and day out will have developed some fairly good resume filtering skills. She is not going to give the benefit of doubt to any resume. She just doesn't have the time, not to mention the additional load of doing more phone interviews. She has to be super efficient, perhaps to the point of being even ruthless, at moving past the cruft and getting to the really good developers. When you are trying to get the attention of a busy person, you want to be able to stand out right away and you want to make sure that your resume is positively filtered at first glance. 
Let's see what this means. Assuming a job posting has received about 250 applications, the hiring manager is probably going to do about 15 - 20 telephonic interviews, for which she will reply back to, maybe, 30 - 40 candidates. Assuming that approximately 5% of the resumes received are outstanding, she has quickly (and with a huge sense of relief) selected about 12 potential candidates right away. If you did not make it to that list, then you will have to compete with the remaining 238 for about 18 - 28 slots. At this point it becomes a matter of chance whether you get a reply or not, and that's exactly what you want to avoid, especially if you are serious about that job.
What follows are some observations made by hiring managers and senior developers on what makes a resume stand out for them.
Cover Letter
A cover letter may not be relevant if you are filling in a web form to apply for a job, but if you are emailing the company, then the body of your email is your covering letter, and you want to make it good. Many people might argue that nobody reads cover letters anymore, and maybe they are right, but you still need one - because someone may. Think of it as opportunity 0.1 to stand out even before they have seen your resume. Here's where your personality can shine. Here's where you can show that you genuinely care enough about getting this job to write a few lines that are personalized specifically for it. 
A cover letter need not be a long essay. Call it 200 - 300 words. Anything more than that is too long for the hiring manager to read, and less than that is not really a cover letter. What you really want to convey in the cover letter is your personality, your ability to pay attention to details, and your suitability for the job. Here's a great blog post by Sharon Florentine on how to write a good cover letter.
About 7 - 10 years back, one page was thought to be the ideal length for a resume. Even people with several years experience tried to squeeze their resume into a single page. However, unless it's your first job, it's going to be very difficult to fit your accomplishments in a single page. I think the one page resume was almost a backlash against those kind of people (you know who I am talking about) who mercilessly tortured hiring managers with biographies instead of resumes. No hiring manager wants to read a seven page resume. So the single page resume became the gold standard for programmers who were decent enough to value other people's time. As important as it is to value people's time, especially in this age of information overload, you also want to make sure that you've conveyed all your skills and accomplishments in your resume. But it's going to be really hard to do that in one page. Most people now agree that two to four pages works out well for most cases. 
Sometimes you may have a hard time making your resume an appropriate length. Perhaps you aren't even able to get to the second page. In that case dig deeper into everything you have accomplished and ask yourself if you have covered all the important things you have done. On the other hand if your resume is becoming pot bellied and going well beyond four pages, then you need to cut the cruft. Ask yourself which information is most relevant for the hiring manager and remove everything else that might only have marginal value. Sometimes developers are tempted to squeeze a long resume into fewer pages by reducing the font size or eliminating white spaces. Don't do this! You might actually end up aggravating the person you want to impress. As Justin James mentions in this TechRepublic article:
Also, please use some whitespace, so I do not feel like I am drowning.
Focus on your skills and accomplishments
Not only do you want to avoid drowning the person reading your resume, you also want to throw them a rope by stressing on the information they care about the most. 
I have yet to see to see a resume which does not start with an objective section. Nothing wrong with it, but according to Daniel Read in 95% of resumes that have an "Objective" section, it adds no value whatsoever. This sentiment is also almost echoed by Justin James when he saysThe objective is a slightly different story; it is useful only if it informs the interviewer about something that the skills and experience does not.  Ditto for the summary. It is not needed and most managers don't care for it. So why do want to waste precious real estate on something no one really cares about? Remember, you want to throw the hiring manager a rope and not drown them.
What you do want to do is to start your resume with a strong personalized summary of skills. It's another great opportunity at personalization. Let's say you have skills in Java, Python, Ruby, Android, and Web Apps. Maybe you have worked with ten web frameworks, a few databases technologies and also have IDE skills (like being an Eclipse whiz). Anyone who has worked in the tech industry for a few years will have gathered a good set of diverse skills. But avoid the desire to represent them all equally. Focus on the job requirement. If the job is for a Python/Django developer - give a stronger representation to your Python and Django skills and let everything else take just one or two additional lines. And you probably don't even want to mention that you are an Eclipse whiz :) 
Many developers list their education in great detail, going all the way down to high school. This may be acceptable if it's your first job and you have more education than experience, but not otherwise. If you are applying for a senior developer position, skip everything but your highest educational qualification. Developer certifications on the other hand -- they're a different story altogether. Some people prefer to club them together with educational qualifications while others prefer to grant them a separate section. It's a matter of preference, though I am biased in favor of clubbing them in one section, especially since you will be listing only your highest degree. This article by makes an interesting suggestion about putting the logos of relevant certifications to make them stand out.
Past experience
Very often when describing past experience, developers prefer to focus on the responsibilities that were assigned to them, rather than their accomplishments. While responsibilities are important, what really matters to hiring managers are your accomplishments. If your current resume lists only responsibilities, you might want to consider revamping it to list accomplishments
So instead of simply writing:
worked as part of the UI redesign to a single page application
write what you accomplished:
  • Selected the Karma framework after doing a comprehensive review of the most widely adopted testing frameworks for angular.js
  • Created angular.js model objects and wrote test cases for them
  • Helped the team lead in designing the view architecture
Grammar and formatting
All word processors nowadays have spell check and many will even point out grammatical mistakes. There is absolutely no excuse for having either of them in your resume. No, seriously, a resume with typos or obvious grammatical mistakes shows blatant sloppiness and will put you on the wrong side of being noticed. A good way to eliminate grammatical errors is to get it proof read by someone who knows their grammar well. If that's not possible, then have it read by a professional editor. It's not as expensive as you think. You can get your resume proofread for $5 on, which is not a bad deal at all, considering it might take you a step closer towards getting your dream job, peace of mind and work satisfaction.
A last word about keeping it real
You have created a personalized cover letter, eliminated the "objective" section, created a skills section to highlight those skills that are most relevant to the job you are applying for, have focused on accomplished them, and have also proofread and polished everything. You are certain that you will get selected for the phone interview, so what can go wrong? Maybe nothing, but I have one last thing to say - you must also keep it real and keep it honest. 
Many people fudge their resumes. But please don't fudge your skills or add false experience to get selected. Not only do developers who do this get caught sooner or later, they also lend a bad rep to the entire programming community. This is really serious. Please don't join their ranks. We really need more honesty in our personal and professional lives, and every bit matters. 
I hope these tips help you create a winning resume. Good luck in finding your dream job. They do exist. So keep trying!