By a developer for developers, the book is short, succinct, and can be read in a few short bouts of reading. Experienced developers will find that several user-centered design (UCD) practices have clearly been borrowed from, or absorbed into, classic software engineering practices.
Chapter 1 starts with “On January 9, 2007, a man quietly walked onto a stage and changed the course of technological history.” That had me hooked.
Chapter 2 explains Usability, Human Computer Interaction (human factors), UCD, user experience, and how they relate to each other. It then goes on to explain UCD by describing what it isn’t.
Chapter 3 is about working with users, knowing who your users are, understanding the different kinds of users, knowing when to listen to them, and when not to listen too literally.
Chapter 4 describes how to define a plan for your project. It starts with crafting a team mission statement. Project details are defined next with a title, description, stakeholders, and impact assessment. Importance of collecting user requirements without thinking about solutions follows next. That is followed by a discussion on collecting functional requirements, and how the application will solve the user requirements. The chapter proceeds with capturing data and workflow modeling, and ends with prototyping. Prototyping is also explained in greater detail in Chapter 8. Appendix A has a nice sample project template.
Chapter 5 starts with the importance of defining a manifesto or vision statement for an application. That is followed by a discussion on exercising restraint when adding features. The chapter delves into narrative, personas and scenarios, and their usage in the UCD process to refine the vision.
Chapter 6 delves into the need for creativity, and why it takes courage and hard work to exercise it. It discusses several ways for enhancing creativity, including studying how others do their work.
Chapter 7 delves into the study of design principles and their importance to UCD. It discusses the Principle of Proximity (Gestalt Principle), Visibility, Hierarchy, Mental Models and Metaphors, Progressive Disclosure, Consistency, Affordance and Constraints, Confirmation, Reaction Time (Hick’s law), and Movement Time (Fitt’s law).
Chapter 8 delves into gathering feedback for a new application using surveys, informal interviews, formal interviews, contextual inquiry, task analysis, heuristic evaluation, and A/B testing. Story boarding and prototyping as a means of visualizing the new application are also discussed in detail.
Chapter 9 discusses usability studies of existing applications as a means of gaining feedback. It details procedures and tools that may be used.
Every developer should read this book and absorb the practices described here, especially older developers who have been hearing about UCD but are not aware of its practices.