The Design of Everyday things, also known as DOET is probably the most famous book ever written on user centered design. The ideas and principles laid out by Don Norman are as relevant today as they were in 1988, when the first edition was published. The book can be roughly distilled into seven key principles. In this article I’ll be taking a look at each one and offering practical advice about how they could be applied to simplify the nature of any task.
1. Use knowledge in the real world and in the head
The first principal seems obvious, it states that people learn better when the information needed to complete a task is readily available to them. For casual users this means the information needs to be apparent from the first time they use the system. Text should be kept to a minimum and the language used should be clear and concise. Alerts and prompts will help guide users through the system. Keyboard shortcuts and manual controls improve performance for expert users but should never be used as the only way of carrying out important tasks.
2. Simplify the structure of tasks
As a general rule we can’t hold more than 5 unrelated pieces of information in short term memory at once so it’s worth considering how you can ease the burden of retrieval for the user. Try minimising the amount of irrelevant information (75% of the English language is redundant) or reducing the number of choices. Use features like tooltips, undo and history to help aid memory.
3. Make things visible
This basically boils down to two things, execution and evaluation. The user should know how the task is executed and should be able to evaluate the outcome. Feedback is critical to this principle, always give good feedback to the user about the state of the system and make the outcomes of their actions as obvious as possible.
4. Get the mappings right
Mapping is the relationship between a control, whatever it effects and the resulting action of the control. Take the common lightswitch, it’s an example of particularly bad mapping, with no natural or logical connection between the switch on the wall and the light in the room. How many times have you tried to turn on one light only for another to come on? We need to exploit natural mappings, like placing a delete button next to the item it deletes, to help the user develop an accurate mental model of the system. Another way to strenghten the mapping is to use icons and graphics as metaphors e.g. folder icons for documents and the shopping basket for e-commerce sites.
5. Exploit the power of constraints
Constraints prevent errors from occurring by taking the control out of the hands of users. For example, if your application requires an email registration in order for people to use it then ask the user to fill in their email address twice and make sure both are being validated as actual email addresses. The user should feel that there is only one possible outcome of the action they are about to take. It may seem obvious but this is one of the most important principles in this list, when used correctly it guides the user seamlessly through the system.
6. Design for error
Assume that every error that could be made will be made, test for it and provide contingencies when it happens. Take the time to think carefully about your error messages, try to describe what’s happened in as few words as possible and make sure the user can recover from the error. Offering the user the ability to ‘undo’ critical actions like delete rounds off the user experience.
7. When all else fails, standardise
This can be rephrased as ‘don’t reinvent the wheel’. If there isn’t a quicker, easier or simpler way to carry out a task then tap into the learned knowledge and behaviours the user has already acquired. Designers of smart phones in the post iPhone era got heavily criticised for lack of originality but the problem had largely been solved and a successful standard already established by Apple.