On his blog, tickletux advocates the use of FizzBuzz to find developers who grok coding. However, this kind of test may also cause difficulties. What do you do if a candidate answers with the following (correct) C code?
#include <stdio.h>
static const char *t[] = {"%d\n", "Fizz\n", "Buzz\n", "FizzBuzz\n"};
int main()
{
unsigned int i;
for(i = 1; i <= 100; i++) printf(t[3&19142723>>2*i%30], i);
return 0;
}
What explanation (and action) would you choose?
- the candidate is smart and managed to avoid any explicit test (“branches are evil” philosophy): hired;
- the candidate tried to impress you and won’t explain the 19142723 in her code: she is likely to cause problems in the team: not hired;
- the candidate mind is so convoluted that she could not think of another solution: not hired
- the problem you gave the candidate was so boring that she solved it while having some fun; may be a real problem solver: hired;
- the candidate is perfectly suited for an embedded systems programmer position: hired or not, depending on the kind of software you want her to write.
If I were to interview people for a programmer position, I honestly don’t know what I would do with someone writing such a code in response to the original problem. I would probably assume that the programmer was bored and that she wanted to have some fun while doing her job, and I kinda like this idea.