One risk of questions like these is that they lead you to candidates
who are clones of yourself – who know the same things, who agree with
you, who have the same experiences.
Since we all know that we are the best programmers in the world, we
may not see this as a problem. However, hiring clones of me is the
mono-culture risk – if we all approach problems the same, how are we
to approach problems in different ways?
I’ve been on both sides of the “I want another me” interview style. Once I realized that I was guilty of the “clone me” attitude, I’ve tried to dial back questions on patterns, OO trivia, and Agile practices a bit. I ask more open ended questions to try to bring out what they’re good at instead of just asking questions to find out if they know the same things I do. I can’t say that it’s foolproof and it’s terribly unscientific, but I try to remember to look for skills that would expand the team instead of settling for more of the same. One of the more frustrating interviews I’ve done was being interviewed by a C++ and SOA guru a couple years back. I didn’t get a single chance to talk about anything that I did know or had done.
Besides, for me communication and the ability to explain themselves trumps almost everything else in an interview. Facts can be learned. Expressing yourself and thinking logically are a bit harder.