Bringing Design to Software

Terry Winograd
ACM Press, 1996

This book contains a collection of essays and interviews captured at a 1992 workshop on software design organized by Terry Winograd and others. Amongst the participants and authors are several individuals notable for their roles in the software industry: Mitch Kapor, David Liddle, David Kelley, Donald Norman. Each chapter is augmented with a profile of the author or interviewer and their work.

The very first chapter is Mitch Kapor’s "A Software Design Manifesto," in which he lays out the need to design software—​not just write it—​and draws an analogy with building architecture. There is an unbroken chain of thought between what Kapor shared at that workshop and this very site, dedicated as it is to software architecture. In the interview capture in chapter two, David Liddle discusses the importance of a user’s conceptual model in designing software as, ultimately, the user’s model and the software’s model must align (and be useful) to achieve a successful outcome. Daniel Jackson returns to this same topic some thirty years later with The Essence of Software, giving one the impression that it’s a topic that hasn’t received enough attention in the intervening time.

The remaining dozen chapters present various viewpoints and aspects of design, with varying degrees of connection to software design and architecture. Two stand out. First is chapter four on design languages, which are conceptually quite similar to architectures in that they describe the elements with which a design works, as well as their relationships. Arguably, design languages tend to place an emphasis on construction (available elements, and how they can be combined) and less so on constraints. Chapter twelve, by Donald Norman, is wonderful first-hand account of how an expert in design, and the author of The Design of Everyday Things, struggled to put theory into practice during a stint working at Apple and tackling the simple-seeming problem of how to design a common power switch for the Macintosh.

Like Software Architecture: Perspectives on an Emerging Discipline, readers are not likely to find much here that is relevant to today’s challenges of software design and architecture. And yet, it is a fascinating reminder that the role of these subjects in software development is one that has developed and evolved over time.



© 2024 by Oliver Goldman