Hiring Awesome People is Hard
Note: In case this is not clear, this blog post reflects my own opinion and experience, and is not an official statement on behalf of my employer.
Since I started working at Mozilla headquarters, my job interview volume has drastically increased — both in person and phone. As I had rarely conducted any job interviews before that, it was as much a learning experience for me as it was a critical part of their job search for the applicants. Initially, I was perhaps just as nervous as the interviewee.
The experience was mixed: Sometimes, candidates come up with surprising answers, elegant solutions to simple problems — or even just show that they have grasped a problem and its solutions from beginning to end.
Perhaps just as often, however, the experience is also increasingly frustrating. One of the worst things to notice is that the candidate can’t code. Seriously? Yes, seriously. Given a relatively simple programming question, they fail to come up with a solution either at all, or worse, they produce a solution that reveals shocking gaps in their knowledge of basic algorithms, understanding of code, or other qualities you would hope for in someone who makes software for a living and claims to have done so for awhile.
Another thing that disappoints me in candidates is when it turns out, they don’t have professional goals. Sure, you can’t be prepared for every question in the world. But if you are looking for a job, yet you are unsure where you want to go if you do get the position, how can this possibly convince me that you are the right person for the job?
For our web development team, this makes me wonder: Do people consider “web” in front of “developer” to be a weakening qualifier? Or more generally, does software engineering have a secret reputation of not being a real profession, with real professional requirements?
Mozilla is perhaps one of the fewer companies without a strict degree requirement: Some of our brightest minds have no formal college education, yet are incredibly successful and valued members of our community. The reason why this works out is that the Mozilla project, with many more volunteers than employees, is a meritocracy: If you do awesome things, people will respect you and turn to you for more awesomeness. If you aren’t doing a good job, your impact on the community will be minute (and stay that way).
Maybe, though, this is sometimes mistaken as an excuse not to be really, really good. It’s not about knowing everything there is about writing software. But if they are applying for one of the best positions in the industry, where they have to earn their respect rather than show off their formal credentials, shouldn’t they at least try a little harder?
If I could give a few tips to applicants across the Web industry, to perhaps raise their chances of getting a job, and to improve the interview experience for both interviewer and interviewee, I would say:
- Know your basics. There is a reason they teach algorithms and data structures very, very early in college. And complexity and logic. The works. Even more so, know your Web. If you can’t explain the nature of an HTTP request, how can you know your own applications by heart? If you don’t know how to secure a web application, how can you protect the privacy of your users?
- Know why you’re awesome. When an interviewer goes home that day, they want to feel excited about hiring you. Give them a reason. That’s no invitation to be snotty — but one to not hold back on exciting things there are to know about you professionally.
What’s your experience with interviewing and hiring people? What are the things you want to see in an applicant? And what have you done to find the people who are right for you? I am interested in hearing your opinions in the comments.


I’ve had frustratingly similar experiences interviewing candidates since I graduated from college. I’ve also heard the same stories from just about every other good developer I know. It’s simply too easy to list your experience on a resume and look good.
The first thing I want to see in a developer is the ability to communicate well. Good body language, clear, concise answers, asking questions for more info, etc. If a developer can’t communicate well during an interview (when they should certainly be trying extra hard!), they won’t be able to when working. Usually reading someone’s blog will tell you how well they can communicate.
Second, I want fundamentals, just like you listed. HTTP requests, headers, cookies, basic JavaScript (no jQuery allowed!!!), CSS, DOM, etc. It’s amazing how far you can get when you rely upon frameworks to do the work for you. The problem with that is once something breaks you’ll have no idea where to start. Again, a blog and sample code helps here to tell how in-depth their knowledge is.
Third, I want passion. Please be more than a warm body! I want to work with people that care about what they are doing. People that want to create amazing code and products. This can usually be determined over the phone.
To find the right people you have to know where to look. Niche job sites that attract industry leaders (Stackoverflow, 37 Signals, Ajaxian, Joel on Software, Authentic Jobs, HN Hackers). Meetups, SHDH, conferences (presenters are usually the people you want to talk with ). Look for the technology blog posts that are tweeted and linked to on Hacker News.
And don’t forget the best programmers are already employed.
I love this blog post, since it largely matches my experience.
I’ve done a fair number of interviews now (relatively new experience for me as well). My experience thus far matches yours though I’ve seen a heavy weight towards “can’t code”. Perhaps an east coast vs. west coast thing? I’m not sure.
It’s shocking to me how mediocre some are. Their resume’s will be rather packed with technologies they worked with etc. etc. You often think “this guy/girl will be a good one”. Then on the call, you wonder why they even bothered applying? Even the very basics are beyond them.
Even worse are the ones who try and fake a technical phone interview. I can hear them type. I know they reading one of the top Google search results (when I hear them type, I search too, so I know what they are looking at).
What’s also interesting is that quite often they do have CS degrees. How do you get a CS degree, and write something like “extensive javascript” on your resume yet admit to only having a vague familiarity with OOP? Problem solving skills seem immature at best.
School “quality” seems to make no difference. Public vs. private, elite vs. easier admission. I don’t think it matters at the end of the day.
To be fair, I don’t have a CS degree myself (I was Business Admin / MIS), so I don’t think my analysis of someone is overly harsh or looking down upon them. I don’t have an academic background in lots of what I work with.
Very interesting stuff. I wonder if this is a trend, or something that’s always been constant. I’ve never really been able to get a good answer on that.
I don’t think this problem is unique to software development. Rather, I think software development hiring is unusual in that it’s easy to test basic applicant competence with relatively simple tests that closely match the actual job.
Many professions rely completely on conversations with the applicant, without any empirical method of screening, and I strongly suspect that they simply hire more people of questionable competence.
That said, I think some software developers would also be surprised at how many companies exist where you can talk your way into a coding job without ever being tested on even basic coding, especially when it comes to web development.
Hi,
please use a readable font. The used font (DroidSerif?) is horrible.
Interestingly, I made some pretty bad experiences being on the other side – I actually applied at Mozilla twice (second time because I was naive to believe that things would go better this time). Both times I had a long series of tiresome phone interviews with people who seemed ill-prepared. I mean, even if they don’t bother using Google – my experience is there on my resume and that experience should mean something to them, they can ask specific questions. No, it is always the same generic questions, every interviewer trying to figure out whether I can code (hint: I can – my code is easy to find and should tell you more than my answers). I admit that I don’t have much interviewing experience myself but I always started by doing a Google search – have a look at the candidate’s achievements and use the interview to figure out whether these are representative. Btw, both times I was turned down for reasons that were known up front – leaving me with an impression that these interviews were an absolute waste of time.
On the other hand, my interviews at Songbird were quite the opposite – for most part, the questions were about what experiences I made with my project and how I would apply these experiences to Songbird. From what I remember, the real low-level questions were only about C++ (I stated up front that my C++ knowledge is rather theoretical and I don’t get to use it much). Granted, for Songbird interviews I was there in person, for me this is much easier than a phone talk. And I didn’t fall for the “no professional goals” trap (I am interested in too many things Mozilla is doing and it is hard to restrict myself to one particular area). Anyway, I got hired.
Great blog post! You’re quite right about Mozilla, web development, and our challenges finding (more) awesome people.
Being on the other side of the boat, I can relate much more to the people you are interviewing, and I can see where you are failing as an interviewer.
Some of the comments to your post exemplify my thoughts, so I will start from there.
“If a developer can’t communicate well during an interview, they won’t be able to when working.”
This is nonsense. I have a much easier time thinking and coding on a computer by myself, then on a white board with two to three people glaring at me from their seats with only a few minutes for each problem. I have very little anxiety in phone interviews, so I normally do extremly well in those. But in person (after a long flight the day before), I deal with so much anxiety that I can not sleep the night before the interview, and I can barely articulate my simplest thoughts. I have zero anxiety when I am working in the job, since I am on a level playing field (and get to think about problems before I walk in the door), and my work always speaks for itself, so I am not at all worried about comming across as an idiot, since I know I am not.
“Don’t forget the best programmers are already employed.”
This is ignorance. Nobody knows what a person is dealing with in their lives. I took a year off after I graduated to travel and spend time at home (since I left home to go to school), and after which I went through a grueling interview process with Apple over a month period (10+ phone interviews, and three day long in person interviews). Not at any point did someone ask about my personal life. I doubt any of them even cared that my mother was at home dying from cancer (and she was completely against me going to work for Apple, and would battle with me over it). They rejected me, even though I doubt that even %50 of the people interviewing me where arguably better programmers than myself. The interviews even ended up costing me a few hundreds dollars (that could not be reembursed, and which was being taken from a constant amount of money), and it completely took up all of my time, so much so that I blew off most of my other interviews for that month, so I could focus on getting a job with Apple.
You seem to miss the concept that people excell when given opportunity, but not everybody had the same opportunities presented to them.
I have an honors bachelor in computer science, and a year working experience, and now I am working on attaining my masters. But you actually think other people are better programmers than me just because they are arrogant, and I am not? I may seem arogant in respect to this post, but I can assure you I take the opposite approach of arrogance.
Sorry if this post does not make sense at points, I have to go to class, so I could not read it over.
Thank you for all your comments so far! What I find really exciting is to see both sides of the story here. It is good to see that my experience is not limited to myself and other people have made the same observations. On the other hand, reading about the experience of people who have applied and for whom the process has for some reason or the other failed, is very helpful as well!
My chief concern is to find great people to work with. And that is, certainly, as much the candidate’s job to be awesome as it is the prospective employer’s job to make the hiring process as straightforward as possible, so good people don’t get turned away in error.
Klaus: What browser, on what platform, are you using? Can you give us a screen shot showing how the font looks to you? Droid Serif is actually one of the most readable fonts I know.
I went throught interviewing a bunch of candidates (contractors) for an open position in the Enterprise Java environement recently.
The profiles/résumés of the candidates were *all* pimped to fit the position. So, on paper, each candidate looked like the perfect match. But you’ll find that out in the very first minutes of the interview when you ask a candidate to explain to you what they did in their last project, using words that their grandma would understand. Most of them couldn’t explain what they were working on or struggle a lot to do so.
I had a candidate who wasn’t familiar with EJB but could explain the concepts very well. He had very profound experience with similar frameworks so I gave him the chance to prove that he could learn new stuff on the job. He did, and it was great to work with him. He was honest in the interview (which I appreciate very much), telling me that he hadn’t worked with that particular technology in the past. Without waiting for me to jump in there he continued: “… but as far as I know, it is very similar to [other technology] which I used in [project] to achieve [...]“. He was answering my questions before I asked them and made a very bright impression by that.
As you mentioned before, I’d like to see passion in an interviewee. If they are excited about what they did in the past (doesn’t even have to be their most recent project), they will also be in a future project.
I understand if the candidate is really nervous during their job interview. I am, too. Every single time.
As an interviewer, I try to make them calm down by starting with a little small talk. Have them decide for the topic. They’d like to talk about the Web framework they’ve tried recently just for fun? Sure, go ahead. They’d like to tell you about that project at university? Self-controlling robots? See the glare in their eyes when they start talking? They forget the time when they go on and on? See? Passion. That’s what I was talking about. Are they still nervous? No. So now you can focus on the questions you wanted to ask.
This little tricks takes just a few minutes of your time but it eases the interview process soooo much!
I’ve read a bunch of good tips on how to interview people in Joel Spolsky’s books. You can even find a few of his articles on his web site: http://www.joelonsoftware.com/articles/GuerrillaInterviewing3.html
I think Joel’s position can be summarized in two sentences: “You want to hire people that are smart AND get the job done. Don’t bother hiring anyone else.”
@Jean Pierre: I blame recruiters. People *have to* tailor their resumes because that’s the only way to get through HR to somebody who actually knows what that stuff is. Fortunately, I only had to deal with recruiters once. The phone interview went like this:
“Do you have experience with JDBC?”
“No but I used …”
“Doesn’t matter, I only need this answered.”
And the same thing for two dozen other Java-related technologies on his checklist. So in order to get to somebody who can understand that your lack of experience with these particular technologies doesn’t mean that you are not suitable for the job you have to lie to the recruiter.
Great post! I’ve had a really tough time with the interview process, through-out my career. You post has inspired me to work on some of the weaker aspects of my technique.
Ultimately it’s a bit of a crap-shoot. Some great candidates get rejected and some weak candidates skate through to their new seat warming gig. At some companies this is just a total blood bath and highly political.
Hopefully getting a little bit better at interviewing will increase my success rate at filtering candidates.
Thanks, Austin! If there is one thing this discussion has shown me, it is that there is as much to learn on the side of the interviewer as there is on the interviewee’s.
Some necessities:
1. Willingness to cooperation and communication. Unfortunately, in the group of coders you find more people who want to do things on theirs own (and it’s driving one mad if you have to tell someone several dozen times to fix an API or database scheme until you see it done after months).
2. Willingness to learn or follow coding styles. Finding the raw gems is difficult and if you insert a gap between interviews of, let’s say two weeks, you can check in the second interview (with a different problem which needs some similar understanding and adoption) if the applicant deepened his knowledge.
3. Do the best, not the best for you (like not automating something because you do it manually at the moment or not sharing knowledge/access with coworkers). = “Passion”
About the font problem: The text looks good with nightlies, but in 3.6.* like ‘washed’ (problem with anti-aliasing, don’t know a bug number, Windows XP SP 3 32-bit).
Completely off-topic… Wladimir, I just found out that you’re the author of the Adblock Plus add-on. I <3 it.