Finding strong programming team members is really hard. Unless you’ve already worked with someone, it’s tough to assess how strong a contributor they’ll be. Technical tests only show technical ability, and good people can often pick up those skills on the job, whereas jerks can have encyclopedic knowledge but destroy productivity.
At Apple they gave us classes on interviewing candidates, and the number one technique they recommended was drawing out past experiences in great detail. Start your questions with “Tell me about a time when…“, and follow up on that with even more specific questions.
For example when I was interviewing for people who’d be working heavily with OpenGL, I’d always ask “Tell me about a time when you ran into a graphics driver bug“. If they’d never run into that sort of problem, then I’d know their experience was pretty superficial. If they had, their initial description would usually be pretty high level, but I’d drill down into the details; “Tell me about how you narrowed down the cause“, “Tell me about the other people you turned to for help“, “Tell me about the solution you came up with“.
The power of this approach is that it’s really hard to avoid revealing a lot when you’re forced to describe past events in detail. If you’ve inflated your role or experience on your resume, talking about what you’ve actually done will correct that impression. If you can’t describe how you worked together with colleagues to track down that driver bug, then you’re probably a lone-wolf programmer. If you keep harping on the uselessness of everyone else involved, then I’ll guess you’re a misanthrope.
Interviewing is a tough skill to learn and there’s a lot more to it than this, but if you can remember “Tell me about a time when…” then you’ll be off to a good start!
Photo by FOTOCROMO