You need someone, and you had spent enough time on the job spec, to identify the details of the practices/skillset you need. Either those skillset matches what you are doing right doing, or what you want to achieve. In this blog, I will go a bit deep inside to show a more deep insight to the both sides’ feelings.
Matching is a word I use for the technology knowledge and practice knowledge matching.
Knowing X,Y technologies/languages/platforms does not necessarily that person can fit into a set of software development practices, vice versa works true also.
A. If you are a market leader/first implementer technology company
If you want a .NET developer, implementing TDD; and all the interview went theoritical concept of talking, probably you have missed a couple of things during the way
You might chance of getting the right person that could fit in, but you were not aware of it…
Let’s say you are asking the candidate to write a piece of code to calculate 5! and s/he writes it. So was that all about? Writing a recursive function to calculate 5 factorial. This is the first homework/example that an undergraduate/high school level person can answer. And believe it does not tell anything about the candidate [unless the candidate takes it seriously and writes a framework for it.]
It should not be set of questions because some people are selling them, writing books, or Scott Hanselmann listed, actually not someone else’s question, it should presenting your domain, your own challenges!
Please do not ask/expect for output caching as a response to “if a page is getting lots of hits…” Ask types of caching and when to use which …
You have adversited the skillsets your team has, and the practices those you are following [either with best practices/or not].
Markhneedham argues that if you are implementing pair programming, why not you have pair-programmed interview?
I will keep the same argument, and continue:
– If you are/want implementing TDD, why not ask the developer candidate to write TDD tests beforehand the code. If you are insisting on 5! Give three pages of blank papers, and see the talent there!
– If you want to see how experienced the developer is, like how he/she can cover the code,
Ask to write some unit tests, if not all, ask her/him to list the tests s/he would do.
B. If you have one client on a specific industry or you are the enterprise company dealing with only one industry:
If you want to see how experienced on that domain/industry, ask an existing project and see how he/she would think about it. Do not ask 5!, unless you are doing lots of recursive functions, functional programming. Let’s say you are in retail, ask about how a checkout can work, how the delivery address can work best with sessions objects, or product page can benefit from new technologies like silverlight/flash, does s/he has any experience on those domains, and what does s/he thinks…
– For more senior positions, ask about the architecture for your latest project. Which patterns could be used to start a nice discussion to see the depth.
You may not need depth, the people asking questions may not be interested in details and whys, but after a fixed keyword to hear, who will stop listening after they catch that.
And HR can have hours of competency tests similar to GRE/GMAT/Belbin questions on top of that, so without seeing you, they will judge you with you test results…
I tried to tell the points where you should stay away…