Lets face it, traditional interviewing techniques absolutely suck when it comes to hiring developers. You read resumes, you do phone interviews, technical interviews, culture-fit interviews, tests and in the end you basically ‘go with your gut’ and hire people who might be good and still get it wrong half the time. Not an ideal situation. This is because developers are craftsmen and no amount of talk will tell you how good a craftsman is at what he (or she :)) does.
Why Traditional Interviews Fail
How much preparation time do you give your people when you ask then to help with the interview process? Chances are it is probably not much (if it’s anything greater than 5 minutes you’re already ahead of the game :)), so your interviewers end up reading the resume literally as they are walking to the interview and I am not even going to talk about actually preparing some questions in advance. With this level of forethought, how likely are you to uncover anything you didn’t already know from the resume? Even when people have some preparation time, how much training have they got in interviewing techniques? Interviewing is a skill just like any other, having great social skills does not a good interviewer make :). People don’t know the right kinds of questions to ask and even when they accidentally ask the right question, don’t know what to look for in the answer they are given.
So, lack of training and preparation can be an issue, but you can address that, does that improve the situation? It does slightly, still, what do you do during an interview to test:
- learning ability
- interpersonal/teamwork skills (outside the interview process)
- ability to compromise and still achieve objectives
- working to deadlines
- depth of experience in the skills that you need
- breadth of experience in a multitude of other skills
All you can do is ask and take what you’re told as the truth. Not to mention the fact that many good people don’t do well when they are put on the spot during an interview process. Do you just discard those? You’re actually extremely fortunate if you’re interviewing someone based on a recommendation that you trust, but what if you’re not? Luckily, there is a much easier way to find out – let the craftsman show you what they are made of, get them to write some code.
No, Not On The Whiteboard
No, coding on the whiteboard or on paper, or even the 5 minute exercise on the laptop is not really coding. You need to put a craftsman into their element and then you need to step back and observe. Observe how they work, how they interact, how others interact with them. Seth Godin proposes that we need to work with our prospective hires for months, while that would be nice it may not be practical, but we don’t really need to go that far. I say one day can give you enough information to make a good decision. When you have a prospective candidate in mind, rather than iterating through rounds and rounds of interviews, put them into your team for a day and watch them work. After the day is over get your team together and let them tell you if you should hire this person or not.
The advantages of this approach are clear. You don’t need to assume culture fit (or do multi-choice psych analysis), you simply test it. You find out first hand from the people you trust if they would be happy to work with this person, after all that’s what they will have to do. You get a glimpse of the depth of your applicant’s skills as well as the breadth. You find out how easily and well they can grok a new system and absorb what they are being told. And you do all this in an atmosphere which is a lot less formal than an interview and one where a developer can feel a lot more comfortable. This is further enhanced if you ask your people to put the prospective candidate ‘through their paces’ beforehand.
Innovate To Attract The Innovators
Surely we can’t ask a person to spend a whole day working and interviewing before we even hire them. Can you not? Why not, are you not a compelling enough place to work? If your face is getting red right now – fix that first and then work on your hiring process. If you’re worried about inconveniencing a person by asking them to give up so much of their time for free, just imagine how inconvenienced you’ll be when you realize you’ve hired a crappy candidate 6 months too late. Be innovative and you will draw people who enjoy an innovative atmosphere, people who will be happy to take a day just so they can go through an interesting and different interview process. You need to become the kind of company that will attract the sort of employees you want to hire. Your interview process and the way you hire people is the first step. It is up to you if you want to take it.
For more tips and opinions on software development, process and people subscribe to skorks.com today.
Image by kevincole