Friday, December 28, 2007

10 tips for writing a job-winning developer resume

As seasoned job hunters know, the first step on the road to finding work is to write a resume that gets you the interview. Unfortunately, some of the traditional resume writing rules just do not work well in the software development industry. Here are 10 tips for writing a programmer resume that will increase your chances of getting the interview.

Note: This information is also available as a PDF download. For a more detailed look at this topic, see the blog post “Write a resume that will land you a programming job.”

#1: Provide a skills list up front

The hiring manager wants to know if you have the skills the company is looking for. An “experience” section gives managers a good idea of how much experience you have, but if you have a “skills” section at the top of the resume, their eyes go there first. Sure, you may be making it a bit easier for them to weed out your resume. But on the flip side, you might bring to their attention some skills they would otherwise overlook. At the very least, the hiring manager will appreciate the skills list.

#2: Make the experience interesting

Most developers on the market have written a data-driven Web site or desktop application. To give a bunch of examples of these on your resume is not impressive. What does impress a potential employer is experience that has something unique about it, showing you’ve done more than just “Hello World” level work. If you’ve been working under unique constraints or in environments with high levels of transactions or zero tolerance for failure, that looks very good to the person reading the resume. So show me how your experience is different, and I will see you as different.

#3: Root out grammar, spelling, and other common mistakes

Over the course of my time hiring, I have seen all sorts of grammar and spelling mistakes on resumes. One of the most embarrassing was when someone misspelled the name of the college he graduated from. Resumes do contain some unique grammatical conventions, and software development work in particular often revolves around acronyms or oddly spelled words. But that is really no excuse. Check your spelling and your grammar. This tip appears on just about every resume advice article I have ever read, but it clearly needs repeating.

#4: Education counts, but not for much

Unless you are just entering the job market for programming or are applying for a very specialized position, your education is not terribly important. Sure, you need to put it on your resume, but list it last, please. The hiring managers who need or want to know about it can find it, and the others won’t have to spend time on it. The world of programming changes often enough so that somewhere around seven years later, most schooling (except for “principles and theory” subjects, like mathematics or “pure” computer science) and certifications have little in common with the current working world reality.

#5: Get to the meat, quick

The traditional resume format includes a lot of information that’s just not needed, in the mind of the development manager. Your summary and possibly even the objective are two such sections. There really is no way to provide a summary that describes most programming pros in a way that is accurate, yet shorter than a resume itself. This is why most summary sections read like so much useless drivel: “Seasoned programmer with 10 years development,” followed by highlights of the skills section. Thanks, but no thanks.

The objective is often (but not always) just as useless. If you are looking for a change of pace, it offers a great way to keep the reader from pigeonholing you based on your skills and experience. The intermediate programmer looking to slide into a senior developer position can safely skip the objective. The senior programmer who wants to become a software architect or a DBA needs to state an objective. So avoid the summary at all costs, provide only useful objectives, and let the reader get to your skill set as quickly as possible.

#6: Formatting matters

The formatting of your resume is important. While the days of mailing resumes printed on premium stationery are long past, it is still a document that someone needs to read on a computer screen and on paper. That can be quite a balancing act, believe it or not. This is not the time to show off your inner Picasso, unless the position you are applying for is of a visually artistic nature. This is the time to enhance readability. That means using a larger font (10 to 12 points), a common font that all computers have (if your document format does not bundle fonts within it), and one that looks good both on the screen and off. My recommendations are Verdana, Arial, Tahoma, Calibri, and Helvetica.

Use enough whitespace so that the document does not seem too dense, which will turn readers off. At the same time, don’t waste so much space that it takes eight pages to print 200 words. Of course, the format of the file itself is important. My experience has been that 99.9% of the recruiters out there will ask for your resume in Microsoft Word format if you send it in any other format, so make sure that you can provide a document in the standard .doc format.

Always keep in mind that the resume is your primary tool for selling yourself. If readers can’t consume the information in it, whether due to technical issues or readability problems, they will quickly move on to the next resume.

#7: Be cautious with the length

Regardless of how your document is formatted, try to keep the length between two and four pages, unless there are extremely special circumstances. People who spend a lot of time doing short-term contract work can have longer resumes, and people just entering the job market can have shorter resumes.

Overall, it is tough to properly highlight your technical skills and more than one position in the traditional one-page resume format. Two pages should be the baseline for any intermediate or senior developer. But after about four pages, the reader’s eyes start to glaze over. Much like your education, the experience you had more than seven or eight years ago is not terribly relevant, but the hiring manager does like to see an arc of increasing responsibility or project difficulty.

#8: Properly document your history

Programming is not like most fields when it comes to employment history. For one thing, many programmers are contractors, which leads to an employment history that can look like a train. In addition, the dot-com bust is not too far behind us, and IT has always been an industry with a lot of bankruptcies, mergers, and acquisitions.

The problem is, no hiring manager likes to see a long list of short-term jobs. If your resume has a string of such jobs, with job titles that get bigger and bigger, you look like someone who has no loyalty. On the other hand, if the jobs seem basically the same (or worse, get lower on the totem pole), it makes the reader think that you may simply be unemployable. If you have a legitimate reason for the short-term jobs, make sure that the reason is obvious. For example, mark the contracting/consulting positions clearly.

#9: Don’t put the reader at legal risk

No hiring manager likes to be accused of prejudiced or discriminatory hiring. Not only is it unethical, but it is illegal. So hiring managers who are trying to do the job right will be familiar with the list of questions they can’t ask an applicant. Your part of the equation is to exclude this information from your resume. The hiring manager does not need to know your marital status, ethnicity, nation of origin, age, religion, or sexual orientation. There are a lot of other things the hiring manager does not need to know, either. If you include these irrelevant details on your resume, the hiring manager will feel scared and skittish. Leave these details out, please.

#10: “What a geek!”

In high school, you may have hated being called a geek. But today, you are trying to find work as a programmer. “Geek” is “gold” to hiring managers. Find a way to show them that you are smart, love programming, and are constantly growing, learning, and exploring new ideas. Talk about your relevant hobbies if you have any, like contributing to open source projects or volunteering to teach local kids programming. Let them know if you like programming or computers enough to deal with them outside of work.

It is a really simple equation for the hiring manager. While two candidates may be equal today, the candidate with passion will be far more advanced tomorrow than the candidate who treats it as “just a job.”

Real-life resume blunders

How bad of a mistake can you make on your resume? Here are some real
life examples from Dribbleglass.com:

  • I am very detail-oreinted.
  • My intensity and focus are at inordinately high levels, and my ability to complete projects on time is unspeakable.
  • Thank you for your consideration. Hope to hear from you shorty!
  • Enclosed is a ruff draft of my resume.
  • It’s best for employers that I not work with people.
  • Here are my qualifications for you to overlook.
  • I am a quick leaner, dependable, and motivated.
  • If this resume doesn’t blow your hat off, then please return it in the enclosed envelope.
  • My fortune cookie said, “Your next interview will result in a job.” And I like your company in particular.
  • I saw your ad on the information highway, and I came to a screeching halt.
  • Insufficient writing skills, thought processes have slowed down some. If I am not one of the best, I will look for another opportunity.
  • Please disregard the attached resume-it is terribly out of date.
  • Seek challenges that test my mind and body, since the two are usually inseparable.
    Graduated in the top 66% of my class.
  • Reason for leaving last job: The owner gave new meaning to the word paranoia. I prefer to elaborate privately.
  • Previous experience: Self-employed-a fiasco.
  • Exposure to German for two years, but many words are inappropriate for business.
  • Experience: Watered, groomed, and fed the family dog for years.
  • I am a rabid typist.
  • I have a bachelorette degree in computers.
  • Excellent memory; strong math aptitude; excellent memory; effective management skills; and very good at math.
  • Strengths: Ability to meet deadlines while maintaining composer.
  • I worked as a Corporate Lesion.
  • Reason for leaving last job: Pushed aside so the vice president’s girlfriend could steal my job.
  • Married, eight children. Prefer frequent travel.
  • Objective: To have my skills and ethics challenged on a daily basis.
    Special skills: Thyping.
  • My ruthlessness terrorized the competition and can sometimes offend.
  • I can play well with others.
  • Personal Goal: To hand-build a classic cottage from the ground up using my father-in-law.
  • Objective: I want a base salary of $50-$60,000 dollars, not including bonus. And some decent benefits. Like a retirement plan, health insurance, personal or sick days.
  • Experience: Provided correct answers to customers’ questions.
  • Education: Graduated from predatory school with honors.
  • Never been fired, although it could happen anytime now.
  • I have happily been a “kept man” for the past 10 years.
  • Have extensive experience in turkey manufactures as well as new product development and implementation.
  • I am accustomed to speaking in front of all kinds of audiences. I make points as well as I can.
  • Personal: Five children. Dog: Jasper. Cat: Morris. Gerbil: Binky.
  • While in military, was instrumental in creation of a treat detection system.
  • My compensation package at my last job included a base salary of $64,500 with excellent benefits including flextime. I am looking for a position in which I can work a more flexible schedule.
  • Hire me and you won’t regret it-I am funny, cute, smart and creative… really.
  • Referees available upon request.
  • Previous rank: Senior instigator.
  • I have recently sold my home and I now live in a large RV so I will be able to relocate quickly.
  • Reason for leaving: They stopped paying me.
  • Cover letter: Desire the chance to showcase my delightful personality, intelligence and superior judgment, which are so hard to find these days.
  • Personal achievements: Successfully played “Chop Sticks” on a toy piano with my big toes.
  • Objective: To obtain a position where I can make a difference, infecting others with my professionalism, enthusiasm and dedication.
  • Strengths: Impersonal skills.
  • Special interests: I like any projects that are fun.
  • Please explain any breaks in your employment career: 15 minute coffee break while working at a home improvement store.
  • Vocational plans: Sea World.

Write a resume that will land you a programming job

Put your skills front and center

Reading the in-depth details of how you used mainstream skill XYZ to accomplish typical task ABC is not at the top of my agenda. I want to see your skills up front, so I don’t need to go trolling through your resume to see if you meet my minimum needs.

Skip the summary and maybe even the objective

Those summaries are a waste of my time. It is going to say something like “seasoned IT pro with great communication skills” or “proven veteran with 10 years of programming experience.” How do I know this? Because they all say this. Skip it, please.

The objective is a slightly different story; it is useful only if it informs the interviewer about something that the skills and experience does not. The objective’s relevance to me is largely a function of whether you wish to keep doing what you have been doing. If I see you have been programming — particularly at the data access layer and the business object layer — and there is no objective, I am going to assume that you are looking for more of the same with a different employer or location. If you want to do more of that work and put an objective, you are wasting space. If you are looking for a change of pace — like getting more into the presentation layer or heading towards a management track — it’s important to state that in your resume. Otherwise, we may discover during the interview that you are not interested in what we have to offer.

List your education last

Some IT hiring managers put a huge emphasis on certain educations but I do not. I always want you to list your school and your major, but I will only ask you about your education if there is something unusual or intriguing.

For instance, a candidate with a Computer Science degree from MIT or with a PhD in Organic Chemistry will draw my eye because these degrees show a level of high intelligence. On the flipside, an AA in basket weaving or a lack of a degree will not count against you.

In most cases, I am not even curious about your education until I have already made up my mind. This includes certifications — MCSEs and CCNAs do not impress me that much at this point. They matter to some folks, and they do not hurt you in my opinion, but I will only take that certification into account if all else is equal.

Show me that you are different

Even if my project is a run-of-the-mill Web-based, data driven application (which it is not), I still want to see that you are more than someone with 10 years of experience writing run-of-the-mill Web-based, data driven applications. For example, compare these two items:

BORING!
East Coast Power - Programmer 1999 - 2005

  • Wrote VB applications to control machinery. The hardware interface was handled in a COM library that was written by another team. Application was robust and reliable.
  • Wrote Web-based tool to track system faults.
  • Created Web service to allow partners to consume portions of the database.

WOW!
East Coast Power - Programmer 1999 - 2005

  • Wrote VB applications to control nuclear reactor. Real-time control and monitoring of systems handling 10,000 unique data inputs per second.
  • Wrote advanced algorithms in C# to detect imminent system failure, which were used within a Web-based application.
  • Created Web service in C# to allow partners to access data in a secure, reliable, and responsive manner; typical data set was 1,000,000 rows and concurrency challenges needed to be overcome at the database and application layers.

See the difference? Control machinery does not help me much – you could have been working on the elevator system for all I know. Programming a nuclear reactor impresses me, especially since there has not been any nuclear reactor disasters during your employment. Writing advanced algorithms in C# touches my engineer’s heart; whereas writing a mere Web-based tool is ho hum. And, while writing a Web service is fairly simple, particularly in ASP.Net, it’s not so easy to write one that is “secure, reliable, and responsive” with that size of a data set. It’s also not easy to deal with concurrency issues at two different levels.

I am not saying that it needs to be wordy or full of minute details, but if you are doing work beyond what a summer intern could do, I need to know about it. Every developer has written a Web-based, data driven application. Show me more.

Make sure that your experience highlights your skills

I don’t expect your employment history to include a list of all your skills. But if you are looking for work as a .Net developer, show me that you have done some .Net work. If you do not list that experience, I am going to assume that you have little or no experience with it — even if it is on your skill list. If you have large amounts of experience outside of the workforce, find a way to show that on your resume.

Keep your resume between two to four pages long

I have struggled through seven-page resumes filled with jargon and boring details that made me want to cry. An overly long resume doesn’t necessarily make me rule out a candidate, but why make it hard on me?

On the other hand, a resume that tries to stick to the one page rule is not going to cut it for a technical person unless they are new to the field. In my experience, two to four pages is just right. Also, please use some whitespace, so I do not feel like I am drowning.

Watch your formatting

While technical pros’ resumes do not need to be pretty, formatting can make a huge difference in a resume’s readability. If you cannot put three pages of text in front of me in a readable form, do I really want you touching the UI or writing code that someone else might have to maintain?

I recommend that you stick to a larger font size (e.g., 10 - 12 pt.) in a font that reads well onscreen and in print (e.g., Verdana, Arial, Tahoma, Calibri, Helvetica). If you want a slightly fancier font, use it only for section headers. Also, do not mix Serif and Sans Serif fonts — that is just ugly. Do not use “Comic Sans” anywhere, especially in hot pink or baby blue (and yes, unfortunately, this needs to be stated). Keep your margins and space between paragraphs large enough to provide the reader some “breathing room.”

Employment history

I give applicants some slack on employment history. For instance, five year stints are fairly rare in IT, and I give anyone a lot of leeway if their history includes anything that occurred during the dot com boom/bust.

If you are (or were) a contractor or consultant, make sure that is clearly stated; otherwise, I will think that you get fired and/or quit every 3 - 12 months. If you were not a contractor or a consultant, and it looks like you have a hard time staying at a job, I am going to be very cautious. If I see an increasing progression of job titles, “mercenary” pops into my head. Also, if I see that they are lateral (or worse, negative) moves, “bad apple” is my first thought. Of course, sometimes you get hit with a string of employers that go under or get acquired — it happens to the best of us. If that is the case, find a way to convey that information so I don’t think you are unemployable.

Spelling and grammar

It is critical that the spelling and grammar in your resume is flawless. I have seen applicants misspell the name of their state and the name of their school. If grammar and spelling are not your forte, ask someone to look over your resume for you. While I understand that many IT pros are not native English language speakers (or are English language speakers who paid little attention to those subjects in school), you should still ask someone for help. In fact, knowing when to ask for help is a hallmark of the best developers. If I interview you and realize from your speech that you had the sense and humility to ask someone for help on your resume, I am going to be truly impressed. (For examples of what not to do, check out this list of real-life resume blunders.)

Stay out of EEO (Equal Employment Opportunity) territory

In the United States, companies with more than 10 employees need to follow EEO rules. These rules state that an employer cannot discriminate against or show preference for an employee based on certain group membership items or personal lifestyle issues, such as gender, age, ethnicity, nation of origin, religion, sexual orientation, and so on. So, do me a favor and try to not expose any EEO-related information to me on the resume. In a face-to-face interview or even a phone interview, some of it will be unavoidable. But I will never solicit that information. Not only do I want to keep my employer and myself out of trouble, but I personally feel that EEO is important. I can understand that many names (or even college attended) are strongly correlated with ethnicity, religion, or nation (or at least general geographic region) of origin, and college graduation or attendance dates give some age clues. Minimize this as much as possible. Please do not tell me about your church, your family situation, your home life, your parents, and so on. It is not that I am not interested — I would probably love to learn these things about you if we hire you — but I do not need or want to know them before that you come on board.

Outside interests, hobbies, achievements, and activities

I like to see these, but only if they are relevant. I really do not need to know about how big of a fan you are of the New York Knicks; but if you wrote a piece of software that can do something nifty with the team’s statistics for fun, I would love to know about it. People who contribute to open source projects get a huge gold star in my book, but only if I feel like they would be comfortable working on proprietary software with proprietary tools, and not bringing anything GPL’ed into my codebase. That is a small caveat there. “Contributed to project XYZ in the areas of ABC and DEF” is enough to whet my appetite. Show me some outside learning too — don’t let me think that you get home at 6;00 and shut off your brain. If this work is not interesting enough for you to read about or experiment with on your own time, why would I think that you will be engaged or even interested in the job we would hire you for?

Gracefully show your inner geek

Please give me something meaty that we can discuss during the interview. So, where it is relevant, try to show me how much of a nerd you are.

For instance, try to mention the hovercraft you made from an inner tube and a lawn mower engine. Make note of the iterative, evolutionary game theory system you coded in Lisp that proves that Nash’s equilibrium is dead wrong. Tell me something about your three chess championship victories. I do not want to know that you memorized UHF or that you have a pocket protectors collection that have logos of now defunct minicomputer vendors.

I know most of this falls under the previous section, but it is relevant. I love to work with programmers who love technology and logic and using their brains. People like that are simply better programmers. Why would I want to hire someone who is intellectually lazy for an intellectually challenging job?

Obscure or nonmainstream technologies

I am not hiring Lisp, Prolog, Erlang, APL, Scheme, Clipper, PowerBuilder, Delphi, Pascal, Perl, Ruby, Python (forgive me for including those four in this list), Fortran, Ada, Algol, PL/1, OCaml, F#, Spec#, Smalltalk, Logo, StarLogo, Haskell, ML, D, Cobra, B, or even COBOL (which is fairly mainstream) developers. If you show these on your resume, I will want to interview you just for the sake of slipping in a few questions about these items. I am serious. As part of my secret geekiness, I am really into obscure and almost obscure languages and technologies. I know that a lot of those items take better-than-industry-average intellect and experience to do; they also provide a set of experiences that gives their practitioners a great angle on problems. While you will never directly use those skills in my shop, you will be using those ways of thinking, and it will give us something to talk about on your first day.

(Aside: A coworker was shocked to learn that I played Half Life. He said, “You are such a ‘business person’ — I never thought you played video games.” I guess I’m camouflaging my secret geekiness too well!)

Good luck

I’ve given away crown jewels here. In my perspective, these tips will help any programmer write a perfect resume and get them an interview.

What do you think gets applicants an interview? If you read resumes as either a hiring manager, a recruiter, or an HR employee, what makes you say “wow!” or “ugh!” when you see it on paper?