Designing from Both Sides of the Screen: How Designers and Engineers Can Collaborate to Build Cooperative Technology
is a must-have book for anyone developing user interfaces (UI). The authors define a seemingly simple goal, the Cooperative Principle for Technology: "[T]hose who are designing, building, or managing the development of technology should teach their products to follow the same basic rules of cooperation that people use with each other."
In the first section, they show lots of good and bad UI examples from different devices (PC, PDA, photocopier, even a dashboard). Bad examples include confusing pop-ups, crowded menus, and hilarious error messages like this one from Yahoo! Messenger: "You are not currently connected. Please click on Login and then Login to login again."
The book gives succinct design principles like, "Treat clicks as sacred." A violation of this would be those dreaded "Do you really mean it?" pop-ups. Using a butler as an analogy, they point out that he'd soon be out of a job if he questioned, "Madam, are you sure you want me to answer the door?" A design guideline says, "If you have an Undo feature, there is no need to break the users' flow to ask them whether they really want the program to do what they just asked it to do." Design guidelines like this appear in the margins throughout the book for easy reference and are gathered in a handy appendix.
The second section goes into detail on the creation of the authors' own project, Hubbub, a multidevice instant-messaging application. Whenever a step in the process reflects the application of a design principle, it's called out in purple in the text. Thus, the book itself is an example of a cooperative UI that helps readers keep ideas organized as they read along.
Even if you're not developing user interfaces, you'll enjoy this book. There are many moments of recognition when you see just how flawed your favorite, or most hated, everyday application/operating system/Web site is, and how easily it could have been improved. And you may even find the principles of Cooperative Technology informing nontechnological areas of your life. The authors make politeness and the anticipation of the needs of others seem logical, feasible, and elegant. --Angelynn Grant
This book not only offers a sound and proven philosophy for designing and building software, it explores the dialog between designer and software engineer, and offers insights which when applied will facilitate a higher degree of collaboration between them. With a minimal understanding of the values and motivations of one another, these people are often team members standing in adversarial relation to each other. The authors provide background, model effective thought processes and dialogs, and give the readers clear, concrete principles and examples for design considerations. This book is written for both software engineers and designers and illustrates a process which they can use to dramatically increase the quality of both product and process.