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.
THE GOAL.1. On Being a Butler.
It's the Relationship, Stupid. How to Collaborate.2. Don't Impose: Respect Physical Effort.
Treat Clicks as Sacred. Remember Where They Put Things. Remember What They Told You. Stick with a Mode.3. Don't Impose: Respect Mental Effort.
Use Visual Elements Sparingly. Make Common Tasks Visible; Hide Infrequent Tasks. Give Feedback; Show Signs of Progress. Keep Preferences to a Minimum; Give Smart Defaults. Follow Conventions (Even If They're Not Your Ideal Design). Look for “Widgetless Features”.4. Be Helpful.
Offer Sufficient Information Early and in Context; Prevent Errors. Solve Problems; Don't Complain or Pass the Buck. Be Predictable. Request and Offer Only Relevant Information; Don't Mislead. Explain in Plain Language.
THE PROCESS.5. Setting Up: Understanding Users' Needs.
The Components of User-Centered Design. The Role of Hubbub. Understanding Users' Needs. Specifying the Functional Requirements. Prioritizing the Functional Requirements. Designing the User Interface First. A View from Engineering. A Word on Schedules. Getting into the UI Designer Role.6. Structuring the User Interface.
The User Interface Spec. Start with Tasks. Map Priorities to Design. Organize the Tasks into Display Units. Create a Task Flow Diagram.7. Laying Out the User Interface.
Communicating Visually. Example 1: Focusing on Frequent by Many Features. Example 2: Following Platform Conventions. Example 3: Designing for Multiple Platforms. Example 4: Handling Differences in Platform Conventions. Example 5: Removing a Feature. Walk Through the Tasks.8. Architecting with the UI in Mind
Network Architecture. Multiplatform Architecture. Palm Client Architecture. The Feature List.9. Initial Development.
Issues Resolved on Engineering Grounds. Issues Resolved on UI Grounds. Unanticipated UI Issues and Adjustments. Hidden UI Implications. Unanticipated Requirements. Designer Activity.10. Iterative Development: Observing Use.
Using Your Own Technology. Observing Others Using Your Technology. Running a Usage Study. The Effect of Iterative Design.11. Conclusion.
Example 1: Forum. Example 2: Shopping Web Site. Taking a Step Back.
APPENDIXES.Appendix A. Guidelines.
Respect Physical Effort. Respect Mental Effort. Be Helpful. Requirements Gathering. UI Structure. UI Layout. Architecture. Project Management. Designer-Engineer Collaboration. Development. Usage Studies.Appendix B. Recommended Readings.
The Problem. Usability. Understanding Users' Needs. Desktop Software Design. Web Design. Design for Devices. Graphic/Visual Design. Development Process. Networking. Usability Testing. Usage Studies. Other.Index.