Sunday, March 09, 2008

The CS undergrads' guide to writing your first resume

Continuing on the theme of bridging the gap between an undergraduate CS degree and a career in software development, I want to talk today a little about resumes.

What a Resume is Good For

The most common mistake people make with their resume, young and old, is to write a resume that makes the case for hiring you. No smart company is ever going to hire you on the basis of your resume, so don't even try. Your goal is to have me read your resume and think, "Hey, this person sounds really interesting, I should set up a phone call with them." And that's it. If you want to, you could really stop reading here - once you understand the critical purpose of a resume, everything else is just details. So let's really drive the point home: a resume's only purpose is to get someone, anyone, to read it and be interested in you.

If you're still with me, let's start things off with...

How to Write Your First Resume
  1. Put your name and contact information at the top of the page, in a font larger than anything else you'll put on the page.
  2. Start a section called "Education", and include:
    • the name of your college or university,
    • the name of your degree program,
    • and your GPA. Please consider your GPA to be mandatory. Your career counselor will likely advise you not to list your GPA if it's below some threshold (usually a 3.0), but please go ahead and list it anyway. It's easier for all of us if a weak GPA can be weighed against all the other information on your resume at the same time. To put it another way: if you have a really strong resume with no GPA listed, you leave a big gnawing unknown out in the ether. If you at least list your 2.8 GPA and then go on to tell me about a whole bunch of awesome stuff you've done, I can make an informed decision about whether to proceed; if your GPA isn't on your resume, I'm likely to pass it over without ever talking to you.
  3. Next, list the most interesting and challenging CS courses you've taken. You're shooting for 3-5 here, and if they don't have names I'd intuitively understand (ex: "How to Think Like a Computer Scientist") please do me the favor of translating them ("Discrete Math and Algorithms").*
  4. Create a section called "Experience" and write down everything you've done that resembles a non-academic programming position. Personal projects, summer internships, research projects, everything can go in here. This is the meat of your resume, and where you're really likely to hook me into wanting to learn more.
  5. Create a section called "Technical skills" and list every language, operating system, database, and development platform you're competent in. This means leaving off the stuff that you experimented with that one weekend freshman year. I want you to be able to tell me some of the ins and outs of any of the items in this section. I don't expect seniors in college to be experts in anything, so don't be too conservative, but you want to avoid setting off my bullshit meter [addendum].
  6. Finally, in a section called "Activities and Awards", list the most important activities you've participated in and awards you've received. This should be much shorter than your "Experience" section, but don't leave it off completely.
  7. Find someone to read your resume and give you fair and honest feedback. Start with a classmate. If you can, find a recent alum from your program and ask them to review it. Show it to your advisor. You can't have too many people read and comment on your resume. Listen to what they say, and incorporate their feedback.
Still with me so far? Great! Keep reading for basic tips on what to emphasize and the cardinal sins to avoid that will take this recipe and turn it into a winning resume.

* Real example taken from the Carnegie Mellon undergraduate curriculum circa 1996.

No comments: