Error Messages Are Evil

Error messages punish people for not behaving like machines. It is time we let people behave like people. When a problem arises, we should call it machine error, not human error: the machine was designed wrong, demanding that we conform to its peculiar requirements. It is time to design and build machines that conform to our requirements. Stop confronting us: Collaborate with us.

I hate error messages. They are insulting, condescending, and worst of all, completely unnecessary. Evil, nasty little things. They cause us to do unneeded work, and often destroy the work we have already done.

“But,” programmers will ask, “how can we eliminate error messages, especially when the user has actually made an error?”

The “user”? Stop calling me that: I'm a person, a living breathing person, with feelings. Get rid of the word “user.” Hey, we are people. So people make errors? Whose fault is that? Usually its the computer’s, the system’s, or, in actuality the people who designed or programmed it.

Our technology is designed by technologists who know what is good for that technology, namely highly precise, accurate, detailed information. Well, that may be good for machines, but what about what is good for people? People are bad at precision and accuracy. At monitoring dull stuff for long periods. Force us to do those things, to act like machines, and of course we will fail. You call it human error: I call it machine error, or if you prefer, bad design.

Why not make the system for people? Eliminate error messages. Replace them with collaborative messages. Consider Apple’s error message at the start of this essay. I had a filename that I wished to change. Moreover, I decided I wanted it to appear at the top of the alphabetical listing of files, so I decided to make the first character a period (which Apple calls a “dot”). I carefully typed a long new file name, “. Template for working documents” starting it with a period, believing that this would force the machine to order the file names the way I wanted them to be, not the way it wanted to do it.

“Bad, bad,” says Apple, don't you know better? Starting a file with a dot is our secret way of marking system files. You can't do that: start all over again.” And then it rudely discarded all my work.

That’s not very helpful, Apple. And here I thought you were the company that understood people. How am I supposed to know your secrets? And even if I did do it wrong by your obscure standards, why did you discard my work? Why not let me fix it?

What would a collaborative message look like? Like this:

Sorry, but you started the file name with “dot” and files that start with a dot are restricted for system use. You may start with any alphanumeric character or symbol except for dot: please edit the file name and hit “save.”

(
And the stuff I so carefully typed would be there, allowing me to get rid of the offending “dot” and make any other modification I wished, Right there in the message!)

That’s still not the best way to do things. A truly collaborative system would tell me the requirements before I did the work. If there are special ways you want stuff entered, tell me before I enter it, not afterwards. How many times must we endure the indignity of typing in a long string only to be told afterwards that it doesn't fit the machine’s whims (more accurately, doesn't fit the whims of the programmer)?

Where else can this philosophy be applied? How about in the entering of new passwords, where after much thought you enter a carefully generated one, only to be told that it doesn't have enough characters, or lacks upper and lower case both, digits, or non-numerical characters, and of course when you supply these, then you will be told that that particular character is not allowed. Or how about the entry of phone numbers or dates where you are only told the proper format after you have entered it the way the entire world understands except for this computer program, whose programmers wanted it in a way that was the least amount of work for them?

Or how about …. Well, you get the idea.

How do we manage this change? Cast shame on systems that scold rather than collaborate. Insist on a people-centered design philosophy. Get rid of the term “human error.” That term almost always really means “bad design,” or such awful procedures that human error is almost guaranteed. Force people to do inhuman things and they will make errors. (Like not telling them how to do something the way you want until after they do it the way you don't want, so you can scold them.)

Error messages punish people for not behaving like machines. It is time we let people behave like people. When a problem arises, we should call it machine error, not human error: the machine was designed wrong, demanding that we conform to its peculiar requirements. It is time to design and build machines that conform to our requirements. Stop confronting us: Collaborate with us.

*****

Don Norman wears many hats, including Director of the newly formed program, Design at UC San Diego, cofounder of the Nielsen Norman group, professor (Harvard, UC San Diego, Northwestern, KAIST, Tongji), business exec (former VP at Apple, executive at HP, and now cofounder of a startup), on company boards and company advisor, and author of best-selling books on design: Emotional Design, Living with Complexity, and Design of Everyday Things. Learn more at jnd.org.

Loren Freed

Freelance grantwriter | Content marketing writer | Chief Gardening Officer

4y

Boy, this hit a nerve.  And the unfortunate thing is that, 6 years after it was posted, it still resonates and is probably even more true today.

Like
Reply
Natacha Bertin

Python Microservices & Integrations Developer | FastAPI | AWS | Serverless | React

6y

Hi, Don. I admire your work but I can't agree with you on this subject. First, the error message exists because the users are, as the programmers say, so creative. In order to make a system you must assume some things (like keeping the dot files for the system, for example). And then, when the users 'create' (AKA "don't follow your way of thinking", this is something predictable, so you are always going to have this cases), you should show an error message. Second, the users don't read if there's nothing wrong. Actually, one of the best sellers about web UX was called "Don't make me think". If you warn them about the password format, they usually don't read or they simply think that the advice is not for them: they're going to do it anyway. So, this let us the validators. But if you think a little more about them, there's users that want to write a forbidden thing on that field (don't we all want that in some point?). You must show a message here too. On the other hand, the language and the way of addressing to the users has luckily changed. Into the human format. Good article.

Like
Reply
Srinivas "Vasu" Chinta

CEO & Chief Designer at Prabal Design

7y

Let me first tell that I loved reading this article. I profoundly agree with Don Norman and have no qualms saying so. I think it should not be treated as a 'finger being pointed' at all programmers. Now, let me add my piece of 'explanation' on why I am in total agreement with this article. I was reading the comments that you should not blame the tools if you are a bad craftsman. Well, fair enough. In the case of a hammer, if you fail to hold the nail properly and eventually hurt your finger, it is not at all a hammer's fault. But, we are speaking about a computer. With all its prowess, it can do all its talking before, during and after the execution of a task, which regular hammer cannot. And all that Don was saying is, please inform upfront. It should not be impossible! Instead of saying that 'you committed a mistake', tell them that 'please do not do this as I (the system) cannot handle it'. Going back to the hammer example, the elders or the wise ones would usually give you enough warnings or suggestions before you begin to hit. I think a computer, with all its programming abilities, can simply play both the roles of wise men and the tool itself!

Liene Ozola

IT Business Analyst, CBAP

8y

The post is more about attitude to a person on the other side of gui, about keeping in mind user experience when designing.. There are enough ways to make it better, from a way how system logic is designed to user friendly forms/input fields/error messages. I also vote for roll-over txt hints for input fields and readable/helful error messages (not scary ones) :)

Like
Reply
Kaspars Trautmanis

Engineering Manager at Meditec Ltd

8y

Sorry to be harsh, but how often people actually read what system tells them? :) I have had otherwise nice and kind people telling me there is an error in system, it doesn't do this, doesn't do that! Well, did it say anything? Yeah, but I don't know what, I just pressed Escape! Like, aaargh!!! The only message that could have appear there, is warning that changes are not saved and if I want to discard them. And, by the way, giving you a long and detailed memo how your files shall be named is NOT user friendly. User friendly would be simply ignoring input which is not allowed at specific time or place. And showing dynamic hint with short text (a pop-up hint, not a dull message box which you need to close afterwards) why it is not allowed if you are attempting to input that.

Like
Reply

To view or add a comment, sign in

Insights from the community

Others also viewed

Explore topics