Most of the time when asked to give technical interviews, I do a quick search to find some good thought-provoking and information-providing interview questions. Every single time I’ve come up with some of the most appalling lists of questions that are based on regurgitation ability or that are too insanely technical or trying-to-be-too-clever-and-tricky to be useful to the interviewer at all.
Now, I am not one to shy away from technical details by any means. In fact, I think our communication styles built up from “Corporate America” have guided us away from being comfortable with discussing any topic in any amount of depth. Most of the time, details need to be “taken offline,” whatever that means… but that is a discussion topic for another post.
My point is that interview questions should focus on the candidate’s problem-solving ability and not the precise knowledge of the C# 3.0 language specification, the CLR 2.0 specification, or deep knowledge of the implementation details of the ASP.NET stack. Unless, of course, you are in the process of hiring a developer which must have considerable experience in a specific domain of expertise.
Offer your candidate a set of very primitive “hey can we first determine you are in the right market” style questions relating to basics of development. Based on answers given, try to magnify the area related to the question with a more in-depth focused question. Iterate until the candidate can no longer keep up on that train of thought and then move onto the next subject area.
Diagnostic skills (i.e. the ability to debug a program) is a critical skill in this market. Tailor your questions to specific real-world problems you have had experience diagnosing yourself. Get the candidate talking in the terminology of the field to see if they know what they say they know. Try to evaluate where their diagnostic abilities lie according to the depth of thought evident (or not) in their answers.
When interviewing, ask yourself if you’d rather hire/work with a specialized-skill team member (e.g. the guy that knows everything about AS/400s or SQL or C#) or an overall “smart guy” able to solve real problems and to learn from experience and apply diagnostic abilities and logic. Focus your questions to the candidate according to how you answered this question.
I will soon be preparing a hierarchy of good technical interview questions since I need it for my own interviews. Also, since I haven’t found a list of questions on the Internet already, it certainly wouldn’t hurt to put one up if not only for my own future reference. Hopefully at least one other person may find it useful.