This book comprises a fascinating collection of essays and profiles focused on a wide variety of definitions of software design and approaches to improving it. In the preface, Terry Winograd defines the goal: “to improve the practice of software design, through thinking about design from a broader perspective, and exploring how lessons from all areas of design can be applied to software.”
The book admirably achieves this goal while displaying an excellent understanding of the history of software design. It is a combination of essays from many different perspectives: designer, user, organizational support, architect.
In addition to the essays, a profile related to the general topic of the essay is included in each chapter. The use of the real-life profiles (for example, Kid Pix profile after the “Role of the Artist-Designer”) is particularly effective.
In many ways, it is also a primer for software designers. Winograd reflects the complexity of software design and in fact sees the true software designer as a Renaissance team member--able to "understand each discipline well enough to know when to involve relevant collaborators and how to incorporate the contributions of experts from other disciplines into the software-designs visions that they create."