Users interact with software by performing physical actions with input devices such as keyboards, mice, touchscreens, and microphones. Graphical user interfaces present controls like buttons, sliders, and drop-down boxes, and the user performs actions on these controls, either directly by touching on a touchscreen, or indirectly via mouse clicks or keyboard keystrokes. Non-graphical interfaces generally rely on entering commands to perform actions.
But how do users know which actions to perform to get their work done?
The usual model for thinking about this involves a hierarchical breakdown of work into goals, tasks, and actions.
A user usually has a high-level goal in mind of what she wants to accomplish with the application. She may want to write a letter, or retouch a photograph, or have a video chat with a coworker, or pay her credit card bill, or compare prices for vacation packages. Goals are statements about what we want to achieve, rather than how it will be achieved.
To accomplish a goal, the user usually has to perform some number of steps or structured activities that we could call tasks.
To perform a task, the user will perform actions in the interface. Actions are operations such as pressing or clicking on a button, entering text, selecting something from a menu, dragging-and-dropping an icon, and so on.
Let’s imagine that a user of a word processor has the goal of writing a letter. This goal might be achieved with some combination of the following general tasks:
- Creating a new document
- Entering text
- Editing and proofreading text
- Adjusting page formatting
To accomplish the task of creating a new document, the user might perform the following series of actions in the interface:
- Click on the “File” pull-down menu
- Click on the “New” menu option
- Enter a document title in a dialog box
- Click on the “OK” button to close the dialog box
Or alternatively, a shortcut keystroke Alt-N might be used, or perhaps the user might open an existing document and re-save it with a different filename.
It’s important to understand that goals can often be achieved by means of various different tasks, and tasks can often be achieved by means of various different actions. And while there may be some cases where tasks can be achieved by following a strict step-by-step sequence of actions, in many cases, such as entering and editing text in a word processor, tasks are more of an ongoing or iterative process, and tasks might become intermixed as work is done towards reaching the goal.
An experienced user will usually know what tasks are needed to accomplish a goal, and what actions are needed to accomplish each task. Experienced users have a well-developed mental model of how the application works, with this knowledge having been acquired by experience, by trial-and-error, and in some cases, by reading documentation or by having undergone training.
New users learning how to use an application, on the other hand, are usually uncertain about how to accomplish tasks, and may even be uncertain about what tasks are necessary to achieve a goal.
When first trying to accomplish a task, a user will explore and inspect the interface for clues. Once she identifies a potential action that will help move her along the path to accomplishing the task and achieving the goal, she will execute that action, and then observe what happens. If the results of the action matched what she expected, then she will continue on with the next step in completing her task. If not, then she may try an alternative action — or she may choose to modify the task or the goal. She will continue this cycle of searching for suitable actions, choosing actions, performing actions, and evaluating the results, until her goal has been satisfactorily achieved, or until she gets stuck and needs assistance to continue.
Donald Norman discussed this process more formally in his book The Design of Everyday Things, describing it as a seven-stage action cycle model consisting of the following steps:
- Identifying an immediate goal
- Forming an intention to act
- Determining a plan of specific actions
- Carrying out the actions
- Observing the results by perceiving the state of the system and the world
- Interpreting the results
- Evaluating whether the actions had the desired results
These steps are repeated in an ongoing cycle, and so this model describes human-computer interaction as an continuous feedback loop between the user and the application.