Technical Resume Advice
The advice you'll get at a place like OSU Career Services is appropriate for generic resumes, but not all of it applies when tailoring your resume for a technical role. Technical resumes will typically be read by automated systems, HR people, and the professional engineers who conduct your interview.
Know Your Audience
Once you get your resume into the hands of an interviewer or hiring manager, it needs to accurately reflect who you are and what you can do. Don't lie, and don't bullshit. Sure, claiming to be proficient in technologies you don't know might get you an interview, but that interview will ask questions that you can't answer and generally waste everyone's time.
Conversely, don't underestimate your own abilities. If there's a project that you've done which you're reluctant to include on your resume because it seems too trivial, ask in the IRC channel for feedback on whether others consider it relevant to the position for which you're applying.
Engineers and technical recruiters like numbers and facts more than vague claims. For example, "Improved Android system throughput by 25% in some use cases" is much clearer and better quantified than "worked on Android devices".
If the resume is for a specific job, read the posting carefully to get a feel for what the company values. If they emphasize communication skills, for example, your resume should highlight times you've taught, written documentation, and worked with others. It can also help to interview someone who works at the company where you're applying, to learn what traits the recruiters tend to focus on.
SEO (search engine optimization)
If you're unlucky enough to be applying through automated systems rather than personal recommendations, it's especially important to list the names of all the technologies you're confident with. The automated systems for deciding whose resumes get seen by humans basically just search for buzzwords that match the job postings.
However, this is no excuse to include a wall of acronyms which people can't read. Put the names of the technologies you've worked with in places that make sense.
How many pages?
For most students in their first few years of open source involvement, one page is sufficient. A curriculum vitae includes publications and speaking experience, and is expected to exceed a single page if those sections have several items in each.
Although some recruiters believe that multiple-page resumes are acceptable, others will discard anything over a single page on the grounds that it shows you can't communicate concisely.
As a practical consideration, a single page is more convenient than multiple, because most of the resumes you print will be for career fairs on campus. If you're busy, you'll probably be updating and printing your resume in a hurry, and collating several pages then finding a stapler is inconvenient.
In short, resumes are best kept to a single page unless you have a compelling reason to do otherwise.
Include your full name, email address, GitHub, probably phone number, and possibly IRC handle. Be cautious about including your phone number or home address if you plan to share your resume on GitHub or your personal web site.
Mission Statement or Statement of Purpose
If you can sum up your goal in a single sentence, it doesn't hurt to include a mission statement. It can help focus and clarify your resume if you're trying to pivot your career by applying for jobs which don't precisely match your experience. However, if your qualifications and hobbies tell a cohesive story of what you enjoy doing, a mission statement would be redundant and you're better off using the space for useful information.
It's ok to tailor your mission statement to reflect the company's values, but it's generally considered overkill to refer to the company by name in your resume. That's what the cover letter is for.
If you're applying through channels which focus on recruiting college students, they will expect an education section on your resume. It should include school, year and month of anticipated graduation, major, and GPA. Be sure to spell out the name of your school - for example, OSU stands for both Oregon and Ohio state universities!
Some positions require GPA to apply, others will assume the worst if you omit it, and others don't care. As a general rule, you should include your GPA unless it's worse than what the recruiter will guess if you leave it out. Alternatively, talk to the recruiters of each company you apply to, and customize your resume for their preferences.
Most people use a centralized skills section to list all their buzzwords at once. If you have skills that you've picked up independently of any work or open source experience that appears elsewhere on your resume, you should include a skills section. However, if all of your major skills relevant to the job correlate to work or open source experience that's already on your resume, include them in those sections and use the space that would have gone to skills for other things.
List 3-5 recent, relevant jobs. List job title, employer, start month and year, and end month and year. Follow it with a couple of lines about what you did. Don't say "I"; they already know who you are. Use quantifiable metrics whenever possible. Brag. Name the technologies you learned at each job, preferably in a way that indicates your level of expertise with them.
Do you maintain an open source project? List it, with a few words about what it does and a link to its site. Did you write a cool, open-source thing that shows off your skills? List it and link to it. Have you gotten code into somebody else's open-source project? Again, mention what the project does and where to see your contributions, unless it's extremely popular or used by the company where you're applying.
Don't include them. It's debatable whether "references available upon request" is necessary at all -- typically, if a job requires references, it'll ask you for them directly.
It's especially important to avoid including your references' contact information if you post your resume online, on your personal site or in a GitHub repo. Web crawlers come through from time to time and scrape out everything formatted like a phone number or email address, and then spam them.
If you use someone's contact information in the references section of a job application, remember that it's polite to ask them before listing them and keep them up to date with where you're applying so they know when to expect calls from recruiters asking about you.
If you have a hobby that relates directly to the position you're applying for or makes you stand out meaningfully, include it. For example, if you're a world champion at a well-known game, or an avid golfer who's applying to write the website of a golf supplies company, include these facts about yourself.
If the fact that you do a hobby carries useful information about why you'd be a better choice than other candidates for the job, include it. Otherwise, leave it out.
If you've been actively involved in a club's leadership while in school, it's worth mentioning. Your involvement with clubs also demonstrates that you can manage your time well, and are self-motivated to go do cool things.
Leave out high school activities unless they're directly relevant to the job (robotics club when applying to a robotics company, for instance) or they showcase skills that you haven't demonstrated in any other experience you've listed.
Don't include it. In the tech industry, it's considered strange and uncouth to state your age, gender, marital status, or similarly personal information on your resume. There is no reason to attach a photo of yourself, either - if you want to brag about how pretty your face is, do it by choosing a flattering avatar on your GitHub and LinkedIn profiles.
However, your name may leak information about your gender or cultural heritage. Some people whose names are hard for Americans to pronounce prefer to go by an easier-to-pronounce alias. The author's personal experience suggests that those whose names read to an American interviewer as female may be at an advantage in obtaining interviews because of companies' affirmative action policies, but your mileage may vary.
Additionally, be cautious of bragging about involvement with stereotypically obsolete technologies or controversial organizations. Hiring personnel and interviewers do their best to judge you only on your technical merits, but they're only human: It might be safer to say "wrote website in Ruby on Rails for national political campaign" than "helped campaign for Democrat candidate" if you have reason to suspect that your interviewer might be a staunch Republican.
Make it pretty.
In this case, pretty means clean and elegant. Words should be distributed over the page in a way that leaves neither too much nor too little whitespace between sections. Extraneous icons and blocks of color rarely improve simple layouts, and often detract from them.
Imagine that you're a recruiter looking at your 50th resume of the day, and this resume on is currently at the top of the stack. Is it enjoyable to read?
As an applicant it's easy to feel like you're the center of the universe and your resume's primary purpose is to show off your achievements, but it isn't. It actually exists to make the recruiter's day better, because they feel good when they come across the beautifully presented resume of a well-qualified candidate.
To show that you respect the recruiter's time and don't want to hurt their eyes, avoid packing too much information onto the page. It's okay to tease them with high-level summaries of your accomplishments and leave them wanting more detail, because you can share those details in the interview.
Don't leave big empty blocks of space on the page. Spread out your content, vertically and horizontally, and tweak bullet indentation until the page looks balanced and lines don't wrap at awkward locations. It's never pretty to let a line break fall in the middle of the word and have to hyphenate it. If your sentence leaves a single word hanging out on the next line, reword or tweak font sizes until it's no longer lonely and uncomfortable.
Keep the default LaTeX font (more about that in a moment) for most of your resume, and never go smaller than 10pt.
No. Bulleted lists, or lists without bullets. Short, easy-to-read sentences about what you've done.
If for some reason you've chosen to go with a plain-text resume, wrap the lines at 80 characters. Yes, it's old-fashioned. But 80 characters is about the width of a column of text that it's comfortable to read on the web, and a different width will look subtly wrong to coders accustomed to reading documents of the more standard size.
1" is good. With smaller margins, be especially cautious to avoid the hazards of tiny font sizes, walls of text, and awkward horizontal spacing.
However, it's fine to take margins down to as small as 3/4" in order to avoid the hazards discussed above in the section on whitespace.
Use LaTeX to generate your resume. LaTeX is useful for all writeups, and will prove invaluable when you get to CS311. Most importantly, it more or less guarantees that your resume will end up looking pretty.
The human resources person who looks at your resume is unlikely to think other than "that's pretty", but the engineers who interview you will instantly recognize the LaTeX formatting and subconsciously assume that you know your way around a command line and text editor. This is a tiny, subtle point in your favor that helps you start making a good impression before you even walk in the company's door.
LaTeX is easy to keep under version control when you add and remove sections, as well.
Companies should allow you to submit your resume in .pdf format, which is a good choice because it displays pretty consistently across all systems and is harder to inadvertently modify. If they demand a .doc, LaTeX can be rendered to .rtf, which can then be renamed to .doc, and then allegedly it works fine in Word. Test this, though, as your mileage may vary.
Upload your .tex, your Makefile, and probably a .pdf to GitHub. It's not usually a good idea to upload pdfs to GitHub, but resumes are an exception because it's convenient to have a pdf file available online whenever you need to link to it.
Keep a single master resume with all of the sections and content you might want. Trim it down to the most applicable page of content for a given position, then render a nice pdf, give it a useful name, and submit.
A useful file name tells both you and the company what the document contains. Firstname_Lastname_Resume.pdf is great for the company, but doesn't tell you anything about where you submitted it or when you rendered the document. Similarly, a company might get hundreds of companyname_resume.pdf submissions and have a hard time telling them apart. Unless the job application specifies the filename they'd like you to use for your resume, err on the side of clarity with a title like Firstname_Lastname_MMYYYY.pdf or Firstname_Lastname_Company_YYYY.pdf.
Be sure to keep a copy of each specialized resume you send out so you can review what the company knows about you when you're called for an interview.
Be aware of the company's mission, vision, and culture, and refer to how you're a good fit for them in your cover letter. Include a cover letter, even if it's just the email message to which you attach your resume, even if it's nominally optional.
If you met a recruiter in person and got their card, your cover letter is probably your email to them. Here's a "mad libs" version of that email:
Dear [name], It was great to talk to you about [company] at [event where you met them]! I'm really excited about [cool thing company is doing] and wanted to reach out to you about the openings for [position that they mentioned]. My resume is attached, and you can browse the code for [project that you talked with them about] at [link to the project on your GitHub]. I hope to hear from you about the [position that they mentioned] opportunities soon! Thanks, [your name] [useful descriptor, such as "Student, Oregon State University" or "Developer, [your open source project]" if you work on a popular project]
You should of course use your most appropriate email address. For OSU students, this will be firstname.lastname@example.org. It lends credibility to your identity and you should have it forwarding to something that you regularly check anyways.
Have several other people look over your resume for typos. Triple-check that your email address and phone number are correct.
Render your .pdf and see how the layout looks.
Go through every single line on the page and ask yourself whether it helps prove that you're the best candidate for the job to which you're applying. Delete any useless information -- remember the part about how you're the 50th resume on the stack and want to show that you respect the recruiter's time?
Once you've pruned all of the unnecesary parts, render the .pdf again and ask yourself whether it's pretty. Since you've been staring at this same document for several hours by now, try looking at your screen in a mirror. You won't be able to read the writing, but it'll show you whether the text is arranged across the page in a balanced and generally nice-looking way.
Remember to commit and push your .tex file after making everything pretty.
Finally, read the entire thing out loud. This might feel silly. I don't care. Read it to your roommate, your cat, your teddy bear... but verbalize the exact words on the page. If a sentence sounds awkard, fix it.
- LaTeX resume, an older version helped get an Intel internship
- A different LaTeX template; got fulltime DevOps position at UTI
- Plain text, but it looks great. He's worked for Boeing and REI.
Not a LUG or CAT acquaintance, but it's a man page. An actual man page.
Not sure how this design theme would work for ladies in tech, though.
If you find good resource for this section, please update the document! Or ping edunham and she'll add the link.