I've moved my blog to jmcneil.net. This is no longer being updated!

Thursday, December 17, 2009

FizzBuzz, really?

So in reading  Kenneth Reitz 's blog, I came across the concept of FizzBuzz.  In short, it's a small little interview test that's requires a bit of modulus work.  Do programming candidates honestly have issues with this type of thing? Isn't that akin to a mechanic that can't change a tire?

Admittedly, I have trouble conjuring some of the "Comp Sci Basics" out of the depths of my brain when asked.  How often as techies do we do things like write quick sort implementations or doubly linked-lists from scratch these days?  But modulus math? Really?

This really beats the "why are manholes round?" style question, though.

I haven't interviewed in well over a year and a half.  I don't remember the last time we hired new programmers or engineers, so it's been even longer since I've done an interview.  I've always been impressed by organizations that put you in front of a workstation and step through small projects.  Not only does that quiz your technical aptitude, it runs you through an abbreviated development process.


Stephan Deibel said...

This doesn't surprise me much, having done quite a bit of interviewing in the past. Boy, was it a misery to be hiring during the dot com boom.

I used to ask people to tell me how they would approach generating a sorted word count for a 100MB text file. I wasn't asking for an actual program or anything terribly efficient, just a general plan or algorithm. Most failed at this.

I highly recommend asking such questions in a preliminary phone interview to save gobs of time.

What I don't like is when someone asks questions about syntax or specific libraries. Those things I would just expect people to look up as needed. Nor do I think asking mensa style IQ questions is of much value. Doing that under pressure of time isn't a good indicator of programming skill.

Jaime said...

It's a good question, as I really don't know if it really helps you or it's specially relevant...

In my personal experience, I was for about 3 years without programming (after 5 years programming almost everyday), I was looking for a job as a developer, and they ask me to do a test. So I was left in front of a computer, with a description of the program, and I get very very stuck on it... I had 3 hours to make it and I finally give up ashamed at about 4 hours... I talk to the interviewer to tell them that I REALLY know how to program and if they could let me show it other day...
Well, they rejected me (I don't blame them), but the next day I did the program in about 1 hour and a half at home... Driving back to home I remembered things like there is a funny tool called debugger that you can call typing gdb and help you a lot to get programs running without errors...

Well, in my next job (which, BTW, they don't even ask me to write a line of code in advance), I were highly comfortable programming, and my boss even congratulate me for my skills...

The main point is that I really don't know if it's valuable and a true proof of future work to get a person that knows that worst case in quicksort algorithm is O(n²), or how to swap to register values without an auxiliary registry instead of one that gets nervous or can't remember.

Maybe a general (very general) algorithm can save time as first contact point, but asking a quick battery of highly specific technical issues... I really don't know...

Tom said...

"" Do programming candidates honestly have issues with this type of thing?""

Yes, yes they do. Having been a working manager that had to do hiring, FizzBuzz was an invaluable tool. I didn't have time to screw around with a lot of touchy-feely culture-fit interviewing, and I really didn't care if you graduated from MIT or learned to code JavaScript by the View-source method.

I needed to know, in 10 minutes or less, "can you think?" A lot of people that call themselves developers are really little more than intellisense prompters, and only by the grace of "New" file templates, well-organized frameworks, and intellisense do they ever produce anything that even slightly resembles working code that does what was actually asked for.

You'd be amazed at the number of deer-in-headlights looks you get when you lay out the FizzBuzz challenge(without mention of the word modulus, now). I told them they could pick their language, I told them they could express it in PSEUDO-CODE(!). I told them we could just talk it out. Hell, I even let some candidates take it home and email me an answer.

FizzBuzz works far faster than any other method for weeding out the obvious pretenders. It doesn't mean someone is a *good* coder, but it does mean, usually, that they can at least think through a problem. I don't even care if someone gets it right initially. I care if they think it through. I care if they freakin' try.

But yes, this sort of basic problem solving is, indeed, a big problem for interviewers and hiring managers.