Imran, a developer and recruiting startup founder, writes about programmer hiring, including the widely cited FizzBuzz interview post and the etymology of "hacker".
HN links it mainly for the FizzBuzz screening post, and commenters debate whether many programmer candidates really fail such a simple test.
Worry not! Your gravitation is well-founded.
The earliest documented use of 'hack' is from "AN ABRIDGED DICTIONARY of the TMRC LANGUAGE", written in 1959 by Peter Samson. (TMRC was the Tech Model Railroad Club of MIT.) The definition was itself a playful example of what it was defining:
HACK: 1) something done without constructive end; 2) a project undertaken on bad self-advice; 3) an entropy booster; 4) to produce, or attempt to produce, a hack. HACKER: one who hacks, or makes them. Samson (2005): "I saw this as a term for an unconventional or unorthodox application of technology, typically deprecated for engineering reasons. There was no specific suggestion of malicious intent (or of benevolence, either). Indeed, the era of this dictionary saw some 'good hacks': using a room-sized computer to play music, for instance; or, some would say, writing the dictionary itself."
https://www.gricer.com/tmrc/dictionary1959.html
The 'malicious' connotation (e.g. breaking into someone else's system) dates from early 1960s phone phreaking. The claim that the malicious sense came earlier than the creative sense was made in 2003 by a researcher [1] who retracted it when this 1959 usage was pointed out:
"as soon as the 1959 citation was discovered I conceded that I was probably wrong about "hacker" originally having malicious connotations" (https://news.ycombinator.com/item?id=19416623)
I'm not sure Peter Samson would agree that it was "discovered", but never mind.
[1]…
> ... can't remember a simple trick like that
What "simple trick"? The original point of FizzBuzz is not to check that the interviewee produces hyper-efficient code that avoids repeating the divisibility checks (or, for that matter, to check that they repeat the divisibility checks and are able to defend why that's simpler). It's to check that they can write down any solution at all (within reason [1]). Doing that doesn't require any tricks; you literally just need to write down the requirements in the form of code. Unless you count for loops as tricks! I know the guy who came up with FizzBuzz [2], and he did so to root people who couldn't code at all, not those who weren't good at coming up with (or memorising) coding tricks. Or, if the "trick" you're talking about is memorising, verbatim, a simple for loop solution to FizzBuzz without understanding it, then that can be countered with small variations of the problem.
I agree that some interviewers pose questions that are too hard, which ending up testing ability to perform in an unrealistic situation more than actual programming competence. Of course this happened before FizzBuzz existed. Similarly some probably set a straightforward FizzBuzz and overanalyse details rather than worrying about whether it works (or worry about silly syntax mistakes, which are perfectly reasonable on a whiteboard).
[1] http://joelgrus.com/2016/05/23/fizz-buzz-in-tensorflow/
[2]…
My experience has been that "grok" as used by coders is synonymous to "understand", with the caveat that it's used to indicate in-group membership in the hacker community.
It is rarely used in the original, Heinlein sense.
For example, http://imranontech.com/2007/01/24/using-fizzbuzz-to-find-developers-who-grok-coding/ is titled "Using FizzBuzz to Find Developers who Grok Coding", but at best FizzBuzz can tell if someone had a basic understanding of coding.
At https://netbeans.org/bugzilla/show_bug.cgi?id=32241 you can read "Code completion does not grok implicit constructors". Here too it's used synonymously with 'understand'. Ditto with "The one where I grok jQuery" at http://www.chenhuijing.com/blog/the-one-where-i-grok-jquery/ .
I did find an example that is in line with the original Heinlein meaning; "How to Grok Web Standards" at http://alistapart.com/article/grokwebstandards uses it in the Heinlein way. My thesis is that 'grok' is often used to indicate in-group hacker membership. You'll notice that unlike the previous three, this explains the term 'grok'. This means it's not being used to indicate in-group membership.
> You have to make the question very easy to account for nerves.
What's funny is that this current madness all started with Joel Spolsky [0] complaining that "199 out of 200 programmers can't code", which ultimately lead to the development of the now famous "FizzBuzz" [1] (is it still famous?) which was meant to be exactly what you're describing: Just a simple test that you can write a program from scratch.
It's also worth pointing out that Joel was writing about an entirely different world of software engineering. In the shadow of the dotcom bust their were still loads of mediocre programmers hiding out in corporate dev teams just modifying existing files. But when asked to build something from scratch, they literally didn't know where to start.
0. https://www.joelonsoftware.com/2005/01/27/news-58/
1. https://imranontech.com/2007/01/24/using-fizzbuzz-to-find-developers-who-grok-coding/
> For those that don't know, Fizz Buzz is less an aptitude test and more of an attitude test.
The articles which popularised FizzBuzz as an interview question stated as a categorical fact that most computer science graduates or programmer candidates (one article even said 199/200!![2]) cannot do FizzBuzz[1,2,3] and were absolutely recommending it as an aptitude test.
I personally think this whole thing was simply untrue back in 2007 (or at the very least incredibly overstated) and we are paying the price for it with ridiculous 15-stage interviews as a paranoid response to some urban legend from ~20 years ago.
[1]: https://imranontech.com/2007/01/24/using-fizzbuzz-to-find-developers-who-grok-coding/ [2]: http://weblog.raganwald.com/2007/01/dont-overthink-fizzbuzz.html [3]: https://blog.codinghorror.com/why-cant-programmers-program/
> The entire point of FizzBuzz, as a programming practice, is to ensure the programmer does not try to write this exact code
No, the point of FizzBuzz, which is an interview practice is to make sure that the candidate has literally the minimum ability to translate a natural-language problem description into code.
There is no point using it for anything else. Not demos of languages or tools, not looking for a particular shape of solution, you don't even really need to let them finish writing a bug-free version of it. It is only to filter out the people who "learned a language" but cannot actually write a program. Which is unfortunately a ton of people.
https://imranontech.com/2007/01/24/using-fizzbuzz-to-find-developers-who-grok-coding/