Many kinds of software, including productivity applications like word processors and spreadsheets, and enterprise information systems, are intended to be used for sustained periods of time. Such applications should encourage the user to focus and work productively.
Psychologist Mihaly Csikszentmihalyi described and popularized the concept of flow, which is the mental state of being completely focused on an activity. For a user who is in a flow state:
- Performance of the activity occurs naturally and unconsciously. Creativity and productivity are high.
- The user experiences deep concentration and immersion in the activity. The user is simultaneously alert and relatively relaxed.
- The user often becomes so engrossed in the activity that she is unaware of the passage of time (often described as “living in the moment”).
- The difficulty of the activity is a good match for the user’s skill: there is sufficient challenge to keep the user’s interest, but not so much that the task seems impossible, and the activity is not so mundane that it causes boredom.
- The user is confident and has a sense of control over the situation.
- Usually, the user is working towards achieving a specific goal. (For some applications, the goal may not always be particularly productive; in the case of games, the goal may be simply to finish one more level.)
Here are some things you should know about flow states with regard to software:
- Beginning users generally cannot be expected to be able to enter a flow state; it requires some level of comfort and competence with operating the application.
- It is often difficult to get into a flow state, and simply wishing to concentrate does not make it happen. Typically, it takes 15 minutes or more of struggling and working unproductively before one can “get into the groove”.
- Interruptions, such as pop-up notifications and phone calls, and distractions, such as chattering coworkers or a television in the same room, can pull a user out of a flow state. When returning to the activity after a distraction, it usually takes another period of time to get back into a flow state.
There is little you can do as a designer to explicitly help a user enter a flow state, but you can encourage and sustain concentration and flow by making the experience work smoothly, minimizing or eliminating any repeated frustrations that might hinder the user from concentrating. Here are some design suggestions for doing that:
- Try to eliminate interruptions like modal pop-up dialogs that present notification and warning messages. Offer expert users the option of turning off any repetitive warnings.
- Keep the visual presentation simple. Brightly-colored images, and especially anything animated or blinking, can distract the user from reading text or concentrating on a work activity.
- When possible, guide the user through task flows. Make it obvious what the next step is, so that the user doesn’t have to start exploring the interface, which might lead to distraction.
- Don’t make the user switch repeatedly between different pages, screens, or tabs to find information; each context switch can be disorienting and can cause the user to forget what she was just doing.
- Make it easy for the user to save any work in progress and then later pick up where she last left off.
- Show completion progress for lengthy tasks. When possible, reward the user for completing tasks; even a simple chime sound effect when a task is completed can be satisfying.
- Ensure that the system gives feedback promptly; especially in web-based systems, work to reduce latency. Having to wait several seconds for confirmation that a button was pressed can become very annoying very quickly.
- It can be hard for humans to concentrate on multiple things at one, so when possible, don’t make users manage multiple tasks at the same time. On the other hand, when the system is busy with a long-running process, you should give the user the option to have the process run in the background so that she can work on something else in the meantime. When users have to wait for a long or unknown length of time, they will frequently switch to something else (like checking e-mail or surfing the web), breaking the flow.
If you are designing a typical software application, preventing distractions in the user’s environment is out of your control. However, in some cases, you or your team may have the opportunity to influence the design of users’ physical workspaces. For example, for an air traffic control center, in addition to the software itself, you may be able to design the workstations and the office facility to prevent distractions.