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:
- The candidate sends his details.
- The HR department screens his resume.
- the development department screens his code.
- developers conduct a phone interview.
- developers might conduct one or several face to face interviews.
- manager conducts a final interview
- 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.