19 December 2010 ~ 8 Comments

Things To Fix: Hiring Software Developers

This post is part of the Things I Want To Fix Series, in which I discuss a few things that are broken and I would like to fix.

At the company I work at, we make software. Well, we make media, more precisely a social network a.k.a the “Dutch Facebook”. So there is a lot of marketing and communication involved. But still, we need to design, write and maintain a fair amount of software. So, we also need to hire software developers.

And that’s where things start to go wrong. We hire a very small percentage of all the people we interview, and we’re not Google. Still, we are a bit picky, looking for the “smart and get things done” type, and we might prefer to say no rather than yes if the general feeling towards a candidate is “maybe”, as Joel Spolsky describes in his must-read Guerilla Guide To Interviewing. But the heart of the matter is that thousands of people apply to jobs they are totally unprepared for. We are looking for candidates with a thorough understanding of computer science 101. You must know your way around hash tables, B-trees, database modeling, network layers, concurrency models in servers, differences between programming languages at the machine level etc. So a lot of candidates looking okay on the resume totally fail at these questions. Or worse, they might even say it’s not relevant, or that if they knew we’d ask that kind of question they would have brushed the basics up.

We’re looking for PHP developers. But there are millions of PHP developers out there, and most of them would happily mix PHP and HTML together in a horrendous soup, and would send it to us saying this is the best code they have written. I’m not kidding, we actually do request a code sample from candidates, and what we see is often horrific. Most of the people can’t code, said Jeff Atkins. That’s something we have empirically verified. The thing is, it’s often hard to tell from the resume. All the people that make it to the code sample stage already had their resume screened by our HR department. They have a master degree, they know PHP and have X years of experience. That doesn’t matter, because they might not be able to write a program reversing a string. So X years of experience might very well be X years of irrelevance.

So, that’s a problem, and I think that any tool/platform/service that would ease the task of identifying and hiring great talent would be a fantastic win. It would save countless hours of engineers looking at thousands of resumes, hundreds of code samples, interviewing candidates over the phone and in person.

At work, we’re using Trac to keep track of the candidates. Trac was originally developed for software projects, but you can create a custom workflow for it and that’s what is in place. It’s not great but already better than sending emails around. So we can assign a candidate to people the same way we assign tickets (in Trac terminology, a candidate becomes a ticket). Here is more or less the workflow:

  1. The candidate sends his details.
  2. The HR department screens his resume.
  3. the development department screens his code.
  4. developers conduct a phone interview.
  5. developers might conduct one or several face to face interviews.
  6. manager conducts a final interview
  7. an offer is made

Trac is still very suboptimal for the task, and I can think of several ways to improve the experience:

  • an online testing tool: a developer would have to complete a coding assignment online. This is what Codility does, and I’m pretty impressed by the tool quality. We are starting to use it at my company, as a first selection help.
  • An integrated workflow manager, specialized for hiring software developers.
  • an audioconferencing solution designed for this purpose
  • A platform keeping track of code samples the candidates uploaded, in order to find the good candidates faster and as a starting point to ask some questions in an interview.
  • A LinkedIn plugin to search and find the hidden talent, the ones that don’t even look for a job.
Congrats! You made it until the end. You can follow me on Twitter.

8 Responses to “Things To Fix: Hiring Software Developers”

  1. Mats Andersson 19 December 2010 at 10:46 pm Permalink

    Wait, you want people who know hash tables, B-trees, database modeling, network layers, concurrency models in servers, differences between programming languages at the machine level etc. to progra in PHP? I think most of the developers that fit your description would prefer a slighty less horrendous language as their everyday tool!

  2. sergey 20 December 2010 at 3:41 am Permalink

    I do research in recommender systems and always look for ways to apply my work. I like the “A LinkedIn plugin to search and find the hidden talent, the ones that don’t even look for a job.” idea. Care to elaborate on how one would qualify as talent? I think you’d face the same limitations there as on a paper resume. How about etiquette? Best workers already have a job and a good one. This plugin would essentially simplify employee poaching. I think it’s best suited for something like monster.com or dice.com?

  3. Mark 20 December 2010 at 3:59 am Permalink

    I was like, at first, how are they going to find programmers that know all of that? And then PHP? really? PHP? People who know PHP and those things? I am sure they do exist.

    Part of the issue I see with laundry lists and thinking people who don’t know what you know means that aren’t experienced is that we all have different experiences. Look for people with ability and drive the right thought processes. Just don’t expect many to be doing PHP. I probably could do everything else on your list. But i won’t do PHP unless it is the last programming language on earth.

    I do agree that most people really can’t program. And even when they can program, they cannot see outside their box.

  4. Vivek 20 December 2010 at 12:44 pm Permalink

    Great post! Being a software developer myself, I can relate to the pain, hence built a tool – interviewstreet.com which helps in screening programmers. You can add custom questions too. Let me know if you would like to give it a try!

  5. tommy 21 December 2010 at 6:53 pm Permalink

    @Sergey, I’m not sure how to proceed on this one, but I think the days of the resume are counted :-) So maybe finding contributions to open source projects, comments to sites like stackoverflow could help finding great candidates. What do you think?

    @Mark it’s not really about a laundry list but more about making sure candidates got their fundamentals right. If you want to work at a company scaling to 10′s of millions of users, you need to know about algorithms, networks, databases etc. PHP is not so much a requirement. We use mostly PHP but it’s okay if the candidate doesn’t have experience with it. Heck, I actually didn’t have any experience with it before joining this company!

  6. tommy 21 December 2010 at 6:54 pm Permalink

    @Vivek sure, how can I reach you?

  7. Vivek 26 December 2010 at 7:19 am Permalink

    @Tommy Can you e-mail me at vivek AT interviewstreet DOT com ?

Leave a Reply