Our ninth heuristic is help users recognize, diagnose, and recover from errors. Error messages should be expressed in plain language, no codes, no programmer's speak, precisely indicate the problem and constructively suggest a solution. Why is this important? Well really, this heuristic is a special case of a bunch of other heuristics that we looked at earlier. So heuristic number 1, make system state visible and give users feedback. So this is an example of giving users feedback about errors that might have occurred. Number 2, speak the users' language or have a match between the system and the real world. So this accounts for the need to express errors in language that the users will understand. Heuristic number 3, allow users to undo and escape from mistakes. So when an error does occur, we want to provide users with information that will help them escape or undo those mistakes. And finally, number 5, we want to prevent and detect errors. So this related in the sense that sometimes, you're not able to prevent errors even if you try. And you need to help users recognize that they've happened and help them recover from them. So an important part of this heuristic is make sure that any error messages that you display to the user make sense to them. So here's an example of a page not found, or so-called 404 error on the Airbnb website. So if you accidentally try to visit a page on Airbnb that doesn't exist, this is the screen that you see. And it provides useful information and makes clear what's happened by telling you that it can't find the page that you're looking for. And it offers you some helpful links that you can go to instead. Let's contrast that with a more generic page not found error like this one, which mostly consists of codes and language that a typical user isn't necessarily going to be able to make sense of. The requested URL was not found on this server. Additionally, a 404 not found error was encountered while trying to use error document and so on and so forth. This is much less helpful, much less constructive in terms of helping the user fix the error, or get to something that is going to be useful for them. I think we've all experienced error messages from software that doesn't make sense and doesn't feel very constructive and it can be very frustrating. So we might see error messages like Microsoft Office 2008 Update doesn't understand the event sysodisA-message. Well that's not helpful and it doesn't make any sense to me. Or a message that says simply, Error: Node was not found. Well that doesn't really help me understand what I did wrong, how to avoid it in the future, or if it's something that I need to fix. More helpful error messages will provide more information about what happened. So I understand what I did that caused the error in the first place and will also provide suggestions about how to fix the problem or how to accomplish what it is that I'm trying to accomplish. So in the example on the left, I've tried to register for a service that I already registered for. And when I registered, it sent me an email. And now what I need to do is go verify my email address by clicking the link in that email. And so this error message tells me that I'm already registered, tells me the next step that I need to take, which is to verify my email address. It also gives me another suggestion in case if I've lost track of that email, which is that I can request a new email. So it provides me with several helpful suggestions that can get me unstuck and off of this particular problem. In the example on the right, I'm trying to open a file that my software doesn't understand. And the error message tells me that I may need to install additional software. And it also provides a Tell Me More button that will give me more information about how to install software, what software I might need to install, and so forth. So ideally, we want to prevent errors before they occur. But sometimes, we're not able to do that. And so in those cases, we want to make sure that we help users recognize those errors, diagnose what the problem is, and offer suggestions about how they can recover from those errors and get going again on the task that they need to accomplish.