Optimistic User Interfaces — When to use them
Smashing Magazine has a typically long (and slightly convoluted) article which talks about Optimistic User Interface Design. It can probably be nicely summarized in this:
After the like button is clicked, Twitter instantly updates it to the success state visually.
the server request has been sent but is still in progress. The “likes” counter number has not been incremented yet, but with the change in color, the interface is clearly communicating success to the user, even before having gotten a response from the server.
After a successful response is received from the server, the counter is updated, but the transition is much subtler than the instant color change. This provides the user with a smooth, uninterrupted experience, without any perceived waiting. (source)
Of course there’s a danger with these assumptions. The author talks about the fact that if we can predict that the server will work 97–99% of the time we should just program for that case. But as a user I can say… sometimes that sucks.
For example. I LOVE Trello. It’s powerful, fast, easy to use. But my biggest complaint about it is this:
In *theory* this is very noticeable, but when I’m working in Trello I often look up and spot this, and I have no idea if this happened 3 cards ago, or the card I’m currently working on. This message should show up IN THE CENTER of whatever I’m working on, not tucked into a corner!
Also, it never corrects itself. “some” changes “may not” have been saved.
So I always end up trying to reconstruct what I did over the last 2–4 minutes.
It’s even worse when I go back to a Trello tab from 30m or an hour early and see this. Did it get the last thing I entered? What *was* the last thing I entered on that other project 1 hour ago?
Or when I’m on the phone with a client. They tell me a number of things. I enter them, trusting my system, the client starts to shift to another topic and I realize this message is on the screen. Did they say 3 issues or 4? Did my long notes on the 3rd item get saved? Should I refresh my browser and move forward and *hope* it’s all there (it usually is) or should I stop the client and refresh my browser to figure out what’s missing (sometimes cards are missing). Or should I keep the tab open and just open a new tab and start working in case Trello will fix the problems? Does Trello even do that?
True this only happens 1–3% of the time that I use Trello, but that’s still once or twice a week, and it destroys my workflow and my trust and takes a few minutes of mindshare to get my piece of mind back after realizing that I *might* have lost some data.
I’d REALLY love it if at some point that red message turned Green and said “hey, it’s all set now”.
Jason’s Guidelines for Optimistic Design
- If it’s non-critical (a like button on Twitter) go optimistic.
- If it’s critical (like a submit button for a shopping cart) do not go optimistic.
- If it’s vague (like Trello) EITHER provide enough information, build in some “repair” code, or do not go optimistic.