Things fail or otherwise go wrong all the time; to believe otherwise is to be unprepared for reality.
You might have a great usability story for when things work, but what user wants to hear “Have you tried turning it off and then on again?” when something goes wrong?
Come start your journey of being able to ask the right questions for your application domain for what should we expect to happen when things start going off the happy path.
How can I find ways to delight the user when something “unexpected” happens?
What kinds of reduced functionality can we deliver while things are breaking, and then get them back to a good state.
Could we even deliver the ultimate goal, giving the user a great experience while the alerting and monitoring team is getting a swarm of Severity 1 errors that would normally cause them to be panicking.
3. Preface
• I love Graphic Designers
• This talk started out of frustration
• Thank you
4. Image from James Petts - https://www.flickr.com/photos/14730981@N08/11930527256
5. Iron Pyrite
• a.k.a. Fool’s Gold
• Looks pretty
• Initial Perceived Value
• Not much you can do with it in the real world
6. A Good User Experience:
• Delivers value to the user
• Reduces effort to get the job done
• Is invisible
• Just works
• But what if it doesn’t?
7. The Real World is Messy
• Things break
• Failures Happen
• Let’s Accept It. Not Fight It
8. Mistaeks We’re Made
• Designing for the happy path
• Static Assets
• PowerPoint/Keynote
• Animations (if lucky)
• “Nobody thought about that”
• “That would never happen”
9. Kind of Failures
• Net-Split
• Bandwidth
• Latency
• Site is “Unresponsive”
• Dependent Service Down?
• Others*
* http://rgoarchitects.com/Files/fallacies.pdf
12. Your User Doesn’t Care
• It is on you, not a service provider
• How can you still deliver value when things go
wrong?
• This is where the user’s experience really begins
17. Provide Some Levity
• Be Helpful when the user messed up
• Github 404 pages
• erlang.org’s not found page
18.
19. Provide Some Levity
• Acknowledge you messed up (and apologize)
• Twitter Fail Whale
• Reddit down time messages*
* https://github.com/reddit/error-pages/blob/876f3e689206551722fbe77374e7739f54b52847/504.reallydown.html#L152
20. Make It A Game???
• Track how many times they have failed
• Give them “rewards” for failures
• Real, or emotional
• DOOM faces?
• Give them something to be grateful about
• People can’t be grateful and upset at the same time
23. Can one failure take out your
entire system?
• How can we isolate that part of the system?
• Can we safely restart it from scratch?
• Is it critical to the entire system?
• No, really, is it critical to the entire system?
• Can we work without it until it gets better?
• Do we have different, and unrelated, way of getting that
information?
• Can we provide “The Next Best Thing”?
27. Automated Assistance?
• Analyze Event Streams and Analytics
• Common user behavior
• Uncommon behavior for a specific user
• Can we helpfully take control on behalf of the user
• Assisted driving
• Don’t let the user mess up
36. –Leslie Lamport
“There has been considerable debate over the
years about what constitutes a distributed
system. It would appear that the following
definition has been adopted at SRC:
A distributed system is one in which the failure
of a computer you didn't even know existed can
render your own computer unusable.”
http://research.microsoft.com/en-us/um/people/lamport/pubs/distributed-system.txt
37. Self Healing / Regenerative
• How can I know that something is wrong?
• What is supervising/monitoring this?
• Can I safely “turn it off and on again”?
• Can this all be invisible to the user?
39. –Peter Senge, The Fifth Discipline
“Systems thinking is a discipline for seeing
wholes. It is a framework for seeing
interrelationships rather than things, for seeing
patterns of change rather than static
“snapshots.””
40. –Nassim Nicholas Taleb, Antifragile: Things That Gain From Disorder
“Some things benefit from shocks; they thrive
and grow when exposed to volatility,
randomness, disorder, and stressors and love
adventure, risk, and uncertainty.”
42. Call to Action
Start thinking about these things.
Ask how things can break.
You might not be doing anything “critical” at this point
of your career.
But you never know what the future holds for you
(or one of your coworkers).
43. Where to find me
• @stevenproctor
• https://www.proctor-it.com
• https://www.functionalgeekery.com
• https://www.github.com/stevenproctor
• https://www.linkedin.com/in/steven-proctor