On twitter today I was noticing that weâ€™re getting back into a debate about fizz-bizz or fizz-buzz as a tool for hiring programmers. I blame a combination of Jimmy Bogart and Rob ConneryÂ for starting things up again. Funny how frequently Rob is to blame for thingsâ€¦
I love Fizz-Bizz as an interview tool. For those not familiar with it the idea is that you have the candidate write a very simple piece of code the requirements for which are something along the lines of
For 100 cycles have the application print
Fizz if the cycle number is a multiple of 3
- Bizz if the cycle number is a multiple of 5
- The number otherwise
Thatâ€™s it. The output should look something like
The question is a very easy one and most people should be able to write an answer very quickly. I let people write it on the whiteboard, I donâ€™t care what language they use but they are time boxed at about 5 minutes.
Some people suggest that this is a form of gotcha interview questions. Meaning that either you come in knowing the answer already or you get lucky and figure it out. I disagree. This is super basic programming. The only tricky part is that it uses modularÂ mathematics but honestly everybody learned that when they did division in grade 3 and had a remainder. Fizz-bizz is not gotcha interviewing as far as Iâ€™m concerned because it is exactly what youâ€™re going to be doing in the job: figuring out problems and programming solutions.
Obviously fizz-bizz is not the end of your interview questions; answering fizz-bizz should not get you a job. It is the starting point and you use it to filter out the 10% or 15% of people who claim they can program but canâ€™t actually. Iâ€™m just guessing at the percentages but I have wasted countless hours in interviews with people who really donâ€™t understand the craft at all. If I can end the interview after 10 minutes instead of an hour then that is a huge time savings for me.
One incident sticks in my mind where I asked an interviewee to program a fibonacci sequence. In order to avoid it being a trap I explained, carefully, what a fibonacci sequence is and how to define it. We spend the next hour watching the poor thing flounder around trying to solve the problem. My mistake there was to allow the interview to go on for so long. We should have cut and run after 10 minutes.
The dirty secret about interviewing is that youâ€™ve probably made the decision about hiring the person in the first 10 minutes anyway. First impressions are very important no matter how you try to avoid jumping to decisions. Cognitive biases of which weâ€™re not even aware colour our impressions and lead us to seek evidenceÂ whichÂ supports our initial conclusions. Fizz-bizz has the advantage of being a more empiricalÂ test than most interview questions. Asking it first, or after a phone interview is ideal. Bogart suggests that it can be done as a take home. I donâ€™t like that because I think there is insight to be found in watching somebody complete the test.
During the test we watch out for thought processes and how smoothly the candidate abandons attempts which donâ€™t work. It also gives advanced developers the opportunity to show off by using TDD or functional programming to develop the solution. I live for somebody asking me the fibonacci sequence question so I can break out the closed form of fibonacci.
Fizz-bizz is a useful filter for saving the interviewer time and it is an indicative tests. There may be times when you eliminate somebody who would have been a good candidate but I donâ€™t think it is frequent. I highly recommend using fizz-bizz or a similar question in your interviews.