Thursday, July 12, 2012

Failing Gracefully

Fred Wilson's Friendly Failing blog post reminded me of one of my favorite phrases: fail gracefully. I think I first heard this term when I worked at Yahoo. Engineers and product managers would talk about what would happen when users experienced an error on a web site and they always wanted to be sure that the site would "fail gracefully."

Failing gracefully in this context means that a site shouldn't just deliver a random error message, but should explain to the user, in plain language, what had happened and what their next steps should be. These days, you see this done frequently with good 404 pages and other types of error pages on sites.

Ideally, an application will fail so gracefully that a user won't even realize that a failure has taken place. At Palo Alto Software, our site search uses a custom Nutch and Solr configuration to regularly crawl and index our sites. But, as with all things, this solution sometimes fails. In that case, the system automatically fails over to a basic Google custom search. The Google solution is still quite serviceable and works well. Most importantly, end users won't even know that our preferred solution failed and is off-line. For me, this is the best way to fail gracefully and we strive to achieve this kind of seamless failure in all of our development.

The other context for failing gracefully is when you actually lose. You lose a contract, a game, whatever. You failed to win. My high school rowing coach drilled this into me and my teammates: that no matter the situation, if you lose you take the loss gracefully, always respect the winner, and learn from the situation.  Not that we lost often (my coach was excellent), but if we did, we needed to learn as much as we could from the situation so that we could compete better the next time. When we failed, we failed gracefully and were never the sore losers who blamed a loss on others.

No comments: