we want to hire the best 1% of programmers. This is for a very good reason: the top 1% of programmers code 10 times as much code as the average ones, and yet their defect rates are half the average. This is a pretty amazing productivity difference, yet has been found consistently over the years e.g. by IBM. In order to try and search out these elusive people, we use a couple of different tests in addition to interviews. Firstly we use ability tests from a commercial company called SHL
. In particular their "DIT5" test, aimed at programming ability, proves to be very useful. We found a very high correlation between the test results and our existing programming team when we tried this on ourselves, and we now use it for all new recruits. Another is a software design test that we developed ourselves. We find that very few people do a decent version of this, which allows us to screen out a lot of people prior to interview, sacing time for all involved.
I actually find it encouraging that some people don't like to have to do such tests, thinking themselves above such things or (more likely) fearing that they won't do well. This is an excellent screening mechanism in itself - as a company we want the very best, and in my experience talented people enjoy being challenged at interview, rather than being asked bland HR questions like "what are your strengths and weaknesses" (yeah, yeah we know, you are too much of a perfectionist and work too hard, yawn). Partly as a result of these tests, as well as detailed technical interviews, we have assembled a top class programming team.
I am encouraged that a similar view is shared by Joel Spolsky, who writes a fine series of his insights into software, "Joel on software":http://www.joelonsoftware.com/articles/HighNotes.html
which I highly recommend.