This is how I carry out this fast and cheap process in practice:
- Choose who is going to join you. These people don’t need to be experts, however, they should have some level of appreciation to the software engineering process. It is not advised that you recruit users to do this. Use it as an opportunity to bond with your team. 👥
- Allocate between 45 minutes to 2 hours for you and whoever (if available) will join the process. There are no rules but, naturally, the more screens you have, the more time you need. ⏱️
- Print the screens of your interface. Yes, print on paper. You should do this offline, so you can focus and not waste time. Phones in airplane mode would help you make sure that you are focusing and sticking to the allocated time. Once done, organise the screens on a single flat surface such as a table, whiteboard, notice board or even the floor if you really want to go low cost! 🗒️📴
- Link the screens in the form of a sitemap. I am assuming that you went through the design of the flow before coming up with the actual interface. I have witnessed horror stories of wannabe pro teams who built their UI on gut feeling and ended up thrilling the very same guts two months down the line. 🕸️
- Individually, look at one screen at a time, noting any violations. These have to be classified as a Heuristic and graded with a severity level, as explained below. 🧐
- Repeat this for the entire flow for some 2 or 3 more times. Still individually and silently 🤐
- Get together and exchange notes from the process. Agree on a single set of violations with an agreed level of severity. 🙌
- Sort out an action plan to address the violations. ☑️
At the end of the process, we want to end up with a list of issues for every screen. To make it easier to prioritise and tackle, a sense of priority is needed. For this reason, Nielsen introduced the idea of severity. These are the numerical gradings he suggests:
1 = Cosmetic Problem Only: Need not be fixed unless extra time is available on the project
2 = Minor Usability Problem: Fixing should be given low priority
3 = Major Usability Problem: essential to fix, so should be given high priority
4 = Usability Catastrophe: Imperative to fix this problem before the product is released.
Theoretically, there is a zero grade which in other words, means that it is no issue with the violation. This is mostly useful when you’re going through the violations as a team
Yes, this is where we (finally) explore the 10 heuristics! Below follows a comprehensive list of my favourite examples. These are either remarkable masterpieces of UX or tragedies that we should avoid. Let’s dive in.
1- Visibility of the System
Imagine you are uploading a critical document such as an assignment, a paper or tax returns a few minutes before a hard deadline (no judgement). The experience of the upload can be torturous, and the confirmation of a successful can be of great relief. The UI has to be there for the users in times like these and less stressful scenarios.
We shouldn’t be asking any software “what’s going on in there?”. Users need to be informed about what is happening inside. This heuristic was introduced in 1994, and it is intended for the interface to provide visibility to how it is working.
AI Tip: Today, in the age of AI, we expect AI to be explainable (XAI). The UI happens to be an essential tool to communicate this explainability, and this is a very relevant contemporary interpretation of this heuristic.
2- Match between the System and the Real World
The system has to speak neither binary machine code nor the engineers’ way of structuring things. It has to only speak the user’s language. This ranges from using simple graphics to carefully crafted error messages. The system has to feel as natural as possible.
AI tip: personalisation and context are expected in today’s software. We all expect our devices to know us and know us well. Today’s technology provides excellent opportunities for this heuristic to deliver beautifully tailored experiences.
3- User Control and Freedom
What happens when the user screws up? Who is in control at that point? The right answer is “the user”. As a designer, think about creating enough emergency exits for whenever the user gets into a tight or unwanted situation.
AI Tip: With enough data about the different states of your app, the sitemap of your app and goals of the user, you can design an intelligent algorithm to advise about the most efficient emergency exit out of this situation.
4- Consistency and Standards
The best way to learn how to use an app is not needing to learn it in the first place! If the app is developed consistently with other applications, it is easy to grasp and achieve the goal it is intended to deliver. This is perfectly executed in the Microsoft Office suite. If for example, you’re using Word, the ribbon is very similar to that of Excel. Most tabs are the same, and then there are application-specific tabs that are different. This renders the experience across different apps seamless without the user needing to learn every app from scratch and therefore, only focus on the different functionality.
AI Tip: Adaptable interfaces are becoming more popular. If your application is adjusting the UI elements to specific users, it is nonetheless advised that it maintains a certain level of consistency across the adaptation. The adaptation should also follow some general external consistency with other applications.
5- Error Prevention
Prevention is better than cure, so there is no “additional” AI tip here. I strongly suggest you exploit AI and machine learning to predict when the user will potentially run into an error and avoid it before it happens.
This approach can also use regular expressions to detect any incoherences in situations such as form-filling.
6- Recognition rather than Recall
You meet a classmate of yours from 20 years back. You recognise him immediately, and he does too. The conversation is pleasant and friendly but you cannot recall his name! It’s ok and perfectly normal. It is easier for us to recognise a pattern, figure or a face, but it more difficult for us to recall specific related information such as a name. This robust memory effort known as ‘recall’ is what makes us dislike examination questions that are based on recalling or regurgitating information.
The effort is, therefore, to minimise the memory effort of the user in carrying out tasks using your UI. The elements, objects, actions and options need to be clearly presented. With the right presentation and design thought, you can also do without long instructions.
AI Tip: Through the usage data of your app, you can understand where users are repeating specific useless patterns to reach a goal or finish a task. By applying the right machine learning techniques, you can identify cases where users are feeling lost. Once there, you can either redesign to eliminate the flaws (ideal) or build further intelligence within your software to guide users out of such situations. On the other hand, if you managed to classify what adds this memory load correctly, you can also build an intelligent program that highlights potential issues before they happen, hence taking the design process to the next level.
7- Flexibility and Ease of Use
A tool does not change its form depending on the skill of the user. However, a well-designed tool still needs to be usable for different users with different abilities. This principle is particularly important in the experience design that goes beyond the UI. Here’s how:
Consider the most cross-application and cross-platform feature: copy/cut/paste. There are so many ways of how you can carry out these fundamental functions:
- Through the “Edit” menu;
- Through buttons in toolbars or ribbons;
- Through the menu presented as you left-click;
- or by using the keyboard shortcuts!
These different ways of doing the same thing (aka Accelerators) allow users with varying levels of experience to carry out exactly the same task but according to their skill. The keyboard shortcut approach is naturally the fastest; however, one cannot expect someone who just learnt about the existence of computers to make use of it. In that case, it would be probably more comfortable to go through menu items or click the button on the toolbar with a pair of scissors and follow the metaphor.
AI Tip: monitoring whether users are exploiting alternative ways of achieving tasks can help you deliver a better experience through your app. With the right data, you can learn which type of users are not exploiting all the functionality you put in your app and gently guide them towards making more efficient use of your software.
8- Aesthetic and Minimalist Design
I’ll keep this as minimalist as possible: your interface should only contain needed and relevant information and elements. Otherwise, users will feel distracted and drift away from the intended purpose of the app.
A fresh and recent concept that follows this line of thought is that of “The best interface is no interface”. I strongly suggest you have a look at it.
AI Tip: you can use straightforward machine learning techniques to understand better what is mostly needed for users and how to create a path between the landing screen and the task achievement. Optimise towards reaching that as efficiently as possible with minimal clatter along the way.
9- Help users recognise, diagnose and recover from errors
OK, no matter how hard we try, there will always be some error that pops up. One of the fascinating aspects of UX design is the way we design for the recovery from errors.
There are different levels at which one can look at this. The most obvious is the avoidance of cryptic errors that can be only understood by a handful of programmers. So the language has to be the same as the user. The correct choice of language on its own does not entirely solve the problem. “catch-all” errors that fire up when a range of issues take place should also be avoided since they’re ultimately not helpful. When errors are presented to users, I suggest the following:
- A clear, easy to understand and relevant message that explains the situation.
- A solution for the user to fix the problem.
- Ideally, a link or reference to what caused the error.
- A neatly presented error code in case the user would need to escalate it with customer care. The error code is only (and only) there to complement the process and must not replace the rest. It is extremely useful when contacting support since the error code can assist agents to swiftly understand what the issue is and assist in recovery.
Besides all this, if you really and really care about the UX rather than only the UI, you can get creative and spice up the experience that would otherwise be quite dull and negative. Here’s a classic from Google’s Chrome:
AI Tip: besides assistance discussed in the next point and assuming that error prediction and avoidance failed, there is still room for AI to assist in this situation. An error needs to be seen as a state in the app that needs to be efficiently changed, and the user steered away from it. AI can help by walking the user through the error recovery process by also explaining what is going on within the app at the right dose or level of detail.
10- Help and Documentation
“Who needs this anyway?” said every newbie software engineer. Well, we all do. While the process of providing documentation and help resources can be tedious, it is essential, especially in high-stake situations.
However, providing help tooltips and the right level of documentation delivers an experience that feels safe and increases the users’ confidence when using your app. It also demonstrates a level of deep thought about what you designed and built, improving your trust.
Voice User Interface (VUI) place a crucial role in delivering a helpful experience. On the other hand, it is also vital to ensure that the actual commands of the VUI are clear to the user. In that case, just make sure that users can just ask the app or device to outline more information or commands.
AI Tip: with the dramatic and definite improvement in AI conversational technology, in-app assistants can efficiently support the user as issues happen and provide a systematic approach of how to recover from the error. The error data collected and recover can also offer a variety of machine learning opportunities.