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
From the Back Cover
Written from the perspectives of both a user interface designer and a software engineer, this book demonstrates rather than just describes how to build technology that cooperates with people. It begins with a set of interaction design principles that apply to a broad range of technology, illustrating with examples from the Web, desktop software, cell phones, PDAs, cameras, voice menus, interactive TV, and more. It goes on to show how these principles are applied in practice during the development process -- when the ideal design can conflict with other engineering goals.
The authors demonstrate how their team built a full-featured instant messenger application for the wireless Palm and PC. Through this realistic example, they describe the many subtle tradeoffs that arise between design and engineering goals. Through simulated conversations, they show how they came to understand each other's goals and constraints and found solutions that addressed both of their needs -- and ultimately the needs of users who just want their technology to work.