Friday, June 24, 2011

Resume Tips for Computer Science Students

Here are some resume tips I've learned over the years. I've interviewed about 100 computer science candidates, mostly interns, and have been a technical recruiter at least a dozen times at university career fairs. I've seen thousands of resumes, and have hopefully learned some things you will find useful. For the most part, I've left out obvious recommendations and, instead, focused on tips you may not have heard - or heard from the same point of view. In my youth, I was heavily influenced by Joel, so I probably borrowed some of these ideas from him.

1. Backup your Buzzwords

Almost every computer science resume has a section that looks like:
Skills:  C, C++, C#, Java, .NET, WPF, OpenGL, Direct3D, GLSL, Visual Studio, Eclipse, NUnit, JUnit, NAnt, ...
I'm tempted to recommend removing this section entirely. It does have some uses though; it is good for google searches and HR/manager buzzword hunters. It can also paint a quick profile: is this person a client-side graphics developer? a server-side PHP/MySQL developer? An architect astronaut?

In order to play the game with the less technical folks, I am OK with candidates including this section, but these skills need to be backed up throughout the resume. For example, if OpenCL is listed but I don't see any evidence elsewhere in the resume, I will be skeptical. If I ask about it in an interview and the candidate doesn't have any experience or even exposure to the topic, they have just lost integrity points.

If you list something in the skills section, make sure it is proven elsewhere in your resume, e.g., "Implemented a GPU-accelerated cloth simulation using OpenCL, which resulted in a 30x performance improvement over a multithreaded C++ version." The buzzword hunters will give you extra points for having multiple instances of the buzzword, and technical folks are more likely to believe you.

2. List Coursework Strategically

This motorcycle has nothing to do with
resumes but it sure is fun to ride.
For a student or recent graduate, it is a great idea to including a "Selected Courses" or, better yet, "Favorite Courses" section that highlights some unique courses you have taken. It is an even better idea to tailor this section, and your resume in general, to each employer. Applying to Google search? Include Distributed Systems and Machine Learning. Applying to Pixar? List Computer Graphics and Physically-Based Animation.

Do not list a course that you cannot discuss intelligently. You should have a reasonable grasp of the subject and a story about a related project. For example, I took machine learning in grad school. I got an A and somehow even passed the PhD qualifier, but I can't do machine learning to save my life. I can pronounce fancy algorithms like boosting and principle component analysis, but I can barely tell you the difference between them - not something worth discussing in an interview.

Do not list required courses! This is common with underclassmen, but I still see it done by upperclassmen who have more interesting things to list. If I know your major is computer science and you go to a reputable school, I also know you took intro to programming, calculus, and discrete math. Don't list them; they get in the way of the good stuff.