====== 10 Usability Heuristics for User Interface Design ====== Author: Michelle McCausland ## 1. **Visibility of System Status** - The system should always keep users informed about what is going on, through appropriate feedback within a reasonable time. ## 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. ## 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. ## 4. **Consistency and standards** - Users should not have to wonder whether different words, situations, or actions mean the same thing. Follow platform conventions. ## 5. **Error prevention** - Even better than good error messages is a careful design which prevents a problem from occurring in the first place. - Either eliminate error-prone conditions or check for them and present users with a confirmation option before they commit to the action. ## 6. **Recognition rather than recall** - Minimize the user's memory load by aking 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. ## 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. ## 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. ## 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. ## 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.