This appears to be a fairly trendy book, given I've seen it in the office, it's kicked up a fuss on Joel on Software, etc. etc. My copy is actually a Christmas present from a friend - yay! The book is a set of interviews with famous programmers. Fifteen programmers, six hundred pages, and quite a lot of repetitive questioning, and even some repetitive answers.
The repetition, though tedious, is actually one of the more interesting things - seeing what's constant across these experienced developers. The most difficult to find bugs really are threading bugs, or maybe bugs in GC code. A surprising number of really talented individuals still debug using inserted 'print' statements, rather than symbolic debuggers. And plenty of people dislike C, as being too low-level for both the user and compiler, and being insecure. Ken Thompson still sees nothing wrong with it, though. ;)
In a world containing a decent number of really very good programmers, and so very many incompetent programmers, it's interesting to see what these people have worked on, and how elitist their world view is. The most interesting characters have worked at both very high and low levels, are comfortable with the full stack, and having worked on some really very hardcore stuff. Their views were the more interesting ones.
In comparison, there were a few people who are heading towards the 'methodology' end of the spectrum. That is, they care more about reproducable development processes for the talentless, rather than what really makes good developers. They tend to focus on a good system for people who use libraries as black boxes, rather than those who break the boxes open, or build them. They answered questions with what they felt should be the right answer, rather than what they really do. I suppose there's an important place in the world for such people, but... oh, it's so soulless.
I thought some of the most interesting characters were at the start and end of the book. It opens with Jamie Zawinski, who I thought was just some mouthy Netscape developer, but he's really done some cool stuff. Brad Fitzpatrick is the guy behind LiveJournal, so I was expecting tedious Web 2.0 guff, but he's the person behind memcached, and is really deeply into scalability, doing more hands-on work with a madly scaling system before he left uni than most people get in a lifetime.
The penultimate interview is with Bernie Cosell. 'Who?', you might ask if you're not massively up on your computing history. He's one of the developers who worked on the IMP - the first networking hardware of the internet. In many ways, he's in by fluke, as it could have been any old BBN developer assigned to this random project. However, he makes a great interviewee, as he goes into great detail about the way he works, and demonstrates far more skill than the abstract wafflers.
Finally, the book closes with an interview with Donald Knuth, who really is a complete hacker. Why he does literate programming is a bit of a mystery to me, given he's such a hardcore hacker. He really doesn't seem to believe in abstraction, mostly because it's less fun. The interview does, however give me insight into TAOCP. Nowadays, it seems like an awful choice of algorithms textbook, since there are much better ones on the market. However, in historical context it makes sense, and it still has more logic to it when you hear of the other planned volumes in the series. The nuttiness is explained by Knuth's obscurist obsession. It's not a data structures and algorithms series, it's a monograph on 'cool things I've found in the last half century'.
Other high points include the only interview in the book with a woman, which as well as covering Fran Allen's optimising compilers work, does at least inspect the issue of gender in coding. As I said, the book (at 600 pages long, with plenty of repeated questions and answers) can be rather tedious reading in places. For an experienced developer, it doesn't necessarily teach you a lot about the techniques available. However, the occasional passage shines through, and by standing back and observing the overall pattern of results, you can pull your own trends out. And from the point of view of the history of computing, it's pretty cool. Not everyone you'd want to hear from is there, and the missing people will surely depend on your personal taste, but still... it's good stuff.