The Design of Design: Essays from a Computer Scientist by Frederick P. Brooks
Publisher: Addison-Wesley Professional
Fred Brooks is the author of one of the true classic texts on software development. His Mythical Man-Month is a tremendously influential book and one of the most frequently quoted texts on project management. Despite being written in the 70's, and describing a project from the 60's, the Mythical Man-Month hasn't lost a tiny bit of relevance. In a way, this is worrying for the software industry; we keep repeating the mistakes Brooks described 35 years ago over and over again. Sure, sometimes we dress them up in fancy new concepts and methodologies, but the underlaying fallacies are the same. To some extent this obviously indicates a failure to learn, but there's more to it. The Mythical Man-Month isn't a technical book; it's about people and people really haven't changed much since the 60's.
That timelessness is what made The Mythical Man-Month a classic and The Design of Design shares many of its qualities. Readers of The Mythical Man-Month will recognize many of the central themes as Brooks keeps building on the lessons from the IBM OS/360 project. It makes the book less novel than it could be. On the other hand, I believe those lessons need to be repeated and The Design of Design has a wider scope. If I had to put it in any category it would be processes. Most essays touches the subject and Brooks elegantly discusses his ideas in the context of different design processes.
The book starts of with a series of essays examining the most commonly used processes in software development. One of them is, surprisingly and illustrative for the software business, the waterfall model. Once introduced as an example of a dysfunctional process that can't possibly work, it remains in active use although many companies now claim to be doing Scrum or "Agile" these days. These initial chapters are some of the best in the book and offers many insights into the nature of design. Brooks then moves on to investigate better models. Brooks favors more evolutionary processes and ends with a recommendation of the Spiral Model. I found the discussion of the open-source model, or as Brooks labels it, the Bazaar Model quite interesting. It works, no doubt. But does it work in any context? According to Brooks, the Bazaar Model works because the designers are the users themselves. And he expresses strong doubt that it would work if they were not. More importantly, I believe that the discussion actually indicates the dangers of blindly following a certain process; a design process has to be chosen and tailored to the unique constraints and prerequisites of the project. Further, a process is never done. It has to evolve along with the product under development and adapt as we learn (this is one aspect I really like with methodologies like Scrum ).
Besides traditional processes, Brooks covers collaboration and design in teams. This is an area of increasing relevance. To Brooks, the challenge is to maintain conceptual integrity and this is perhaps the most practically applicable chapter. My favorite essays, however, are the two covering great designs. After spending the bulk of the book on discussing design processes, Brooks notes that most truly innovative designs (UNIX, Apple II, etc) were designed outside a normal product process. Simply put, product processes and great designs are mutually exclusive. The purpose of a product process is to avoid problems, not making great design happen. Rather, Brooks sees the role of product processes for follow-on products and as a mechanism for raising the level of design practice. At the end, he concludes that great designs come from great designers. Thus, a main concern should be how to find and encourage them, which is the topic of a follow-up essay.
Most examples so far have been on software. But in The Design of Design, Brooks takes a much wider scope. The book includes case studies on hardware design, architecture and the design of a book. The intent seems to be to capture universal ideas about design that applies to different domains. I believe that the general idea is correct but, at the same time, this is actually one of the weaker points of the book. While the essays are brilliant, some case studies failed to maintain my interest. That said, The Design of Design is well worth reading. As always when reading a really good book, I postponed my review for some time. I found The Design of Design both rewarding and useful on my first pass through it. As I re-read the essays a month later, my positive opinion was strengthened; just like The Mythical Man-Month , The Design of Design is a book that grows and has a wealth of insights to offer. I highly recommend both of them.
Reviewed May 2010