Sometimes we may feel that a rule or standard is wrong in a particular situation, and yes, sometimes you can break the rules and it works for your users. But one needs to understand the rules and their rationals first, before intelligently breaking them.
The following are heavily oriented towards web applications and sites, but are useful for all human - computer interfaces.
Ten Usability Heuristics, by Jakob Nielsen, additional comments by Dave Ayers
1. Visibility of System Status
"The system should always keep users informed about what is going on, through appropriate feedback within reasonable time."
Remember that it's a dialogue, a conversation, and needs to follow the rules humans follow in conversation, such as taking turns and keeping eye contact.
See: Exploring Language, Response Times, More...
2. Match between System and the Real World
"The system should speak the users' language, with words, phrases and concepts familiar to the user, rather than system-oriented terms. Follow real-world conventions, making information appear in a natural and logical order."
This is where metaphors with their benefits and dangers come into play. As well as appropriate vocabulary for your audience, and all the details of the application domain.
3. User Control and Freedom
"Users often choose system functions by mistake and will need a clearly marked "emergency exit" to leave the unwanted state without having to go through an extended dialogue. Support undo and redo."
How many times have you hit the wrong key in Word or Excel and been totaly lost as to what is going on and how to get back to your work flow. Don't let this happen to your product !
4. Consistency and Standards
"Users should not have to wonder whether different words, situations, or actions mean the same thing. Follow platform conventions."
Sometimes you have to curb your creativity and use the conventions that people are familiar with, such as keeping the WC3 HTML standard of blue, underlined text to signal a hyperlink on web pages. Changing the style or color will only slow down or confuse the user. Creativity has its place, but should be the exception, not the rule.
5. Error Prevention
"Even better than good error messages is a careful design which prevents a problem from occurring in the first place."
If automobiles were as buggy as computer software, we'd still be riding horses. How do you want your users to feel about your product ?
6. Recognition Rather than Recall
"Make objects, actions, and options visible. The user should not have to remember information from one part of the dialogue to another. Instructions for use of the system should be visible or easily retrievable whenever appropriate."
This is where the GUI overpowered the command line interface. Human short term memory is limited, the computer has plenty. Use it
7. Flexibility and Efficiency of Use
"Accelerators -- unseen by the novice user -- may often speed up the interaction for the expert user such that the system can cater to both inexperienced and experienced users. Allow users to tailor frequent actions."
The beauty of good interfaces is not just simplicity, but multiple ways of doing things to serve a wide audience effectively.
8. Aesthetic and Minimalist Design
"Dialogues should not contain information which is irrelevant or rarely needed. Every extra unit of information in a dialogue competes with the relevant units of information and diminishes their relative visibility."
Most used, most visible. Top to bottom, right to left (at least for latin languages).
9. Help Users Recognize, Diagnose, and Recover from Errors
"Error messages should be expressed in plain language (no codes), precisely indicate the problem, and constructively suggest a solution."
When a computer error occurs, the user is most vunerable, take pity on her, and help as best as possible.
10. Help and Documentation
"Even though it is better if the system can be used without documentation, it may be necessary to provide help and documentation. Any such information should be easy to search, focused on the user's task, list concrete steps to be carried out, and not be too large."
Explain the major concepts and terms of your product prominently, not just how to 'Biltz a Widget'. Why would I want to 'Blitz', and what is a 'Widget' ??
Less is More:
Search versus Browse:
Useable Click Targets:
Never scroll text horizontally:
Set Focus for Entry Fields: