The fifth of Dr. Jakob Nielsen’s Usability Heuristics piggy-backs off of the fourth guideline for consistency. Users will inevitably make mistakes as they navigate around any web page or start using a new software platform; but they key is that it should be easy for users to use the system correctly and thus prevent errors, rather than encouraging errors through poor design.
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.
– Dr. Jakob Nielsen, 10 Heuristics for User Interface Design
The most common example of this is a message box that is ubiquitous across the Internet and in software platforms: The Delete Confirmation. Sure, this box can be a bit annoying when you are trying to navigate quickly, but I am willing to bet that this little box has saved your hide on at least a few occasions when you clicked delete and didn’t mean to.
As helpful as this little box is, it performs a very important function within Nielsen’s fifth heuristic by making it harder for you to commit an error (e.g. delete or remove information or a file) by simply asking you to confirm that you really do want to perform the delete. Performing a delete on accident is an error that can range from mildly irritating to soul-crushing, depending on what kinds of files or information you were deleting. Maybe you have to start over on a certain page of information, or maybe you just deleted a vital file component and bricked your computer. Either way, by presenting you with this helpful message designers are attempting to save you from yourself.
This particular heuristic is violated with a frequency I find astonishing considering the stakes. It is deceptively simple to think “How could someone screw this up?” and then design to prevent that. But those who try often find themselves waking up several months down the rabbit hole, still trying to eliminate possibilities for error in a never-ending game of wack-a-mole. The key thing to remember when trying to design with this heuristic in mind is this quote which has been attributed to multiple speakers:
You cannot design anything to prevent every possible error. Someone will inevitably find a way to screw something up in a way that you could never have imagined. But designing to eliminate every possible error should not be the goal. The goal should be strategic in nature: Design a system that is easier to use correctly than it is to use incorrectly, which will eliminate many of the possibilities for error since it is human nature to take the path of least resistance. Then, to close off more avenues for error, add confirmation messages whenever a user is doing something which might lead to an error, thus forcing users to verify that they intend to do what they said they wanted to do. It will not make the system error-proof, but you can reasonably eliminate the vast majority of errors before they occur. This not only makes life easier for your users, it makes life easier for you too. After all, who has to clean up the errors?