Visibility of system status
System informs users about what’s going on.
Match between system and the real world
The system should speak the user’s language.
User control and freedom
Support undo and redo.
Consistency and standards
Follow platform conventions.
Error prevention
Prevents a problem from occurring in the first place.
Recognition rather than recall
Minimize the user’s memory load by making objects, actions, and options visible.
Flexibility and efficiency of use
Allow user’s to tailor frequent actions by making complex tasks fluid and efficient.
Aesthetic and minimalist design
Get rid of redundant stuff, provide only necessary info in an elegant way.
Help users recognize, diagnose, and recover from errors
Each error message should: 1) be expressed in plain language. 2) indicate the problem. 3) suggest a solution