Lars Wirzenius: Review, 2006
Tuesday, August 15, 2006
I hate debugging. I strongly prefer writing code that works to finding problems in code later. Because I hate it, I've never been good at it. I've never spent the effort to figure out a good, systematic way to find a bug. Instead, I've developed ways of avoiding them. In the long run, this isn't the smartest strategy: every now and then a bug slips through, and then I'm screwed. Worse, sometimes I need to debug other people's code.
David J. Agans's book Debugging is a gem. It crystallizes an approach to debugging that feels very good to me. In summary:
- Understand the system
- Make it fail
- Quit thinking and look
- Divide and conquer
- Change one thing at a time
- Keep an audit trail
- Check theplug
- Get a fresh view
- If you didn't fix it, it ain't fixed
None of these should come as a surprise to anyone experienced in programming, of course, but I've never seen them presented together, or so well. Agans's genius is not that he's come up with a new debugging method, but in presenting the obvious aspects of the debugging process in a clear, logical manner. Also, he has funny war stories.
The book is written in a fairly chatty manner, with many jokes. The style, or the jokes, don't get in the way, and they may help remember particular points better.
It's a fairly short book, at about 170 pages. I like that: I dislike the modern tendency of making computer books so thick and heavy that future civilizations will assume we used them for bricks.
It's only been a few days since I read the book. It's already made me a better programmer. Highly recommended.
Monday, March 06, 2006
Karl Fogel's Producing open source software: how to run a successful free software project covers many of the important aspects of free software projects, and concentrates on the parts that are different from, say, traditional in-house development projects.
The book covers technical aspects like mailing lists, bug trackers, version control systems, and other infrastructure necessary for a project to survive. It also covers more social aspects, such as how to deal with flames, forking, or how to employ developers for free software projects.
The book is written well, and is a light, fairly quick read.
Those of us who have participated in free software for a long time can find the book as a nice summary of things that have been learned over the years. Those newer to free software development may find many new things to learn. Most of us will find something to think about.
Despite the level of detail Fogel gets into, the book obviously only scratches the surface. Free software development is such a vast new territory that it is not realistic for one book to cover all of it. For example, this book does not cover conferences and other face-to-face meetings, which are important for keeping the community of free software developers alive.
With the caveat that it doesn't make further volumes on this topic unnecessary, Fogel's book really is worth the time it takes to read it. Recommended.