Title: The Design of Design. Essays from a Computer Scientist
Authors: Frederic P. Brooks, Jr.
Publisher: Pearson Education
Summary: Inspiring new book by Fred Brooks.
Coming up with sound, elegant, and easy to implement designs is not a
trivial matter, as Fred Brooks, author of the classic book "The
Mythical Man-Month", acknowledges in his latest book "The Design of
Design". In many disciplines — especially in software development -
the design process and how to produce good designs is relatively
poorly understood. Teaching the design process to students is even
more difficult. In the form of opinionated essays, Brooks attempts to
summarize what we know about the design process, how it has changed
over time, and how we can produce better and more elegant designs.
Brooks has decades of experience designing large systems and is well
known for his involvement in the design of IBM's OS/360.
Even though Brooks is a computer scientist, the book applies equally
well to many other disciplines outside of software development that
have a formal design process, such as architecture. A lot of his
examples come from other engineering disciplines and architecture. But
of course he presents the obligatory OS/360 case study as well.
The book is divided into six parts, the first three of which I
consider the most relevant and most interesting. In part one, Brooks
starts out with a discussion of models for the design process. In
particular, he presents his take on how the traditional Rational Model
(or the Waterfall Model — its offspring that is better known to
computer scientists) is not sufficient to achieve greatness in design
because it has a too simplistic and idealistic view of the design
process. Brooks then proceeds to discuss better, more iterative models
for designing, for example, Boehm's Spiral Model used in software
development, which much of the newer so-called agile methodologies are
based on. He argues that it is important to have a clear, concise
model that can be accompanied by an easy to understand graphical
representation, such as a diagram, in order to be able to teach the
design process to novice designers.
Part two of the book is about collaboration and team design. On large
projects there will usually be multiple designers that are forced to
work together to produce a single, coherent design. The major
stumbling block in team design is achieving conceptual integrity.
Brooks suggests that the most important way of achieving this is by
empowering a single software architect that has a high-level overview
and can make the final call on different, competing design
alternatives. I totally agree with this from my own experience of
working on large projects where multiple people held design
responsibilities. In this part of the book, the author also has a
timely chapter on telecollaboration and on the impact of modern
technologies, such as videoconferencing via the internet, on team
Part three, titled Design Principles, contains various essays on
budgeting, constraints, and user involvement in the design process.
There is also some interesting material on what Brooks calls exemplars
in design, i.e. the reuse of previous designs as a whole or in part in
creating new designs. My favorite chapter in this section of the book
is the one on good style. I find that a good design doesn't just need
to be coherent and functional, it also needs to be elegant. Brooks's
definition of design style is quite good in my opinion: "Style is a
set of different repeated microdecisions, each made the same way
whenever it arises, even though the context may be different". Well put.
Part four of the book, in which the author outlines his dream software
system for designing houses, is the by far weakest part of the book
for me. The presented "design" of the dream system is simply a list of
high-level features without going into any detail, which is pretty
pointless in my opinion. Part five gets more interesting again with
two essays on great designers and how to foster an environment at a
company to make designers great. In particular, I like the idea of
having designers "eat their own dog food", i.e. forcing them to use
the end products of their designs out in the wild (maybe in form of a
sabbatical at one of the system's customers). The book concludes with
seven chapters on various case studies. While these are certainly
interesting, they don't contain any additional essential thoughts on
the design process that weren't already presented in the previous
parts of the book.
"The Design of Design" is an excellent book from one of the pioneers
in computer science. Brooks's writing style is as elegant and
enjoyable as ever. While he dates himself in some of his examples, the
overarching ideas of the book are timeless and important. Not many
books have been written about the design of the design process itself
and this book is a valuable addition. It is mostly aimed at designers
and people that have spent some time reflecting on the design process
itself. The casual reader and people that are more concerned with
implementing designs rather than creating the designs themselves might
find it somewhat intangible. However, even designers in disciplines
other than computer science or software development can gain a lot
from the insights in this book.