The FizzBuzz Question


Yesterday a few colleagues and I were discussing the "FizzBuzz" test and how most developer job interviews do not involve actually asking the interviewee to write code!

Sure we'll talk about writing code and ask ridiculous questions about some clever nuance of the target programming environment to "really challenge the developer". This type of question will normally have a binary answer and if the developer has run into that situation then they might know; otherwise not. Would you hire the person if they nail the question? Will you truly think less of them if they don't? Honestly, they're pointless questions, please stop asking them. They will tell you nothing about the developer being interviewed, those questions say more about the interviewer than the interviewee.

Enter FizzBuzz and the many tests like it. Stop asking stupid questions in interviews and get the developer to do what you want to hire them to do: write code. Also, don't get them to solve the actual FizzBuzz problem, this has been done to death on the web, but develop your own test of this type. I also recommend that you have a follow up question that is a little more complicated but is more in line with the type of work you would expect the developer to be doing day to day, for example:

We would like you to build an application that searches for employee phone numbers based on the name of the employee.

Provide a diagram of the target environment and provide all the information that they'll need to solve the problem for you such as database schemas etc. Set a time limit and review the results together in the interview - the object is not necessarily to finish the code in the time (maybe), but to see what code was written and how. This is what you really care about when interviewing, that's what all the other type of questions are trying to figure out, right?

I'm not saying that you want all your developers to write phone book apps when they join you but you might want them to build web UI's and use Web Service middle tiers, something that this application type suggests and maybe even dictates, depending on your environment specification (I can post a full example for those who might be interested - drop me a note in the comments).

I also suggest that you base line the question; get some of the developers within your team to also take the test to get an idea of what is realistic to expect from an interviewee, without this the test is not as useful - if you have developers on your team that you would like to clone then get them to take the test, it will help.

Coding Horror Back to the original FizzBuzz test, for those that are interested I first came across the idea of this test via Scott Hanselman, but he credits the original discussion to Jeff Atwood of Coding Horror fame; if you read Jeff's post on the subject the true source is revealed there (and here for your convenience dear reader).

Like Scott, the thing I find most illuminating reading these posts is in the comments: the number of developer that feel the need to solve the problem and post the answer! Amazing!

No comments: