No Fancy Name
Saturday, January 22, 2005
reading, on a road trip
Today I was a passenger on a road trip. That never happens—I usually drive. But today I didn't, and I packed a few books for the six or so hours I'd be in the car. I took my iPod, too, but I really didn't mind the CD of Scottish ballads, and ended up not using the iPod. Anyway, I didn't read a lot but I did read the first six chapters of Paul Graham's Hackers and Painters. [link to his site, link to]

I know, I know, I took a break from the stacks of books remaining for the upcoming semester, and the few other "fun" books I have to read. But I was just in the mood for essays, and his are really, really good. Most, if not all, of the essays in the book can be found on his web site, including the essay of the same name, "Hackers and Painters". I wanted to quote something from that essay that was particularly good, but the whole damn thing is good. I settled on this:
Part of what software has to do is explain itself. So to write good software you have to understand how little users understand. They're going to walk up to the software with no preparation, and it had better do what they guess it will, because they're not going to read the manual. The best system I've ever seen in this respect was the original Macintosh, in 1985. It did what software almost never does: it just worked.

Source code, too, should explain itself. If I could get people to remember just one quote about programming, it would be the one at the beginning of Structure and Interpretation of Computer Programs. "Programs should be written for people to read, and only incidentally for machines to execute."

You need to have empathy not just for your users, but for your readers. It's in your interest, because you'll be one of them. Many a hacker has written a program only to find on returning to it six months later that he has no idea how it works. I know several people who've sworn off Perl after such experiences.
This was part of a passage about how "Empathy is probably the single most important difference between a good hacker and a great one." That's really true.


job / books / new blog

04/04 · 05/04 · 06/04 · 07/04 · 08/04 · 09/04 · 10/04 · 11/04 · 12/04 · 01/05 · 02/05 · 03/05 · 04/05 · 05/05 · 06/05 · 07/05 · 08/05 · 09/05 · 10/05 · 11/05 · 12/05 · 01/06 · 02/06 · 03/06 · 04/06 · 05/06 · 06/06 · 07/06 · 08/06 · 09/06 · 10/06 · 11/06 · 12/06 · ???


Creative Commons License
All blog content licensed as Attribution-NonCommercial- ShareAlike.