These rules are more than 20 years old, but as valid as ever. Some things change. The way humans think, doesn't.
- Know thy user, and YOU are not thy user.
- Things that look the same should act the same.
- Everyone makes mistakes, so every mistake should be fixable.
- The information for the decision needs to be there when the decision is needed.
- Error messages should actually mean something to the user, and tell the user how to fix the problem.
- Every action should have a reaction.
- Don't overload the user's buffers.
- Consistency, consistency, consistency.
- Minimize the need for a mighty memory.
- Keep it simple.
- The more you do something, the easier it should be to do.
- The user should always know what is happening.
- The user should control the system. The system shouldn't control the user. The user is the boss, and the system should show it.
- The idea is to empower the user, not speed up the system.
- Eliminate unnecessary decisions, and illuminate the rest.
- If I made an error, let me know about it before I get into REAL trouble.
- The best journey is the one with the fewest steps. Shorten the distance between the user and their goal.
- The user should be able to do what the user wants to do.
- Things that look different should act different.
- You should always know how to find out what to do next.
- Don't let people accidentally shoot themselves.
- Even experts are novices at some point. Provide help.
- Design for regular people and the real world.
- Keep it neat. Keep it organized.
- Provide a way to bail out and start over.
- The fault is not in thyself, but in thy system.
- If it is not needed, it's not needed.
- Color is information.
- Everything in its place, and a place for everything.
- The user should be in a good mood when done.
- If I made an error, at least let me finish my thought before I have to fix it.
- Cute is not a good adjective for systems.
- Let people shape the system to themselves, and paint it with their own personality.
- Follow platform conventions.
- The system status (i.e., what's going on should always be visible.
- The system should speak the users' language, following real-world conventions.
- To know the system is to love it.