Designing for User Performance

October 28, 20081 min

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.