I’ve successfully employed these ten illustrated usability heuristics, based on the work of Jakob Neilson and Bruce Tognazzini, to countless situations where deadlines were strict and budgets limited.
These heuristics do not stand to replace the work of a usability professional. Nevertheless, the simple things that pop out from a brief heuristic analysis can be tremendously useful.
A common issue I’ve found in applications is the lack of some message telling me that my action is still in the process of executing. Without this, it is difficult to know if the system is actually doing anything after I press a button or if there was an error.
Let users know where they’ve been, where they are, and where they’re going. Breadcrumbs, titles of pages, and meaningful link titles (in that order) are a great way to do this.
Ask yourself these questions when assessing the statefulness of your application:
• What does my application look like when a process is loading?
• Can users easily see interruptions or updates to the application while they use it?
• How do users know their requests were successful?
2. Error Catching
I’ve seen a lot of startups ignore good error catching and it’s understandable why. When you’re building an application, it’s natural to be very focused on it working as perfectly as possible. Yet, we need to humbly anticipate that both our applications and our users will fail to interface with one another properly.
Ask yourself the following questions to ensure you’re catching errors appropriately:
• What does an error (user or system) in your application look like?
• If the error was caused by the user, does the message give the user an easy way to correct it?
• If the error is caused by the system, is this clearly conveyed to the user?
• Does the application avoid losing the user’s state (e.g. entered data) after an error?
I should also mention one of the most infuriating examples of failure in this error: Make sure the application preserves the user’s state if it can.
If I incorrectly enter information into one field of a form, I should not have to redo the entire form.
3. Error Prevention
Even better than catching user error is preventing it in the first place with a smart system. Phone numbers can be entered in a number of ways. (e.g. 5555555555, 555-555-5555, (555) 555-5555, 555.555.5555 in the U.S.)
“Garbage-In-Garbage-Out” describes a method of making a good point of entry for information. In other words, if a username shouldn’t be more than 10 characters, don’t let me enter more than 10 characters in the first place. Doing so completely eliminates the need to take me back to the form and inform me to shorten the username myself.
Ask yourself these questions to determine how well your application prevents errors :
• Can users generate errors in ways my application can prevent from the start?
• Does my application provide inputs which could substitute a user’s own error-prone input?
• Can a set of options be limited in a way which does not take away from the UX?
In this UserTesting video, the Home Depot user is not informed item is flagged for store pick-up until the end of checkout process in an error message.
4. Time Machining
Give users the ability to move through time. Let users return exactly to where they were before or skip ahead if needed. This is also a way to give users an emergency exit if they end up in the wrong place or take an action they later regret.
Giving users the ability to control the timeline of your application need not be an overhaul of its logic. Provide some simple undo actions in certain areas. Forms should have a “cancel” button. Dialogues should have close buttons. Allow users to change their passwords, undo actions, and revisit areas they’ve been already.
In this Walmart.com video, the user does not have the ability to ‘X’ out of a dialogue box to search stores by area code, and instead must press the browser back button to get back to regular search.
Ask yourself the following to maintain a user’s ability to move in both directions :
• Can operations be undone?
• Can users find where they’ve been before?
• How far back are users able/need to be able to go?
5. Offer an Express Route
Be careful with this one. Some users don’t need all the help you can throw at them while others will need a surprising amount of assistance.
Offer a way for users to ignore assistance while still keeping help text and functions present and findable. Define common defaults for your applications so (most) users won’t need to manipulate the application in those areas.
For example, a “Choose your country” drop down should hold the country most represented by your user base by default. Not everyone will be from the United States, but most of your users will be able to skip over this input while others will easily be able to change it.
To offer your fast-paced users a way to use your application, consider the following questions:
• Are all demands for information absolutely necessary?
• Do my inputs have defaults?
• Can some settings sensibly be reserved to “opt-in” or “opt-out” in other areas of the application?
In Part II of this guest post, Adam will discuss Fitts’ law and other usability guidelines to optimize your site.
Author’s Bio Adam Kochanowicz is a UX Specialist for Debtdomain.com in New York City. He writes regularly on User Experience and UI design at adamkochanowicz.com.