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
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.
About the Author
Ellen Isaacs is a technology design leader at AT&T Labs. She has been designing user interfaces for over 12 years at such companies as Sun Microsystems, Excite@Home, and Electric Communities, where she worked on systems for Palm PDAs, the Web, Windows, and OpenWindows. Active in the human-computer interaction community, Ellen has designed and studied the use of innovative applications that help people communicate, collaborate, and manage their information. She has a Ph.D. in cognitive psychology from Stanford University. Ellen can be reached at ellen@uidesigns.com.
Alan Walendowski is a software engineer at AT&T Labs. He has been writing software for 15 years, working for companies such as Sun Microsystems, 3dfx, IBM, and ComputerVision. A "general purpose" programmer, he has developed device drivers, graphics engines, distributed systems, and user interfaces on various platforms, including PalmOS, Solaris, Linux, and Windows. Alan has a bachelor's degree in computer science from Boston University. He can be reached at alan@uidesigns.com.
The authors have developed a Web site to continue the discussion started in this book. Please visit www.uidesigns.com to contribute your comments and questions.