There is this common element in user interfaces on every device and on every platform. Here’s how it goes: You press a button or a link or some piece of UI that does “something”. The next thing you see is a small dialog box asking you “Are you sure you want to do [that something]?”. If there were a hall of fame for irritating dialog boxes, this one would be its first inductee.
Here’s the inner monologue running through my brain when I encounter one of these in the wild: “Am I sure? Well of course I’m sure. I just clicked the button. Did you forget already? Are you having some sort of memory overload? Did I not look serious when I pressed that button? Or is there a big problem where users are accidentally clicking on that button so you need to confirm their intent a nanosecond after they request you do something?”
You get the idea.
Here’s why software developers put in the “Are you sure…” dialog (or as I like to call it — the CYA dialog). Invariably, there are things that you can do in software that make changes. Sometimes permanent changes. And sometimes permanent changes to your data. So… before the software will perform a destructive action on your behalf, they want you to be sure of the implications of your decision. This is a fine thing when you’re erasing a hard drive. In fact, if you’re about to erase a hard drive, or delete an account, feel free to put in multiple CYA dialogs, and move the buttons around so nobody can click them accidentally by rote. But in the normal cases, stop asking me. Just do as you’re told.
Now, we recognize that there are certain situations that are less potentially dangerous than erasing your entire hard drive, but still could cause heartache for the user if performed without the user being aware of the full implications of their decision. And there are steps to mitigate this:
- Undo. If the action is going to destroy some data, just save a copy of it, so after the action is performed, the user can un-perform that action. Yes, this is more work. Yes, this is a pain. But you are delivering safety and confidence to your user.
- Limited time undo. Let’s say that maintaining the ability for the user to undo their action isn’t impossible, but really expensive. Give them a limited time after completing the action. You could give them one chance post-destructive action to undo it, OR, give them a time limit (24 hours?) to undo their action, and then the changes are permanent. There are lots of minor variations on this scheme.
- Eliminate the functionality. That’s right. Just get rid of it. If the functionality is so dangerous, perhaps your users can live without it. Is there another way to solve this problem? Do users really need this particular feature? Etc.
- Better messaging around the action. If this information is so important that you need to put it in a dialog… just put it up front around the button in the first place.
Software that’s filled with scary warning messages is not a product that anyone falls in love with. They may use it, but they won’t love it.