If you’re hiring software developers, you already know that most of the resumés piling on your desk are deadweight. Good developers get hired in a heartbeat, and so most resumés come from those that are passed over at job interviews. And many of them can’t write a for loop to save their lives. That’s not a testament to the skills of the average software developer, it’s just a statistic influenced by the shallow end of the pool.
If you try to interview all these people, you’ll never get to talk to the great candidates, someone else will make them an offer before you’re done grilling the deadweights. So you need a way to get to the better ones, or at least narrow the list to the candidates that can code.
Reginald wrote at length about the FizzBuzz test, and I followed his posts (always a pleasure to read) and other blogs that picked on the meme. The FizzBuzz test is a classical deadweight screening test. It can’t tell the difference between a decent but inexperienced developer, a skilled one or a rockstar. But it can save you time otherwise wasted talking to non-coders.
That’s all it’s design to do.
The FizzBuzz meme spread to several blogs and many posts, and in following it, I got an interesting peek into the psyche of the software developer.
People actually went and submitted their answers to the FizzBuzz quiz, in the comments on these blogs.
The optimist in me looks at this and smiles. Hey, turns out there are enough people who know how to use a for loop, and some of these solutions are ingenious. Even better, here are people who like to take on mental challenges and solve problems for fun. There’s no better way to sharpen your brain.
But then I wondered, is this a statement about the state of the software industry? Or at least how some people choose to develop software?
For starters, the FizzBuzz challenge is about weeding out people who’s sole contribution to your company will be in collecting a paycheck at the end of each month. If you find yourself reading software development blogs, at work or in your spare time, rest assured you’re far ahead of the deadweight. You’re playing in a different league. Even the inexperienced amongst you don’t need to prove that you can solve FizzBuzz.
We know that.
Maybe it’s just a sign of personal insecurity, that causes people to go on the defense and prove themselves in a public forum? Or maybe it’s the inability to think about the larger context, and instead try to find some menial work to occupy yourself? “Hey, this meta discussion about the recruiting process and interview tools is hurting my brain, so I’m going to sit in the corner and solve this little puzzle for a while.”
Ok, that was totally mean of me. But some people clearly missed the mark. One argued with the statistics that most job candidates can’t solve this simple problem. What evidence? The fact that co-workers — the ones who did get hired — can solve it.
So maybe code is a form of escapism from having to deal with the rest of society?
Now, I have to admit that I did not check every single answer, I browsed through most and paid special attention to a few that caught my eye. So perhaps I missed this and someone did post the ultimate FizzBuzz solution. But I didn’t see it, I’d appreciate a pointer though. I’m talking, of course, about the most efficient way to solve the FizzBuzz quiz, by virtue of requiring the least amount of time and energy.
I’m talking about this.
Click the link. Now come back. No, I didn’t not specifically mean Reginald’s solution. Any one of the solutions listed in the comments will do.
By linking to that post, I provided a solution to the FizzBuzz quiz without writing a single line of code, in under 5 seconds, in several programming languages, including some I don’t even know!
Now, obviously if FizzBuzz was a critical section in a loop serving a page on a high traffic Web site, I should be choosing more carefully the most efficient implementation for my particular platform. But it’s not. And if all the answers were downright horrible, I should worry about finding one that’s easy to maintain. But they’re not. They’re good enough.
And if something is good enough, you should just go and use it. There’s no point in doing it again, that’s just a waste of time.
The inclination to do something that’s been done before, and wasn’t a real problem to begin with — how do you explain that? I guess it’s the chance to put your stamp on the world, leave some legacy behind you.
Or maybe it’s like people who talk, but never pay attention to others. They’re too in love with the sound of their own voice.
Either way, coming up with a solution that is slightly better than the person before you, is proof of your technical abilities. But it also tells about your problem solving skills. That given the chance, you’ll prefer the feel good path over the efficient path. That you’ll easily let ego get between you and working code.
This has nothing to do with solving programming quizzes as an exercise to sharpen your skills. That’s a way to be a better developer. But FizzBuzz is not a tough mental exercise, it’s the simplest of programming quizzes by design. It intends to find people who can’t even code.
Now, if you ever find me using the FizzBuzz quiz for screening candidates, here’s a tip for you. Feel free to use it when the time comes.
The second person I’ll call for a job interview, is the one that will impress me with a short, space and time efficient, solution that I can understand in a few seconds. The last part is important because it proves the code is easy to maintain.
And the first person I’ll call for a job interview? The one who Googled the answer and e-mailed me a link to it. Because they proved they can find the shortest path from problem to solution, and they’re not afraid to use other people’s code.
Cheat Codes » Learning from FizzBuzz: the developer pysche and code reuse
FizzBuzz « danseagrave
//engtech
Fizzbuzzing bad for server bandwidth at Lunar Ocean