

What’s up with FizzBuzz post commenters? - maus80
http://www.leaseweblabs.com/2015/05/fizzbuzz-post-commenters/

======
ColinWright
A question for the author.

In my personal experience, a significant proportion of the people applying for
programming positions have been unable to write programs. And as the original
articles about FizzBuzz say, not just unable to write big programs, but unable
to write even small programs.

I want to make sure I don't waste my time or theirs, so I need a quick,
effective filter to allow me to terminate an interview early, assuming they've
got that far.

Currently I sit them at a laptop, or allow them to bring their own, and ask
them to write a program in the language of their choice to perform a simple
task, similar to FizzBuzz. Depending on the position they're applying for I
will sometimes be a little more specific about the language, but usually I'm
pretty relaxed. If someone can program in any language then they've passed
this filter and we can get down to bigger issues such as system design,
decoupling, testing, logging, debugging, inter-process communications,
security, and more.

I need something that is so simple that it won't faze a nervous, inexperienced
applicant.

For information, we've asked some applicants to submit as part of their
application a program in Python that will, given a parameter of length _n,_
print all the strings obtained by deleting a single character. Thus their
program should print _n_ strings, each of length _n-1._ One applicant did so,
and then when asked in interview about his program he couldn't identify the
place the argument was first used. It turned out he'd had someone else write
the code for him.

I've also had an applicant refuse to do it, claiming to be too senior to be
bothered with such trivialities. He said he was an analyst and system
architect/designer, since that's what we were asking for. So I invited him to
perform a cost/benefit analysis of a trivial test to decide whether a reported
bug actually existed, and he ended up arguing that a test such as FizzBuzz is
the right thing to be doing. He then did it. And we hired him.

The FizzBuzz test is not intended to discover if the applicant can program.
It's intended purely to identify those who genuinely cannot program. At all.
And it's amazingly effective.

What would you suggest?

~~~
maus80
Hi Colin, I like your approach. I would also be letting somebody do a
programming exercise for an hour or so. With an Internet connection and a
editor and runtime of choice. I guess you could even consider to hire a
company/service to perform coding tests on applicants for you. That may save
you even more time.

~~~
ColinWright

      > I would also be letting somebody do a
      > programming exercise for an hour or so.
    

Aye, but that comes after the filter. In particular, with FizzBuzz there are
loads of follow-up questions you can ask to find out which way the applicant
thinks. For example:

* Can you clean the logic flow to avoid duplicating tests?

* What if the tests are actually very expensive?

* Did they combine the mod 3 and mod 5 tests into a mod 15 test?

* What if that's not possible?

* What happens if you unroll the loop?

* When might that be a reasonable thing to do?

Most of these are structural questions that have analogs in live code, and
serve as good starting points. They need to be adapted for the different types
of work.

Programming exercises are well and good, but if the applicant passes the
filter, and can discuss the various issues it raises, a "programming exercise"
is really a bit marginal. I'd rather move on to pairing with them on some real
code that they'd be likely to be working on.

Currently there's no service I know of that I would trust to run a coding test
for me.

I still start with FizzBuzz (or similar).

