This is the first article in our Technical Interview series. For more on a technical test and phone interview, please go here. To learn about how to master the in-person interview, go here.
The computer science industry is an industry of curiosity. People who loved to tinker and play with hardware and software founded it, and it is this exact mentality that drives the industry today. A technical resume, therefore, should show off your curiosity and desire to engineer. A resume will need a list of programming languages and projects you’ve worked on, but this is not the actual point of putting your documents together. The industry is filled with people who love a good challenge, and the more you train yourself and present yourself as a problem solver, the greater success you will see in your job search.
Let your problem solving mentality guide you as you build up two key assets to finding that first job - your resume and a portfolio.
What Purpose Does the Resume & Portfolio Serve?
The primary role of the resume/portfolio combination in computer science is to present you as a candidate worth contacting usually to an intermediary like a Hiring Manager or Recruiter. If your pieces don’t have a clear goal behind them, they’re going to come off as vague and unfocused to the reader and will not be passed on to any programmers.
Companies get many resumes, and as hard as it is to believe, most of them come from people who do not showcase their programming skills. Some applicants do not have the ability to program at all! They lightly discuss school projects, list programming languages, and talk about how hard working they are, but this means very little when it comes to applied skills.
Technical Resume Content
For most candidates, a technical resume will consist of two parts: your educational history and your job experience. Both of these sections have a specific purpose: show the reader how you are qualified for the job.
As an example, let’s say you are applying for a job that asks for a Unix/Linux background, and you have taken a class in operating systems and liked it. If you were receiving the following examples in two resumes and were looking for candidates who are qualified for the position, which of these bullet points sounds like the more promising candidate?
A: Implemented a simple multithreaded priority queue using interrupts for the purpose of balancing operating system jobs
B: Coursework in operating systems
Of course, A! Describing the coursework in detail gives the reader a better understanding of what you have done. It shows that you know how to communicate, and gives them plenty of material to ask you questions. The more advanced questions they have, the more they’re going to want to talk to you!
Here’s another sample:
A: Designed and developed an auto-load feature, which made loads autonomous and decreased load times by 20%
B: Worked on startup code
Or even worse:
C: Experience with load systems
Option “c” is particularly weak, as there’s no clear definition on ‘load system.”
Many students will write vague things trying to sound “professional” using lots of meaningless jargon. Do not fall into that trap.
If you like working on servers, describe how you built and compiled your own LAMP stack and then compared its performance to a box stack and yours was a little faster. If you like working in computer graphics, list the renderer that you built to teach yourself 3D math and give some stats on how it performs. This will get someone’s attention in a way that listing “data structures class” or “graphics” won’t.
Companies need curious people who solve problems. Simply listing programming languages or names of courses doesn’t get that across. Take the time to think about the specifics of the projects you created and put those details in your resume to serve you better.
Formatting & Structure
Resumes do not need to be longer than two pages - a single page full of impressive accomplishments can be effective! You will want to start with whichever section is stronger for you and more relevant to the job at hand. For many students this will be their school, but one or two internships with relevant experience could be a better lead, especially if they were directly related to the prospective job.
Let your history shape how your resume flows more than a standard way of presenting information. Put your strongest projects first and don’t worry about chronological order too much. Be sure to list the most relevant work for the role you’re vying for at the top of the page. You can put education first, but if your projects or experience are the stronger element in your story, put that above your education.
When it comes to formatting, aim for clarity rather than uniqueness. Graphics and fancy fonts are generally discouraged, as these only serve to distract the eye while trying to read. A clear layout in something resembling an outline will allow the reader to read without their eyes being drawn randomly around the page.
Your portfolio serves to compliment your resume. The person reading your resume may want more details about the projects you list on your resume.
Setting Up A Portfolio
Your portfolio may or may not be viewed, but it’s always a great idea to have a website, a GitHub account, or something online that a potential interviewer can read. Not having a portfolio online can keep you from moving forward to the phone interview, especially if they may have you in a “maybe” pile.
If you have job experience that gives you projects that you can discuss, a portfolio may not be as important, but regardless of where you get your projects from, it is very helpful to have them listed as part of your experience on your resume.
List 3-5 projects with quantifiable descriptions in your portfolio at minimum. Below is an example of what it could look like:
Comprehensive Game Engine
Scene graph using a combination of binary trees and linked lists for rapid removal/reorganization of entities
Home-brewed math library using SIMD intrinsics for 5x increase in vector, matrix, and quaternion computations
Shader manager using DirectX 11.1/HLSL. Shaders precompiled using Shader Model 5 for a 35% decrease in load times
The numbers listed are measurements that were made in your program. They show the work put into the code. Values should be something you are ready to discuss in your interview. Remember, descriptions work to give the interviewer more information about you and to give them topics to discuss with you. They’ll be excited to hear more if they see a full page of projects like the example above.
Privacy and Sharing
The industry encourages sharing of code so it is a good idea to post the code you write openly for other people to see--with a few caveats.
This ensures that the right people see your work; and thwarts people looking to plagiarize your code. When you’re a student or new graduate (and even after that too) there is a strong sense among programmers that everyone is working together to find great answers to common problems. Your password protected portfolio is an opportunity to be a part of that community, and to back up the research that you describe in your resume.
Fill the Gaps
As you go through school (and work on projects in your spare time) your resume and portfolio grows with you.
If you want to be a front-end developer, and you feel like you don’t have a lot of experience related to that skill set, spend a few months studying and practicing to get it! The Internet is full of example code and tutorials, or sites like stackoverflow.com where programmers converge online to help one another. Embrace the curiosity of computer science, build some programs, and then write down the best parts of those projects.
Mind Your Ps and Qs.
The computer science industry is cutting edge and exciting but don’t forget conventional wisdom as well in preparing your resume and portfolio. Typical rules of conduct apply and companies are looking for a reason to not contact you.
If you apply with a generic resume, one not customized to the job (i.e. the job is C++ but your key projects are Java) then your resume will likely be tossed to the side. Any typo at all is extremely risky. A portfolio that is cumbersome to find will hurt you. Avoid silly mistakes and barriers to getting in touch with you.
In all things, remember that computer science professionals value curiosity and experimentation. These traits have defined the industry from its earliest days. Position yourself through your resume and portfolio as a curious experimenter with skills, and you will be the type of candidate top companies are hiring! Read the job descriptions, ask yourself how your experience bests fits their needs, and then put together the resume that answers their question: Are you the right person for this job?
Have professionals or a mentor read your resume, especially if they have a job that you would be interested in. Don’t go to them begging to get hired, but ask if your resume suits the kind of work you want to do or the kind of programmer they love to hire.
Also ask other people to read your resume, and see what they think. The less they know about your personal experiences, the better. Did they understand the kind of work you did? Are they able to describe your operating system project the way you envision it in your head? Their answers are a good indication of how the person reading your resume may respond.
Finally, remember that you want to be sent a programming test and make it to the next step in the technical hiring process. Let your resume and portfolio show you as the smart, ambitious programmer that has taken on and completed programming challenges that you are!