Jakob Nielsen is:
"A web usability consultant. He holds a Ph.D. in human–computer interaction from the Technical University of Denmark in Copenhagen."
From Slides I learn:
- Status and communication from system should be always visible to user and should use user's language using common standards, being consistent and without technical gibberish. [Rules: "I know what's going on","I know what are you talking about","Seems familiar ,makes sense"]
- System guides user what to do next and what are consequences. For example. It should prevent user from making mistakes or at least warn it about possible consequences of the action. [Rules: "I know what's going on","Glad , I didn't do that"]
- System should always help user to recover if shit happens, so If user made a mistake, then system should have an ability to emergency stop/exit from current state. It should explain error in plain language and provide possible solution to recover . [Rules: "Oops, let's me outta of here","Glad , I didn't do that","I know what went wrong and I can fix it"]
10 usability heuristics according Jacob Nielson are:
- Visibility of system status ["I know what's going on"]
- "The system should always keep user inform about what's going on through feedback "
- In software development The system should always keep user inform about what's going on through feedback.
- Match between system and the real world ["I know what are you talking about"]
- System should speak user's language with vocabulary and concepts that user are familiar with.
- User control and freedom ["Oops, let's me outta of here"].
- User should have ability to emergency stop or exit ,if he made a mistake.
- This is reason why for example memento(known as undo/redo) pattern is important when we develop functionality as it helps undo problem.
- Consistency and standards ["Seems familiar ,makes sense"]
- Follow the convention ,so user doesn't need to figure out that different word ,actions does the same thing.
- It is important ,because it helps user to learn to use system quickly and efficiently.
- Error prevention ["Glad , I didn't do that"]
- It is good to eliminate possible error condition in first place ,where this is not feasibility ,then at least user should be warn and ask to confirm before he commit actions.
- Recognition instead of recall ["I know what I need to do here "]
- Minimize user memory's load , user should remember enough to complete current action without remember about previous steps
- Flexibility and efficiency of use ["Allow me to do more or less "]
- Allow novice user to see essential data to make decision but allow to advanced user for customisation.
- Help user recognise,diagnose and recover from errors ["I know what went wrong and I can fix it "]
- Error messages should express in plain language and indicate the problem and provide suggestions to solve problem.
- Aesthetic and minimalist design [" Looks good , works beautifully "] Dialogue should contains only useful information. Any extra unit inform that are rarely any value or no value will reduce visibility.
- In my opinion design should fit audience. Aesthetic and minimalist design is good in generic cases but will not fit many cases.
- Help and documentation ["Okay , I need help "]
- I don't have opinion about it. It is important to have tutorial to help user to teach basics skills need to find most information in intuitive way but documentation in general means System is too complicated (there are many cases when system is complicated because it performs very complicated tasks).