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.
Users should not have to wonder whether different words, situations, or actions mean the same thing. Follow platform conventions.
Even better than good error messages is a careful design which prevents a problem from occurring in the first place.
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.
Even though it is better if the system can be used without documentation, it may be necessary to provide help and documentation.
Error messages should be expressed in plain language (no codes), precisely indicate the problem, and constructively suggest a solution.
The system should speak the users' language, with words, phrases and concepts familiar to the user, rather than system-oriented terms.
Minimize the user's memory load by making objects, actions, and options visible. The user should not have to remember information from one part of the dialogue to another.
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.
The system should always keep users informed about what is going on, through appropriate feedback within reasonable time. If the user is asking 'is something happening?', the system is failing this principle. If, however, the system consistently understands what is happening, when, and with what outcome, Visibility of System Status is respected.