Designing for User Performance
Stopped by to listen to Larry Constantine today to hear what he is thinking about how to best design applications. These are a number of the key points I picked up from his talk:
- Prioritize design efforts around tasks which have the most frequency and greatest importance.
- Organize designs around the fewest number of transitions for key tasks
- Keep the screen context consistent when you do transition.
- Use proximal and visual context to group related and associated elements.
- Provide context when offering corrections and support editing-in-place when the user makes an error.
- Edit-in-place is the best way to train the user on the correct data entry.
- Redundancy or alternate paths are in general a good thing; allowing actions to be reversible is better.
- For user tasks that are not reversible we need to carefully consider their design. (ed. duh!)
- Filter non-numeric characters from number only fields.
- Don’t make the user a subroutine of the program, automatically update known information if the user gave it to you.
- If there is a naturalalternative way of entering data in the real world, the machine should be flexible enough to accept it.
- If the error is obvious and detectable by the program, why tell the user about it?
- Propagate errors, and their cause, to the highest level that can handle them.
- If there is an error in the program, tell people where the error is and how to fix it.
- Don’t ever give an nodaldialogueconfirmation box to a user unless the message is relevant, recognizable AND the user can intelligently respond to the message; otherwise just “eat” the message.