Resume Advice (for software engineering new grads & interns)
Let’s start with some meta-advice. You should take any and all resume advice with a grain of salt. Every person who has ever read a resume or conducted an interview has their own opinions on what they want to see. Instead of telling you what you should do, I’ll tell you what I find myself doing and I’ll let you figure out which bits are valuable.
Over the last year or so I’ve spent a fair bit of time looking at resumes from both undergrads and new grads for full-time entry-level positions and internships for our small software company (we do face recognition). First let me say that we don’t much care about which languages or technology you claim you know. We are firm believers that smart people who show a history of initiative will rapidly get up to speed on our technologies of choice. The important lesson here is simple: buzzwords aren’t as valuable as programming aptitude and a history of initiative (or rather, being smart and getting things done).
I took pretty good notes (especially after the career fair I attended as a recruiter) about whom I was impressed with. I noticed a very obvious pattern emerging. Let me tell you exactly what I look at your resume to find:
Things that I really want to know about:
1. Programming you did outside of class (open source, previous internships, or on your own, even if screwing around)
2. Your teaching/research experience
3. Other assorted nerd-cred (hobbyist robotics? member of a linux users group? sneak this stuff in at the bottom)
Things that will also help:
4. Your interest/passion in the appropriate fields — in our case, low level languages, computer vision, SIMD programming, etc. (major bonus points if it matches up with #1 or #2)
5. Programming you did inside of class (class projects, focus on the bigger, more difficult, more original, and more you, not your team)
6. Programming classes you took (especially ones not required)
7. Math classes you took (especially ones not required)
8. Your grades in those classes
Things that probably won’t help:
9. Your other grades
10. Your “other” jobs (any and all non-technical ones)
11. Your objective
Things that will hurt you:
12. Buzzword soup (especially if I know you are lying)
13. Your fucking picture on the resume. I mean… seriously?
Got a few years left? Here’s the best advice you will ever get
The best advice anyone will ever give you on getting the best job possible out of school is this: get involved in serious programming outside of class. Now.
Either go find a professor or a club that will let you work with them or find an open-source project and get involved. And the deeper you get, the better it looks. Getting involved in a shallow enough capacity to slap it on your resume will get you in the door, but you’ll fail gloriously come interview time. If you can talk with me for an hour about the time you had to choose the correct algorithm for the memory vs. speed trade off for your ping-pong playing robot, you’ll have my vote.
Does it matter what language or technology the side-project uses? No! We hire people to do low-level computationally-intensive multi-threaded number crunching. But if some college kid walked in who has built a bunch of his own rich internet web applications, knew several web frameworks, and contributed to a variety of open source projects — and he really wanted to work here — I’d hire him in a heartbeat. Why? Because the kind of person who wants to program on his own time for his own purposes is the kind of person that makes a good engineer. Passion is three quarters of the game. And most of the rest is made up by initiative and determination (people who “get things done”).
Graduating: Which are you?
I am really passionate about programming and have done lots of work on big projects outside of class!
Great. You’re hired.
I am really passionate about programming but I don’t really have anything to show for it.
First, don’t feel bad, many people fall into this category. I did. You guys are passionate about programming but have never gotten seriously involved in anything deep enough to put on your resume. Listen closely though: you guys have not one, but two problems. First, it’s hard for you to prove your passion on your resume and second, even if you can convey it, you’ve shown a lack of initiative. Your resume’s goal should be to distinguish yourself from the horde of passionless people who are your competitors.
I suggest you strongly focus your resume on your favorite class projects and try your best to put at least one “on your own” project on the resume. Even if it wasn’t terribly serious (it belongs near the bottom, in that case).
I don’t really like programming on my own time.
I hope you know java! (Ok, that was a cheap shot.) Nothing really changes from above, however. You should focus your resume efforts on the classes you took and your favorite projects . You also might want to consider if software engineering is the correct profession for you. There are plenty of related fields that you might enjoy more (like a sales engineer, or technical writer).
One last word of warning: “other” job experience
I think alot of general resume advice works for software engineers but here is one place I believe it fails gloriously. For you guys out there without any real programming experience out of class (including internships, teaching or research), do not focus your resume on your other, non-technical, work experience. Please, focus on your technical background, not your job as a pizza man, doorman, or bartender.
These items are worth mentioning towards the bottom but they should never be the focus of a programming resume. If half your page is filled with your various non-technical jobs, each of which has several line items of responsibilities, you are doing it wrong. Keep those items short and sweet and use the extra real estate for technical matters, even if you have to use in-class projects.
January 12th, 2009 at 12:16 pm
Thanks for the advice. I’m a junior studying computer science at Purdue. I haven’t really worked on a resume yet, but now (or a few years ago) I probably should have started. Here’s a question for you though, when you’re looking at personal projects, what kind of things do you look for? For instance, for fun I built an application that converted a board game (Diplomacy) into an online web application that allowed me and my friends to play it together. The most difficult part was building a system that translated the orders each player put in and resolving conflicts. It was a very open ended problem that required quite a few recursive functions to solve. I know for a fact that my solution wasn’t even close to optimal, but it _does_ work. Unfortunately this isn’t easy to summarize in a sentence or two on a resume. Hypothetically, if you saw a resume with a url that described what work I had done, would you check it out?
January 12th, 2009 at 3:20 pm
As a recent graduate [2006] I’d agree heavily with the author on this one….
What you need to do is find ways to stand out from the competition. Employers are interested in knowing that you have passion, desire, etc etc.
Find ways to stand out – do some opensource stuff. Contribute to some sourceforge if you can. If you do any independent stuff mention it , if and only if you can carry a conversation.
Avoid buzz-word bingo. People will ask you about it, I knew a fellow that put down he was quite knowledgeable in SOA; then he was grilled on SOA and tanked. Sure he knew what web-services were but he got destroyed on everything else.
Look into various technologies that courses aren’t teaching you. If you’re a big .NET guy look at JAVA; if you’re a huge JAVA guy look at .NET
Oh and always be looking at things like LINUX , WM Vare , Solaris , etc etc.
Good luck in these trying times. Oh and for the guy at Purdue, you’ll be fine Purdue puts out some of the best engineers next to Penn State
January 12th, 2009 at 8:27 pm
@Chalks,
Yes, I would check it out. You don’t need to jam all the interesting stuff into the resume. Just describe what it is and any good interviewer will ask about it. That’s your opportunity to get into any interesting problems or design issues. You just might end up a whiteboard describing the complicated parts. Consider that a good sign.
January 13th, 2009 at 12:52 pm
For nerd-cred, would describing my level 11 D&D Paladin help?
January 14th, 2009 at 4:05 pm
Good article. One followup tip for the tech resume- when mentioning such programming projects on your resume, mention the technologies you used on the project to demonstrate your expertise.
Stumbled this for you:
http://jobmob.stumbleupon.com/review/29279323/
January 15th, 2009 at 3:54 am
Hi Louis,
Very nice and informative post for any collage grad and self-taught hackers as well
But I have a technical question. Regarding to Computer Vision projects(Face Recognition in your case), is it compulsory to develop real-world software by using C++ ??? And does it affect on potential candidates ?
Sure you told that the language never matters, but it’s a dilemma for me.
It’s so important to me ; because for example, I develop my projects with python , C and OpenCV. So, they suffer from lack of OOP manner. Let’s forget some libs like pyOpenCV. I mean a project with only C and openCV.
Thanks .
January 15th, 2009 at 8:02 am
Vahid,
You can do OOP in python
. As for us, experience with Python and C would be fine. We tend to want to see at least some experience in a low-level language for our work, and you have that with C. Not having C++ experience wouldn’t bother us at all. (As it turns out, we use almost no C++, just for GUI programming).
I think people really overestimate how much language experience matters. It’s much more important that you are familiar with the “kinds” of programing: low-level, functional, object-orientated, etc. If you really know C and Python well, those two will expose you to pretty much everything.
January 15th, 2009 at 8:52 am
Thanks Louis,
Inasmuch as I prepare myself for high level skills in computer vision , I needed your guide as a Computer Vision expert with multidisciplinary techi abilities …
You set my mind at ease
Thanks again
January 16th, 2009 at 8:51 am
Louis,
This has nothing to do with programming and probably shouldn’t be posted on your blog (which is pretty entertaining despite being mostly over my head), but I had a really vivid dream about you and your brother last night and it inspired me to try to check in on you and see what you are up to these days. I am still trying to find John–you were easier
.
Yeah, it’s weird, I know, but hey… anyway, I hope you are well.
Rhiannon
January 17th, 2009 at 2:22 pm
Email me louis@lbrandy.com and I can get you in contact with him.