Software should provide people with a good initial experience. They should not be overwhelmed when they first use the software.

The more a person has to think about how to use the software, the higher their “cognitive load”. This should be as low as possible.

As a person moves from screen to screen, the software should remember what they might need. The person should not need to remember any details that the software could have helped with.

It’s also better if a person can recognise commands to choose from, rather than having to remember commands (e.g. a toolbar vs. a command line).

The software should be liberal in what input it accepts. For example, a person should be able to enter a phone number in any commonly-used format without problem.

This extends to other interactions. If a person moves their mouse pointer, the software should generously interpret what they want to do. For example, a menu should not close the instant the mouse pointer accidentally leaves the menu boundary.

The feedback a person receives as they interact should help them to understand what’s expected of them.

Good feedback like this inspires confidence in people.

Software should help people to avoid problems in the first place. If this is not possible, the software should fail gracefully. Progress should not be lost. The person should be helped to understand what went wrong.

Even if there’s no problem, a person should always be able to escape what they’re currently doing if they want to abandon it.

For the long term, software should help people to become better users.

Next chapter →

← Previous chapter

Back to the table of contents