How Users Learn to Use Everyday Things

As I mentioned in Chapter 2, Norman's book was originally entitled The Psychology of Everyday Things, but I think it could be accurately entitled How Users Learn to Use Everyday Things. For software user interfaces, human psychology forms the vital link between what the user sees on the screen and how the user decides what to do and, ultimately, how the user learns to interact with the user interface. It is therefore valuable to understand this psychology—how users understand visual elements, explain them, remember them, form relationships between them, become confused, and make mistakes. Knowing this information is fundamental to good user interface design.

The specific user interface design principles from The Design of Everyday Things that I want to focus on in this chapter are

  • Visibility Gives the user the ability to figure out how to use something just by looking at it.
  • Affordance Involves the perceived and actual properties of an object that suggest how the object is to be used.
  • Natural mapping Creates a clear relationship between what the user wants to do and the mechanism for doing it.
  • Constraints Reduces the number of ways to perform a task and the amount of knowledge necessary to perform a task, making it easier to figure out.
  • Conceptual models A good conceptual model is one in which the user's understanding of how something works corresponds to the way it actually works. This way the user can confidently predict the effects of his actions.
  • Feedback Indicates to the user that a task is being done and that the task is being done correctly.

These are not six random design principles; they all fit together to help a user learn how to perform and understand a task. Let's look at how these principles work together when a user is learning how to perform a task using software:

  • The user decides he needs to perform a task. Now I need to perform this task…
  • The user needs to identify the features that he can use to perform the task. This step is facilitated by visibility. Hmm, I think this feature might do it…
  • The user needs to determine how those features are used. This step is facilitated by affordance. Now how does this object work? Oh, I get it…
  • The user needs to understand how the features perform the task. This step is facilitated by natural mapping. To perform my task, I need to select this option, enter that information, and then press this button…
  • The user needs to know what to select or enter. This step is facilitated by constraints. Oh no, what do I have to enter here? OK, I just have these choices…
  • The user needs to understand how the feature works to correctly predict what the program will do. A correct prediction leads to understanding and confidence, whereas an incorrect prediction leads to confusion and insecurity. This step is facilitated by a good conceptual model. To perform the task, I provided the necessary information and gave this command…and it seems to work as I expected it to.
  • Lastly, the user needs to see the results, whether indicating success or failure. These results must be easy to interpret. This step is facilitated by feedback. Great—it worked! or Oops! I made a mistake and here is how I correct it. Now I understand, and I'll try again.

In other words, to perform a task, the user needs to identify the right program features, determine how to use those features, determine how to perform the task using those features, correctly predict the outcome of all the actions, and see the results. These fundamental design principles help users learn how to use your program. User interfaces that implement these principles well are easy for the user to learn, understand, and use. They make the difference between software that is easy to use and a bunch of windows on the screen.



Developing User Interfaces for Microsoft Windows
Developing User Interfaces for Microsoft Windows
ISBN: 0735605866
EAN: 2147483647
Year: 2005
Pages: 334

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net