mklayman's picture

According to Jakob Nielsen, these are the 10 biggest violators of standard usability in web apps, but I think they are true for all web design (and design in general):

  1. Non-standard interface controls - use what your users expect to see!
  2. Inconsistency in the way things work, appear, and are labeled - make buttons appear in consistent places, call things by the same name, just choose a system and use it throughout.
  3. Not providing affordances that give people visual clues about what they can do with an object - The Nielsen/Norman group are big into affordances - clues that indicate simply by their appearance, what you should do to interact with the widget, like a metal plate on a door meaning push here or a grippy appearance in the bottom right of an application window that indicates you can resize.
  4. Not giving feedback about what is happening - if something takes a long time, give the user some indication that you're processing their request - otherwise they might think the site is frozen.
  5. Bad error messages that don't tell what went wrong and how to fix it - even worse, NO error message at all!
  6. Asking for the same information twice - try to make your forms smart enough to populate information, and use single sign-on throughout the site.
  7. Not providing defaults - especially useful for the newbie who has no idea what to choose - help them out!
  8. Dumping users into the app without giving them an idea of how it works - always thoughtful to include a "start here" section.
  9. Not indicating how collected information will be used - it's about trust.
  10. Offering system-centric features that reflect the system's internal view rather than the users - just because something is easier to engineer doesn't mean it will make sense to the user. Always design from the end user's perspective.
  11. And for good luck...

  12. Reset buttons on web forms - don't you hate those? I know I always press that button by mistake. If you must insist on having such a function, call it "clear all" or something that will really indicate to the user what the result will be if she presses it.