Interacting with interfaces is complex, and often poorly designed. Most times,

  1. The tasks are implicit and complex: the machine doesn’t “know” the user’s end goal
  2. Interaction is unpredictable and complex: coordination between human and machine is complicated, usage can be unexpected and evolved, users can change their minds


  1. Functionality Problem: what are the functions this object can perform? Will it do what I want?
  2. Visibility Problem: what mode is this object in? What sequence of controls do I use to get what I want?
  3. Negative Transfer: what would happen if I do what I usually do?


Can fail to

  1. understand the range of users and their limitations
  2. understand contexts of use
  3. communicate what it does, how it works/worked, etc.
  4. start with basic usability needs, and might try to make it exciting or beautiful first

Market Pressures

User’s don’t always make good purchase choices

  1. Adding new functionality is relatively easy and cheap whereas adding effective controls/feedback is expensive and costly for time and space
  2. Designer time is expensive
  3. Some consumers value cost or looks over usability