You’re a great coder. You’re easy to work with. You know your data structures and algorithms backwards and forwards, you laugh at discrete math, and your methodology is so agile you can scrum while XP’ing. You know you could crush any technical interview, but no one will give you the chance. No matter how many resumes you send out, no matter what you try, you just can’t get that phone screen or first interview. Why not, and what can you do about it?
Pity the Recruiter
First, let’s take a step back and take a quick look at the sad, dark life of the technical recruiter. In any top company (a.k.a. most companies you’d want to work at) there’s going to be a deluge of resumes coming in, both over the transom and from external recruiters. There aren’t enough hours in the day to perform in-depth examinations of every resume, so each gets a quick evaluation that’s somewhere between a glance and a quick scan before being put aside for further evaluation or moved into the circular file. Approaches differ, of course, but the problem is roughly the same no matter where you go. Bottom line, you have a very limited window in which to make an impression, and the number of things your CV can say to make that impression is fairly limited.
Conceptually, let’s divide resumes into three piles. The first pile contains resumes for candidates who have a high probability of passing the technical interview and getting an offer. The second pile has resumes of people who might get an offer, and the third pile has all of the people who probably don’t have a chance. Resumes in the first pile get prioritized, the second pile gets looked at if there’s time, and the third pile gets thrown away. So what gets you into the first pile?
The key thing to remember is that a recruiter’s primary goal is making hires. Yes, hires need to be technically competent, they need to be good cultural fits, they need to be successful at the company long-term… But this is what The Process™ (i.e., resume review, interviews, etc.) has been set up to determine, and they’re looking for candidates who can pass the test. Some great candidates will be missed, some duds will get through, and the degree to which these false negatives and positives are avoided are what determine how effective a company’s process is. But ultimately, recruiters are looking for people who can make it through the interview process, and the candidate with the best chance is the one who’s done it before.
Like it or not, the school you went to as an undergraduate has a huge amount of influence during the initial evaluation. Graduating from MIT, Stanford, Brown, etc., with a BS in Computer Science will typically be enough to get you the first phone call. Why should this matter? There are some second-tier and public schools with great CS programs (e.g., Champaign-Urbana), and these might get you into the second pile, but why is an undergraduate degree from Brown so much more meaningful than a degree from UT Austin?
In short, because a candidate from a top school has already gone through an extremely difficult culling process. There’s very little way to know whether a candidate learned anything in school, and whether anything they learned has relevance to their actual coding skills – but the one thing you know about someone who graduated from Brown is that he or she got into Brown in the first place. They’ve already been vetted, and survived a brutal winnowing process. This is a meaningful piece of information, and is frequently enough to move forward on.
This is also why Master’s degrees from great schools are somewhat meaningless. Most schools treat their Masters programs as revenue centers, and the selection criteria are far less rigorous than for undergraduates. Since CS classes at Stanford and SUNY Binghamton don’t necessarily differ that much (as it happens, I’ve taken classes at both), the classes a candidate’s taken don’t necessarily give you much information. The only thing that matters was whether the application process was hard.
Having worked at a company with a tough interview process is also a great positive indicator. This could be a great, well-known company (Google, Facebook, Amazon, TripAdvisor), or a smaller company known for having a particularly tough interview process. Opinions can differ, of course, but the longer you’re involved in recruiting, the better you get to know the companies in your area, and learn what to look for. Although the work a candidate did at a company is important, once again the key point is that they’ve already gone through and succeeded at a rigorous interview process.
[As an aside, the question frequently comes up as to whether it’s better to work for a startup out of college, or go work for a big, well-known company for a couple of years first. There are many reasons for and against each option, but besides the fact that you’ll learn a tremendous amount, an important reason to at least have internships at top companies is that it gets you into the first pile if things don’t work out.]
Domain Knowledge and Cultural Fit
If you’re looking for a job in the defense industry, ten years of work at defense contractors will stand you in good stead. If you’re looking to go into a tiny web startup, however, your defense work might be a red flag that you’re used to a procurement / bidding / approval process measured in months to years, multi-year project cycles, and a more conservative work environment. And vice versa, of course. If you’re changing industry, you’re going to have to overcome the perception that, far from being a selling point, your prior experience is going to actively prevent you from being successful at the new company.
While having worked in a start-up doesn’t mean that you got through a tough interview process, it’s generally viewed positively for one important reason: starting a company is hard. You don’t have the infrastructure of a big company, there isn’t someone to take out the (metaphorical or literal) trash, and you don’t have the luxury of being Software Engineer II responsible for Foobarian Widgets. You have to do everything, work harder, and learn quickly – all on your own. Sure, if you’re applying for a job instead of retiring to your own island, then you probably failed – but from the company’s standpoint, that’s OK. You hopefully learned a lot, demonstrated dedication and initiative, and will probably be grateful to have a paycheck.
If you’re good at something, you usually like doing it. If you enjoy doing something, you tend to do it more. And, of course, you tend to get better at things you do a lot. Side projects, from iOS / Android apps, to contributions to FOSS projects, to setting up Beowulf clusters in your attic made from dozens of Raspberry Pis, are going to get you a second look. The recruiter needs something, anything that indicates that you’re extra geeky, and evidence that you fool around with (and complete) personal projects on your own time is a good sign.
Note that a side project is very different from a school project. School projects are defined for you; have due dates; have been designed to be self-contained; and are known to be possible. Side projects are defined by you; don’t have due dates; usually start out poorly defined and messy; and might very well be impossible. Finishing a side project means you had the drive to do so without the external carrot or whip, and without the knowledge that what you were doing could be done. Finishing a school project doesn’t mean much of anything.
So what are you going to do about it?
OK, so you didn’t go to MIT. And you haven’t worked for a great company – maybe you’re just graduating, or maybe the first company you worked for turned out to be a dud. What can you do to make yourself more interesting?
Without the school or the job history, your best bet is going to be to do some side projects. Writing an iPhone or Android app is easy – it just takes an idea, some determination, and the ability to work through a tutorial book one chapter at a time. Alternatively, you could get involved in an open-source project. For example, Linux Kernel Newbies is a good place to start if you want to get involved in Linux development (I guarantee you, being a Linux kernel or Apache project contributor with merged diffs will catch a recruiter’s eye). There are plenty of options, but the key is that you have to finish something, ideally multiple somethings, in a public way (e.g., published in an app store). Saying that you’re currently working on an app, and will be finishing it any day now is pretty weak sauce, kind of like being a waiter in Hollywood with an unfinished screenplay. Tell me what you did, and where I can find it (including a link to an app store and/or github account). If I can’t see it, it didn’t happen.
At this point, some readers are going to be upset because they were hoping for a different, more effective arrangement of words to describe their education and job history, not homework. I’m sorry if you feel cheated, but if you didn’t go to a great school, and you haven’t worked for great companies, and you don’t have side projects that you conceived of, executed, and completed on your own, then why should anyone think you’re different from the other thousand resumes that are just like yours? Why should they pick your resume out of the pile? Maybe that sounds harsh, but really, without something genuinely special on your resume, how are we to know that you’re just that awesome?
This post wouldn’t be complete unless I included a couple of anti-patterns into the mix, i.e., things that will damage your chances at an interview, no matter how great your resume might otherwise be.
- Job Hopping
So, you graduated from MIT, worked at Google and Amazon, regularly contribute patches to the Linux kernel… And you still can’t get an interview. If you’ve had five jobs in the last five years, why should the recruiter think this time will be different? Maybe you’ve been “managed out” at each of your jobs. Or maybe you’re just not going to be happy, no matter where you end up. No matter how good your resume is, a series of short stints can sink your chances unless there’s a really compelling reason for them, and you have the chance to explain.
- Ten Page Resumes
Long resumes are the equivalent of the guy at a party who thinks he’s the most interesting thing going on, and proceeds to bore you with the intimate details of a life you couldn’t care less about. We don’t have time to read long resumes, and they’re honestly nowhere near as interesting as the candidate thinks. Resumes should be summaries, with more detail for recent positions, less detail for more distant ones. If you’ve been in industry for ten years, you can have a second page. No one needs more than two.
A Final Word
I know that some of this may seem elitist, and that’s right. Hiring is meant to be elitist – companies always seek the best candidates they can get, and great companies will try to hire only great candidates. If you’re serious about your career, then I hope that this is a hopeful essay – you can set yourself apart. You can do things that will get yourself noticed. Most people, even knowing what they have to do, will be unable or unwilling to do it. But you’re different. You know now that you have a choice, and you know what you need to do to get into the top pile.
Just in case you haven’t guessed, I’m hiring! Please send resumes to daniel at my company. Thanks!
Next up: preparing for the interview
Just recently landed a job a one of those big tech companies straight out of a mediocre college, due to my side projects. I can absolutely confirm what you said here.
Great post, but it’d be great to touch upon how to attract the recruiters eye passively. For example, having the right LinkedIn keywords in an engineer’s profile would boost the likelihood of being pulled into a Boolean search top recruiters use.
For example, if a talented engineer working at a power supply company, who has been working on power distribution algorithms wants to attract the eyes of Google recruiters, update his LinkedIn profile to include some high visibility terms:
Worked on power distribution and metering tools using Java.
Developed Hadoop algorithms for energy distribution using Java (+ Scala). Prototyped Android metering application. Implemented Agile methodologies in Lean Startup SCRUMs
Superfluous, yet helpful in making sure you show in LinkedIn searches.
This is an excellent point. I didn’t really talk about how to describe what you’ve done effectively, but this is absolutely true – not only because it helps recruiters search, but also because you communicate information about specific technologies. One caveat, and something I also forgot to mention – if you list a technology on your resume, especially in a “skills” section, you need to know it well. If you say you know R, it’s fair game, and some interviewers will absolutely ask you about it. They won’t be impressed if you tell them it’s been a couple of years, and you’re rusty.
What about the cover letter? Do recruiters actually read those?
Good point – cover letters are a good opportunity to explain something that might not pop on the resume. For instance, if you’ve been programming since you were ten, that’s important information that might not fit onto the resume. Or if there was a good reason for a short job stint, etc.
Great post most of what you say is correct, however here is how it works from a recruiters perspective:
So for starters you will usually get between 30 – 60 applicants for a position that is in demand and you will have to wittle it down to 3 – 5 resumes that you can send off to the client. Now you have to move quickly because 5 other recruiters are on the same job and if their not; as soon as you put the technology stack and location any recruiter worth his salt will figure out the company or can guess.
So speed is main issue, so to shorten the search time we all use the boolean search on ANY recruitment CRM to get the list down to the right technology stack. We then as above go through the resumes to match experience etc.
So my piece of advice is simple and the successfully contractors I work with all know this:
1. Realise that the search function on most CRM’s is very simple, so the more times you put a technology in the higher you will rank in the search.
2. Second all reciters like to see what technologies you have used in each role it saves us time asking about it and that means we can get to know the candidate better.
3. Your resume should be 6 pages long, not 3 or 4 and not 10. The first page should be a summary plus a list of every technology you used, then your work experience with responsibilities and what you did there, team size, technologies, targets etc. Treat us like we are stupid (reason below)
The reason for all this is recruitment is very competitive and lucrative, what this means is good candidates get snatched up quickly and placed quickly. So as I and many others do we hire ‘resourcers’ these are basically people who ring the list of clients and get them down to about 5 – 10 people to be shortlisted. We don’t pay them well and they are usually pretty ignorant, most are people who are very salesy because we want the interview leads from candidates (most are these kind of people – http://www.aarp.org/money/scams-fraud/info-09-2012/confessions-of-a-con-artist.3.html)
So yeah play by the above rules and you will get hired, think its ‘cowboy’ recruitment?
It is but if your good your on 200k ++ a year.
I’m wondering what’s your opinion about how does it affect to have on your resume some great places to work at, but that might not be so well known in the US tech world as they’re not the usual Google, FB etc.. I’m talking about places like CERN, Fermilab, Max Planck Institute for Physics or the MIT Medialab. Do you think these matter as much as Google on a resume?
How does ‘old boring’ companies like IBM or Oracle would affect your chances of being hired if you have them on your resume?
I think the main difference is that the kinds of places you’re talking about are research-focused, and so are going to be appropriate for employers that are interested in more research-oriented candidates. This is a major divide between organizations – TripAdvisor and other top websites are typically looking for more software engineer / hacker types, less research-oriented types (Google being a notable exception). As for IBM and Oracle, they’re older, more established, and have the reputation for being more traditional organizations. Longer project cycles, more focused on consulting, less innovative (outside of IBM’s research arm, of course), stodgier, etc. Just my opinion, so usual caveats apply.
I have to admit complete confusion. This post does not resemble in any way, shape, or form my experiences or the experiences of my job hunting friends. It’s so far removed reality that it almost seems like a joke. I don’t mean to offend, but I really am shocked to read this view point. Literally there are only 3 or 4 paragraphs in this entire post that don’t completely contradict everything I’ve encountered.
My resume reads like a worst case scenario according to this post. I have some college education but didn’t finish as I felt it was a colossal waste of my time and money. Early in my career I jumped from job to job… almost never staying at one place more than 18 months (some of this was my decision to find better pay, others were just failed start-ups).
I don’t have any “side projects”. I do code in my own time when I want to learn something new but this isn’t something I advertise to employers because its usually not relevant to my job. Why would my VP care that I spent a summer learning DirectX 3D and tinkered with game programming when they are concerned with SQL database analysis and design? (Hint: they are not and I’ve had several tell me so directly.)
Yet every recruiter I talked to went ga-ga over my resume and they usually lined up phone interviews (I was looking for work across the country) within days. There was one week I had 8 phone interviews. Over a month I turned down several jobs because I didn’t think I’d fit in their culture, several more I did poorly the technical interview, and a few were just mistakes by recruiters trying to squeeze me into the wrong role.
In the end a head-hunter found a good fit. I had to go through 3 phone interviews, tooks some really stupid online technical assessments, and even flew out to meet the company reps in person.
The things they didn’t care about on my resume were the things I thought were most important, such as the fact that I lead a team of 6 people on a document imaging project that saved our client $7 million dollars in the first year of implementation. Or that software I wrote 6 years ago has 70,000 installs today and getting more daily.
So, in my experience, most of the points mentioned in this post don’t work. If some of your reader’s don’t fit the items you discuss they shouldn’t lose heart. Just review your resume and make sure it addresses what people are looking are for (that you have done… it doesn’t pay to fib) and practice your interviewing skills (very, very important… I missed out on a great opportunity because I hadn’t practiced interviewing prior to the call).
On the one hand, I should definitely clarify that this is the view from inside the company, not from the agency recruiter. Putting that aside, however, it does go to show that there are many paths up the mountain.
Hiring is not elitist unless that is something that is revealed outside the company. [As it is with a “high class consultancy”] Hiring is done to get the job done. Google doesn’t advertise the fact that “we have [name] working here.” Its a secondary benefit. Toughtworks advertises that you can get some of Martin Fowler’s time. Employers want to get stuff done.
I’ve been in recruitment and consulting for ten years…and for the most part, I think your article is very relevant. I would also further by saying that I want to know every application or language for every firm you’ve worked for, and determine your level of proficiency, not just now, but at the time of that employment. Why? My clients love “professional progress” and it makes it a lot easier to clearly define each and every aspect of my candidate’s technical and project management experiences. I use searches, sure…but unlike RL, I don’t only rely on the searches in CRMs. That’s ineffective, and I’d pass over some very viable candidates that way. That type of search via CRM is usually what we in the business lovingly refer to as “slinging flesh.”
What is entered into the CRMs should be edited and updated by the recruiter…and not used as some anonymous clearinghouse for resumes of candidates with whom I’ve never contacted or spoken. I always verify education claims, test (yes, I test my coders), and run background checks. It’s laborious…but my clients appreciate knowing that my candidates, and my firm, are committed to ensuring process integrity.
Dan, you’re probably right, as when I had to deal with corporate recruiters I’d keep receiving “average” resumes which hit these buttons, but weren’t what we were looking for at all. I wonder how many good candidates were rejected for no good reason?
I’m also told that these days most resumes are screened automatically… the resume and cover letter are submitted, and the web server gives each application a “score” based off how many keywords get hit. The trick is, to trigger as many keyword hits as possible.
Eg. the job description says “C# .NET experience a plus”, and you have none? Then write in your cover letter “Although I do not have much C# .NET experience… “… tada! keyword hit!
But I can say I have learnt one big thing in my recent job hunt – knowing somebody on the inside increases your chances of an interview 4x. Or more.
Completely agree on the insider connection.
We don’t do automatic resume review, and it’s hard to imagine how you could make that work effectively. There’s just too much subtlety involved. Maybe we should start building a neural net and feeding it PDFs…
Hello, juzt wanted to mention, I enjoyyed this post. It was practical.
Keep on posting!