4 ms·
I've never worked anywhere else since starting at my first company, but is FizzBuzz seriously that difficult?
by imbnwa 6y ago
I've never worked anywhere else since starting at my first company, but is FizzBuzz seriously that difficult?
- anonfornoreason 6y agoI regularly have people fail before introducing fizzbuzz, and then regularly pass on people that can’t do an equivalent problem that isn’t exactly fizzbuzz. Surprise, tons of applicants out there can’t actually code, it’s true!
- Veen 6y agoAs someone outside of the tech industry, this surprises me. I’m a writer, but when I wanted to learn to code, I did loads of coding exercises, including FizzBuzz. A couple of years later I could knock up a FizzBuzz algorithm in JavaScript or Python and probably other languages too—and I’m really not very good at programming, certainly not at a professional standard. Why is it such a Shibboleth in the tech industry?
- goto11 6y agoThe whole point of FizzBuzz is it is a trivial exercise. It could be any trivial problem. For some reason many applicants to software development jobs are simply not able to program even trivial stuff.
- orthoxerox 6y ago1. It got shared on a very popular website, the daily WTF. It's also short and silly, so it's easy to remember. 2. It's an exceedingly easy exercise meant out to weed out those who plan to learn to code on the job and hop to a new one when they are busted.
- krisoft 6y agoFizzbuzz is not that difficult. There are two twists in the original task description. But if we talk about fizbuzz—like tasks: The point is not to be difficult. There are people applying to programing jobs who seemingly can’t solve even very simple programing tasks in a language of their choice. I could not believe it if i would not have seen with my own eyes. Fizzbuzz-like tasks are there to filter these folks out. ( You might ask what are the two twists in the original fizbuzz task: - you have to know about the existence of modulo operator and how it can be used to test for dividibility. If you don’t know that one trick then fizbuzz is a lot harder for you. - If you are the kind of person who translates the human sentences of the task description to code word by word then you can get into a kind of garden-path situation where you have to backtrack once to succeed. What do I mean by that? You read “For every number dividable by 3 print fizz”, you write “if i%3==0: print ‘fizz’”. Then you read the next sentence “For every number dividable by 5 print buzz” and you type “elif i%5==0: print ‘buzz’”. Then you read “for every number dividible with both 3 and 5 print fizbuzz” and you might translate that to “elif i%3==0 and i%5==0: print ‘fizbuzz’” but that of course would never execute, you have to move the translation of this last sentence to be the first condition checked for it to have a chance. Not anything I would call really challenging, but it requires a certain way of thinking to recognise that this is a problem and to solve it. )
- phendrenad2 6y agoThank you. Something just snapped into focus for me. Fizzbuzz always seemed easy to me, because I'm a math nerd, but I just realized that the concept of a "remainder" isn't something people often use in their adult life. Also, the fact that programming languages have any sort of remainder operator might not come up in a typical web dev coding bootcamp or a self-taught programmer's education. Or even a college graduate could easily gloss over the boring math operators, eager to make cool stuff in the worlds of OOP and web dev. It's sad that Fizzbuzz is used at all. At present, using Fizzbuzz selects for people who either (1) Are math nerds or (2) Are already in the "in group" and possibly read HN. That probably makes a small contribution to the lack of diversity in tech.
- bendbro 6y agoYes, and a "crankshaft" isn't something universally understood by non-mech-eng's, a "flank" isn't something universally understood by non-mil-scis, and "leverage" isn't universally understood by non-financiers. That doesn't mean there isn't value in expecting new hires to understand those concepts. Implementing fizzbuzz successfully requires someone to have the most basic understanding of cause and effect, the ability to reason from that understanding, and the ability to reason abstractly. Nearly all forms of programming require that. So yes, fizzbuzz selects people in the "in group"- the in group of people who are actually potential programmers.
- phendrenad2 6y agoThat's another good point, fizzbuzz really tests two things, and people tend to only think of one of them. The first one everyone thinks of is "does the person know how to write a simple if/else expression". But the other thing people need to know is how to do math, and use programming syntax, they haven't thought of in potentially a very long time. It would be like testing if someone knows about a "crankshaft" in a job where they'll be exclusively working on Teslas.
- oneeyedpigeon 6y ago