The other day I stumbled upon Alan Skorkin’s blog post referring to three classes of software makers: computer scientists, developers, and programmers. His ideas make a lot of sense, and certainly everyone in the biz can relate to one or more of the listed classes. Indeed, its difficult to draw hard lines between what make up the differences between the three; the distinctions can be fuzzy at best. Especially since you could generalise the first two as a subset of programmer. But if we’re getting into specifics, there’s an important category missing:
Everyone in the business knows a hacker. And no, I’m not talking about those guys who stole your credit card last week; I mean the ones who obsess over how to optimise the call to every function and the number of instructions inside every inner loop. To borrow a definition from Henry S. Warren’s book Hacker’s Delight, “someone who enjoys making computers do new things, or do old things in a new and clever way. The hacker is usually quite good at his craft, but may very well not be a professional computer programmer or designer.” They’re awake until 3am during the week, checking their code for the worlds next-generation open-source network traffic visualizer into github.
I think there’s a lot of bad stigma around the word “programmer”, which isn’t necessarily accurate or deserved (maybe it doesn’t sound impressive enough), but to some extent understandable. If a computer scientist is a researcher, and a developer/engineer is the enterprise-software designer, and a hacker is the brilliant kid who can build a VCS in a few days, then a programmer is the person who inherits the rest of the work. The research is taken, the design is taken, and the wicked cool optimisations are taken, so the programmer gets to build and fix the mundane stuff left over.
Can someone who is a hax0r also be one of the other categories? Absolutely. Its all about the mentality, man (although having hacker on a business card would be pretty leet).