August 6, 2006

I hate everything Paul Graham writes about hackers (and love what he writes about everything else). I literally get angry every time I read the word “hacker” in one of his essays. I get angry because he highly respects hackers, and I want nothing to do with them. And it’s not that we disagree on the meaning of the word, either. We could line up ten programmers and he and I would agree on who are the hackers and who are not.

He respects hackers because they’re smart, they’re interested in hard problems, and they’ll keep working on those hard problems until they’re solved. I want nothing to do with hackers because I don’t have hard problems. I don’t have to write compilers or distributed databases. I have problems where co-workers write “WARNING:” in capital letters in messages to the user, effectively yelling at them. I have problems where co-workers write, “5 selected album(s)” because they can’t be bothered to write an “if” statement to conditionally remove the pluralization. I have problems where co-workers write the entire text of a dialog box in bold and don’t line up the title and the body of the message. Those are the problems I have, and hackers aren’t going to help me. In fact, hackers are the ones most likely to commit these errors because user interfaces bore them.

In any modern program, the user interface makes up the majority of the code, the work, and the design. Maybe 90%, I don’t know. The rest is either boring data structures, or the hard problems hackers are so fond of solving. Sure, I would benefit if a hacker helped me with those hard problems that make up 3% of my program. But I would benefit far more from a programmer who could write a dialog box that wasn’t full of jargon, and who knew how to present the options in a preference window so that their meanings are clear. I don’t need my “hard problem” (like the database query) to be 10% faster because of a fancy new algorithm. I need my animation to not flicker. I need the color choices to be tasteful and not (255,0,0). I need the mouse pointer to turn into an hourglass when the data is saving, and keep the hourglass visible for at least 250 milliseconds in case the save happens so fast that the user wonders whether the file saved at all when he hits Ctrl-S. Those are my problems, and I want hackers to stay as far from them as possible.

Paul Graham can like whatever kind of programmer he wants, but it infuriates me that he talks as though hackers are objectively the best. As if we programmers all look up to hackers and want to kiss their feet. Bleah. Get them the hell away from my programs.

My friend Brad Grantham also respects hackers, but he means that term in a different way. To him, a hacker is someone who wants to understand his trade a few levels deeper than everyone else. I like that definition, and I like those kinds of hackers. Brad points out that this is not restricted to programming. It could apply to doctors or car mechanics or photographers. My wife and I had this conversation with our first real estate agent:

We’d like to bid $650,000 for this house.
Well the rule is that you shouldn’t bid a round number. The competing parties are likely to bid a round number too, so you’ll end up in a tie and you don’t want that. You always want to be slightly off of a round number.
Okay, that makes sense.
So let’s bid $649,000.
Uh, but if the competing offers are likely to come in at $650,000, why would we bid $1000 less? Shouldn’t we bid $1000 more?
You know, that’s a good point.

She is not a hacker. She never considered the deeper reasons behind the “don’t bid a round number” rule. Our second real estate agent was much better; he had very well thought-out answers to all our questions (including telling us to ignore the “don’t bid a round number” rule because you can drive yourself crazy out-thinking the other bidders).

A financial advisor once explained to me that the difference between a traditional IRA and a Roth IRA is that in a Roth the interest is tax-free. Although it may seem that way, and that’s surely what he learned in school, that’s actually not a difference between the two, but you have to look pretty deeply to see that. He is not a hacker.

Brad further speculates that hackers are only happy when talking to other hackers, especially in other disciplines. So if you’re a hacker programmer you’ll be most happy if your doctor is also a hacker, and not someone who just mechanically repeats what he learned in medical school.

As true as this might be, it doesn’t help me if I can’t tell the hackers from the non-hackers easily. Should I ask each real estate agent why the “don’t bid a round number” rule exists? Or each financial consultant the difference between Roth and traditional IRAs? I’ve yet to find a good way to detect hackers at first sight, though this is an important step when picking out the people you want to interact with.