Saturday, June 13, 2009

Get traction on user interaction

Like many software developers, I regard user interaction design as a subjective aspect of my work. Right and wrong seem to have little to do with user interfaces and user actions. This grayness that envelopes UI decisions does not always fit well with a brain that thrives in the black and white binary world. Nonetheless, the user interface is the only thing that other people see of our work. Also, it is very rewarding to help develop an interface that lives up to expectations and receives accolades from its users.

A far too typical mistake we make is to think of the user as a lesser being than ourselves. This is obviously not true. Users know how to do their work, and they understand the goals they want to achieve with our software. They can easily grasp the breadth of options we lay before them and when given enough leeway they are certainly able to learn how to use any application.

Once we accept our users as reasonable people, it becomes clear that there might be a list of universal expectations. This list can then be considered for any application. Yes, it is intuitive, but each item in the list that follows requires explicit deliberation when designing the user interaction for your application.
  1. Don't make me hunt. For each view, anticipate the actions the user is most likely to take. Provide quick access to these actions from the view.
  2. Don't make me guess. Consider what important status information is needed by the user, and make sure he in informed when that information changes. Status can be communicated using subtle elements, such as icon states and colours.
  3. Don't confuse me. Keep the interface consistent, not only the look and feel, but also the behaviour. Avoid being too uniform: make sure that things that behave differently also look differently.
  4. Don't waste my time. Save the user's time by combining actions that always follow each other into composite ones. Write tooltips and help text clearly and concisely. Avoid "Are you sure?" dialogs by introducing an undo facility.
  5. Don't trap me. Give the user the freedom to explore the application safely. Ensure that it is easy return to well known views, and that also actions are revertable. A revertable action is one that can be undone by another action: e.g. the Enable XXX is revertable if there is a Disable XXX action.
  6. Don't make me wait. When an action will take some time, move it to a thread to allow the user to continue with other things. Remember to provide appropriate feedback (to avoid guessing).
  7. Don't make me think. Expose the conceptual model of the application clearly using appealing metaphors together with images and text cues. Choose the metaphors well and use them consistently.

User interaction design decisions are very likely to become part of the design considerations of the entire system. It is sometimes impossible to address all the user interaction issues on an older system, or one where the "server-side code" is fixed or inflexible. However, when doing greenfield development, user interaction must be discussed in detail as early as possible.

In summary, things may be less gray if you consider these seven simple guidelines. Keep on rolling out those terrific user interfaces!

0 comments:

Post a Comment