User-Centered Design is an approach to software design that encourages the active involvement of real users during all stages of the project. It helps ensure that we really understand the users’ needs, and it helps ensure that the product we design and build actually meets those needs.
Gould and Lewis’s seminal 1985 paper Designing for usability: Key principles and what designers think identifies the three key components of the UCD philosophy:
- An early focus on understanding users and tasks
Users should be involved in the project from its very inception. The designers and developers should have direct contact with actual users (or propsective users when a completely new product is being developed).
In order to be able to design a successful product, you must discover the users’ wants and needs, and you must understand users’ demographics, skills, knowledge, attitudes, and behaviors. For the design of hardware devices, anthropometrics (body measurements) may also be needed.
You also need to understand the tasks that the user will perform with the product, and that means understanding the relevant business domain. For example, if you’re designing a system to be used by bank tellers, you need to understand all of the tasks that bank tellers perform, and to do that you need to understand all of the terminology and concepts of retail banking.
In understanding the users’ tasks, you need to understand how the users are currently doing their work, and they might like to do things differently.
- Early and continual user testing with empirical measurement
Early on and throughout the project, users should be involved in validating the user requirements and evaluating the product designs. This is best done by constructing simulations and prototypes of the product, and observing users while they work with them. You can obtain qualitative data by recording users’ experiences and reactions, and asking for feedback.
Deeper insights can be obtained from quantitative data. You can define metrics for usability factors like learnability, efficiency, and error rates. You can then measure and compare users’ performance across different versions of prototypes.
Continual user testing helps reveal usability problems and defects in your designs and prototypes, and helps you identify improvements.
- Iterative design
The product should undergo a repeating cycle of design, modification, and testing, to fix identified problems, and to incorporate changes resulting from gaining an improved understanding of the users’ requirements.
“Build it right the first time” is a nice but unattainable ideal. For complex products, it always takes several tries to get it right. Iterative design strategies recognize this fact and ensure that the product is continually improved and fine-tuned so that the end product is indeed “right”.
A later 1991 paper by Gould, Boies, and Lewis added the following fourth aspect:
- Integrated design
The various aspects of the product that contribute to usability – i.e., the conceptual design, user interface design, documentation, training, help system, etc. – are all tightly interrelated. They should therefore evolve together in parallel and be under the same management. It is too problematic to attempt to manage them separately and sequentially.
All of these factors sound obvious and self-evident, and yet they are rarely done in practice. In later blog posts, we’ll discuss how to structure projects so that they involve users and employ an iterative approach. We’ll also explore techniques and practices for collecting user requirements and doing prototyping and user testing.