Skip to main content

If you don't have an IBM ID and password, register here.

By clicking Submit, you agree to the developerWorks terms of use.

The first time you sign into developerWorks, a profile is created for you. This profile includes the first name, last name, and display name you identified when you registered with developerWorks. Select information in your developerWorks profile is displayed to the public, but you may edit the information at any time. Your first name, last name (unless you choose to hide them), and display name will accompany the content that you post.

All information submitted is secure.

The first time you sign in to developerWorks, a profile is created for you, so you need to choose a display name. Your display name accompanies the content you post on developerworks.

Please choose a display name between 3-31 characters. Your display name must be unique in the developerWorks community and should not be your email address for privacy reasons.

By clicking Submit, you agree to the developerWorks terms of use.

All information submitted is secure.

The cranky user: User interfaces

The design of everyday things

Peter likes baby ducks; honest, he does. He just doesn't want to be one.

Summary:  Computer-based user interfaces face many of the same design problems that have plagued physical user interfaces for centuries. We look at a couple of the concepts discussed in Don Norman's book The Design of Everyday Things and how they might apply to computer interfaces.

Date:  01 Sep 2002
Level:  Intermediate

Comments:  

The design of everyday things

The Design of Everyday Things, by Donald A. Norman, is an exceptional book for people considering "human factors" in almost any field of endeavor. (It was originally published under the name The Psychology of Everyday Things.) Reading the book suddenly makes the little annoyances of daily life jump out at you, because you understand how easy it would have been to avoid them.

The book discusses computer software, but many of the points made about non-computer environments translate quite well into an understanding of computer interfaces.


Affordances

One of the most useful concepts I picked up from The Design of Everyday Things was the idea of "affordances" -- the set of things an object easily allows you to do. For instance, knobs are almost always intended to be turned or buttons to be pressed.

This concept applies directly to software. If you present a thing that looks like a checkbox, users will try to check it or uncheck it. If you present a button, users will try to click it. If it's hard to tell what a given set of pixels is, users will be confused by it. Users, when confronted with a graphical interface, quickly learn that they can click on things to select them or drag them to move them. The rules for how this will work vary from place to place but, overall, users are quite clear on what the mouse lets them do, most of the time. Surprises can be incredibly frustrating; users who click on a thing that looks just like a button will be unhappy if it doesn't work -- especially if they can't tell which of the objects are buttons.

User interfaces often make mistakes in this regard; I've used a number of programs that had what appeared to be a text-input widget, which was used only to display text. However, if the system's default is to have black text in a white box for user input and black text on a grey field for program output, program output in a white box will be confusing. The user will try to edit the text and fail, and be annoyed in the process.

A particularly good example of this I once saw was a list in which each item had a checkbox, reflecting whether or not that item had been attached to another program. Clicking on the checkbox had no effect whatsoever; the way to attach or detach was to double-click on the name elsewhere in the same line. However, the widget used was precisely the same as the standard checkbox used for toggle controls elsewhere.


Standardization

Ah, standardization. Often, for user interfaces, even a bad standard is better than no standard at all. A casual look at the difficulty users can have trying to find the links on many Web pages suggests the importance of a standard way of indicating links. (Web designers who take the underlines off of links are just hurting everybody.) Trying to sweep the mouse over everything on a page, hoping that the cursor will change when it reaches a link, is annoying at best; even if underlined text can be annoying, it's better than no standard.

Another good way to see the effect standards have is to watch experienced users of one computer platform trying to use another. The subtle (and obvious) differences can make a significant impact on performance and usability; you're always faster at the interface you know better.

There is something fascinating about the ways in which habits can breed contempt for other systems. A regular UNIX user, I type ^W by habit to erase words -- it works in 99% of the text interfaces I use and is much more convenient than Backspace. When I do this in a browser window on a Windows box, of course, it most likely closes the form. When I wrote to the Mozilla developers to point out how disruptive this could be, one of them referred dismissively to this as "archaic." Of course, any binding you're not used to seems weird and alien ... an interesting perspective. I had always thought the Windows habit of using control characters as menu commands was weird and backwards, because they, unlike the Mac and Amiga, didn't have a special key that was used specifically for menu commands!


Designing for errors

That leads us into the next interesting lesson we can learn from this book. A good design should adapt well to the certainty that users will make mistakes. The confusion over keybindings in Mozilla wouldn't have mattered much -- browsers are easy to reopen -- except that it most often happened while filling in large Web-based forms. The problem is that Mozilla had, at the time, no warnings at all between a close action and the loss of any unique data in a window. A good design would recognize that some close actions, especially on pages with large and complicated forms, might be unintentional on the user's part and provide some sort of confirmation prompt. (This might be done by the time you read this; the developers seem to like the idea.)

The general convention of warning before throwing away data is a good one, but there are some interesting special cases. On Palm PDAs, data never needs to be explicitly saved when you've entered something -- it's there. One of the programs I use on my PDA is a word processor, which supports two kinds of documents. The more complicated ones use the traditional desktop model, until you ask to save, you're working on a temporary version of the document. Unfortunately, this is very disruptive, as I might want to check my appointment list without stopping to decide whether or not my changes need to be saved. Nonetheless, I'd rather they do this than just throw my data out without asking.

It's always interesting to see new users experimenting with a system. How much harm will they do? On a good system, very little; likely errors will be fairly harmless. On most computer systems, it's possible to do an amazing amount of damage without any understanding of what's going on. How many programs implement an "Undo" feature which only works some of the time? Far too many. Worse yet, programs sometimes allow you to undo, for instance, a single search-and-replace operation, but not a global one. Of course, it's the global one that's the most likely to have done irreparable damage. In such a case, the "Undo" feature might cause more harm than it prevents -- by making users feel comfortable trying operations that could damage their documents, since they know there's an easy way to undo mistakes.


Summary

Many of the same problems that we face when dealing with real-world objects, such as telephones or even doors, show up to haunt us again in computers. Interfaces that try to mimic real-world objects often inherit the same mistakes that make the real objects annoying, while depriving us of the benefits of the experience we have with other computer interfaces.

When designing interfaces, it's important to try to make sure that an interface is as clear as possible. Use standard mechanisms. Use the right interface widget for the job. Try to avoid confusing presentations and always put important data where the user will see it.

Action item: Have you ever worked with a computer for which setting the clock was as annoying as it is on most VCRs?


Resources

  • Visit the home page for Don Norman's collected writings, with information on his other books, as well as on The Design of Everyday Things.

About the author

Peter Seebach

Peter likes baby ducks; honest, he does. He just doesn't want to be one.

Report abuse help

Report abuse

Thank you. This entry has been flagged for moderator attention.


Report abuse help

Report abuse

Report abuse submission failed. Please try again later.


developerWorks: Sign in

If you don't have an IBM ID and password, register here.


Forgot your IBM ID?


Forgot your password?
Change your password


By clicking Submit, you agree to the developerWorks terms of use.

 


The first time you sign into developerWorks, a profile is created for you. This profile includes the first name, last name, and display name you identified when you registered with developerWorks. Select information in your developerWorks profile is displayed to the public, but you may edit the information at any time. Your first name, last name (unless you choose to hide them), and display name will accompany the content that you post.

Choose your display name

The first time you sign in to developerWorks, a profile is created for you, so you need to choose a display name. Your display name accompanies the content you post on developerWorks.

Please choose a display name between 3-31 characters. Your display name must be unique in the developerWorks community and should not be your email address for privacy reasons.

(Must be between 3 – 31 characters.)


By clicking Submit, you agree to the developerWorks terms of use.

 


Rate this article

Comments

Help: Update or add to My dW interests

What's this?

This little timesaver lets you update your My developerWorks profile with just one click! The general subject of this content (AIX and UNIX, Information Management, Lotus, Rational, Tivoli, WebSphere, Java, Linux, Open source, SOA and Web services, Web development, or XML) will be added to the interests section of your profile, if it's not there already. You only need to be logged in to My developerWorks.

And what's the point of adding your interests to your profile? That's how you find other users with the same interests as yours, and see what they're reading and contributing to the community. Your interests also help us recommend relevant developerWorks content to you.

View your My developerWorks profile

Return from help

Help: Remove from My dW interests

What's this?

Removing this interest does not alter your profile, but rather removes this piece of content from a list of all content for which you've indicated interest. In a future enhancement to My developerWorks, you'll be able to see a record of that content.

View your My developerWorks profile

Return from help

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=1
Zone=Web development
ArticleID=300212
ArticleTitle=The cranky user: User interfaces
publish-date=09012002
author1-email=crankyuser@seebs.plethora.net
author1-email-cc=htc@us.ibm.com

Tags

Help
Use the search field to find all types of content in My developerWorks with that tag.

Use the slider bar to see more or fewer tags.

For articles in technology zones (such as Java technology, Linux, Open source, XML), Popular tags shows the top tags for all technology zones. For articles in product zones (such as Info Mgmt, Rational, WebSphere), Popular tags shows the top tags for just that product zone.

For articles in technology zones (such as Java technology, Linux, Open source, XML), My tags shows your tags for all technology zones. For articles in product zones (such as Info Mgmt, Rational, WebSphere), My tags shows your tags for just that product zone.

Use the search field to find all types of content in My developerWorks with that tag. Popular tags shows the top tags for this particular content zone (for example, Java technology, Linux, WebSphere). My tags shows your tags for this particular content zone (for example, Java technology, Linux, WebSphere).