Wednesday, November 18, 2009

Coders at Work, by Peter Seibel

Coders at Work: Reflections on the Craft of Programming, by Peter Seibel

Fifteen prominent software engineers are interviewed here, focusing on the craft of programming, on how these people approach solving everyday problems in our business. The book evokes a feeling of a computer science version of Inside the Actor’s Studio. Questions like “How did you start programming?” and “What books should every programmer read?” and “What is the hardest bug you’ve ever had to track down?” lead to very interesting conversations about both the person being interviewed and the industry itself.

Surprisingly, these luminaries don’t consistently agree with each other about what is and isn’t important when coding. For instance, Brendan Eich is not a fan of design patterns: “Patterns are really just flaws in your programming language. Get a better programming language.” In the next interview, Joshua Bloch says, “[A book] I still think everyone should read is Design Patterns. It gives us a common language.” There is an element of truth in both opinions, which sparked an interesting conversation at our book club.

I also liked Peter Norvig’s opinion on TDD: “I think test-driven design is great. I do that a lot more than I used to. But you can test all you want and if you don’t know how to approach the problem, you’re not going to get a solution.” There is (rightly) a huge emphasis on testing and software quality these days, and I find it refreshing to find someone that recognizes that all the testing in the world is useless if the software doesn’t actually do what it is supposed to.

Donald Knuth, Guy Steele, Jamie Zawinski (who sounds like an ass), Fran Allen, Brad Fitzpatrick, Dan Ingalls, Douglas Crockford, L Peter Deutsch, Joe Armstrong, Bernie Cosell, Simon Peyton Jones, and Ken Thompson are the other interviews found here. With such diverse backgrounds, common themes such as a dissatisfaction with the level of complexity and size of programs today become even more visible. While I do more (shudder) management than coding these days, I still found this fascinating and recommend it to anyone in the software industry.

First Sentence (From the Introduction):
Leaving aside the work of Ada Lovelace—the 19th century countess who devised algorithms for Charles Babbage’s never-completed Analytical Engine—computer programming has existed as a human endeavor for less than one human lifetime: it has been only 68 years since Konrad Zuse unveiled his Z3 electro-mechanical computer in 1941, the first working general-purpose computer.

No comments:

Search This Blog