Over the years I have been involved at various levels in the hiring practices of the companies I've worked with.  One of the most common tasks I have been taped with has been Technical Interviews, a review of a candidate's abilities in the technical arena.

Now, anyone who has ever tried to guage programmers will tell you, it is not an easy task.  Certainly you want to know they have a solid grasp of the programming model which you are hiring them for, but looking for only this risks hiring what I refer to as Grade B programmers. 

Grade B programmers are good people, smart people, you could be friends with them and never notice anything is wrong, because there isn't.  But Grade B programmers have learned how to code in their language of expertise.

Grade A programmers on the other hand are programmers which have learned how modern computers think about data and process it.  They are usually considered very talented with their primary langauge, but that is not what makes them valuable to their employers.  Many Grade A developers are familiar with several different languages.

The difference between the two is quite simple.  Given the same task, a Grade B programmer could tell you how to accomplish the task in their primary language.  Grade A developers will know the same information, but could also communicate the same process in nearly any other language you put them in front of.  They do not know how a Do While ... Loop statement works in Visual Basic, they understand the concepts of logical looping and would know how to find that information for any language they were asked to work with.

All of this is on my mind as I just got done with nearly 2 hours of written tech review which I was told going into that someone else had completed in 20 minutes a few days before.  I either have no chance of competing for this contract against a coding god (unlikely) or more likely the previous person simply did not actually answer the review.  The review spanned 20 questions, several in multiple parts, three of which required you to write code for the answer in Visual Basic or T-SQL.  The longest answer included the code for a simple class and several procedures written for a module, the shortest was one sentence ... 'The "Finally" block.'