The art of the error message
thestyleofelements.org
thestyleofelements.org
Of course, Decided to see how fast I could trigger an obscure error message in the app. 2 minutes in:
1. Enable offline mode 2. Click a song that hasn't been downloaded yet 3. "Song unavailable" is the error. No explanation why.
While I have certainly seen at least five of those, I'm not surprised that you've managed to trigger the one without it in two minutes. After all, an app like Spotify probably has significantly more than 12 error messages in it.
[0] https://drive.google.com/file/d/0B6f9wHapAofKRFdvU3BUbVZjckU...
Better error messages start with better architecture.
That said, I wonder if you could invert it. When trying to make a seemingly arbitrary architectural choice, then perhps to break the tie you can ask yourself "if an error occurs, will this allow me to get the right info to the user?"
Definitely. That is something I've never heard discussed, and it really should be discussed. User experience is influenced by the inner works of the engine, too.
1. your computer broke 2. your network/wifi card failed 3. your wifi access point failed 4. your hub/switch failed 5. your router failed 6. your cable modem failed 7. your ISP failed 8. the URL you were trying to reach failed
The error message you get is just a generic one with no clue at all.
I've always thought something like a traceroute that shows the blockage (like how CloudFront does when an origin server goes down).
I also like the emphasis on giving explanations that help the user understand what they can and can't do next. When users see errors, they immediately go into the mode of trying to make it work. They get hyped up and focused; they don't relax. A vague "friendly" message will just frustrate them further if it doesn't help them understand what to do next.
I think this is one aspect of UX where engineers can provide a unique perspective. I think designers and product managers are often surprised by the amount of energy a user can pour into struggling with an error, and the level of anger and frustration that can result. As programmers we can identify with that experience better than most, so we need to take it on ourselves to write good error messages and, when possible, present them to the designer as part of the design that needs their attention and vetting.
IMHO any given request should be able to return multiple errors for the different stakeholders who will be consuming them. A good JSON error response could be something like:
{ 'display_error': '', 'field_errors': { 'field1': []}, 'internal_error': '' }
The idea is that display error is something shown to the user, possibly a form-level error when relevant. Field errors are validation errors for user-submitted data. And internal errors are things that aren't shown to users, and are only meant as a way for backend and frontend devs to communicate amongst themselves to help debugging.
> It's not my fault
> Be gentle in how you prompt people to make corrections. They want to feel smart when they use your app. If something goes wrong, give clear recovery instructions but spare them the technical details. If you can fix it behind the scenes, even better.
You can find the other design principles of Android quickly summarized here: https://developer.android.com/design/get-started/principles....
These design principles are important for any developer, on any platform, and they're short enough that they're easy to remember.
Error messages were to be two sentences. The first one explains the problem. The second sentence says what to do about it. There were rules for buttons, too. "Your file has been lost" should have a button that says "Sorry", not "OK".
I believe the idea was that making the user click "OK" was adding insult to injury, and "Cancel" wouldn't have made sense either.
That said, the word "sorry" doesn't appear in a HIG from 1992 (the earliest I could find in PDF form).
On re-boot, it would say "you did not shut down your computer properly".
He got a call one day from a customer who told him the error message read "Fuckity, fuckity, fuck, everything's about to get stuck". His response on the phone was "Well, the good news is I know exactly where the error is..."
It was in a loop you shouldn't be able to get into and so his defence was that this error was "impossible".
Eh, I guess it's still better than the (thankfully very rare outside of deliberate glitches) error Nintendo consoles give you now. "The software closed because an error occurred". Thanks for that useful piece of advice.
I'm sure I'm sitting on the wrong side of countless user studies that say to the contrary, but when an exception or problem occurs, I really dislike the feeling of helplessness. Something isn't working the way it is supposed to, and often times I can only rely on myself to fix it; this is particularly relevant for companies with non-existent support services, like Google, where you're basically at the mercy of what other more adventurous and capable users are able to fix on their own. To me, tossing up a "funny" error message when there is no support channel is incredibly frustrating, because not only is there no one I can ask for assistance, I can't even do research myself because I have nothing to go on except for a caricature of the WebDevs or a Frowny-Face and the steps leading up to the problem.
Again, I'm sure I'm on the wrong side of countless studies here, but I can't figure out how this is better than at least some sort of error message.
I also dislike the first person error messages. "We are sending ...", "Let me fix this" when you are clearly 'talking' to a computer.
This is completely off topic, but I was a UX study participant last year, it was an interesting experience. They told me to do as I usually do when surfing the web, and to verbalize my thought process.
I opened the website, and a huge nonmodal advertisement to win some $15 piece of garbage pops up. On pure instinct I click ctrl-w to close the tab, and state "what an obnoxious advertisement, I am boycotting this site".
It went downhill from there.
The subsystem that understands the error doesn't have the context to tell the user what to do about it, but the subsystem with context doesn't understand the failure mode in enough detail to actually give the right advice.
Anyone have a link?
He talks a bit about error messages. I found that by searching for `message` in the transcript generated by selecting the 'Open transcript" menu option of the ... button.
Hth.
> Error messages should be expressed in plain language (no codes), precisely indicate the problem, and constructively suggest a solution.
?
Half the time in CRM or NAV, it's either an error code with zero google results, or, "general error."
And yes, I know about tracing.