THINKERBIT DARK MODE

When things go wrong, don't sugarcoat your error messages

April 28, 2017

I've been using a budgeting app called YNAB (You Need A Budget) for a few years now. It was originally a desktop app with a barebones mobile client for adding purchases on the go, synchronized via Dropbox, and it worked pretty well. Their site is beginner-friendly and approachable, which I appreciated as a young college student figuring out how to keep track of my finances.

I used that native app combo until 5 weeks ago when I decided to move over to YNAB's relatively new web-based client and pay them a subscription fee. People found a lot to hate about their move to a SaaS (software as a service) business model rather than a one-time purchase, but I'm not mad about that. If I were a small team trying to juggle multiple codebases across multiple platforms, I would see the appeal in switching over to using web technologies and changing to a long-term business model instead. Paying them continuously will also, on paper, help them improve the app more quickly and confidently than they'd be able to otherwise, which I'm happy to support.

All that said, I was pretty disappointed to find myself completely unable to do my weekly checkup and re-balancing at basically any time today because of a large technical failure that brought the entire app down from roughly 10am to 7pm.

Screenshot 2017-04-28 16.41.23
Side note: why doesn't status.io convert the UTC timestamp to the viewer's regional time?

Before I go further, I should say that I'm not super angry and writing about YNAB's bad day out of spite - the webapp is still barely a year old, technical issues happen even with native apps, and the engineers at YNAB definitely had a far worse start to their weekend than I did.

I can't blame some people on Twitter, however, for being less understanding.

Screenshot 2017-04-28 17.15.34

The thing that annoyed me more than the outage itself, and the reason I'm writing this up as a sort of real-world case study, is the cutesy error message that replaced the app while it was down.

Screenshot 2017-04-28 16.36.40

YNAB Is Getting Better

At this very moment we've pulled the YNAB website into the shop to do some maintenance and improvements. You can check YNAB's status page for more detailed information. Either way, things should be back to (even better than) normal shortly.

In the meantime, listen to the best mixtape ever.

Some users like Kelly in the tweets above seem to like the mixtape (I'll admit, I smirked too) and don't mind the app being down. I imagine the majority of YNAB's (probably younger) customers are okay with it too, or maybe just haven't noticed how long the outage has been going on for.

But if I were a small business owner trying to reconcile some important accounts or an employee trying to budget my latest paycheck (on the final Friday of the month) before kicking off a nice weekend with my family, I would probably see the cheekiness of this error message and take it as a cue to investigate my export options.

Unless your app or service is mostly for entertainment or inconsequential to a person's 9-5 productivity, overly-cutesy error messages should be reconsidered, even if they're "on brand" like YNAB's is. I give them credit for linking to their status page, but the text makes it sound like a good thing that their site is down. If they were updating the site at 4am EST with some new features or actual improvements then sure, this message could be appropriate. A message hinting that everything's dandy and some routine maintenance is going on that'll be over "shortly" feels a bit dishonest, especially after the first few hours.

Of course, Occam's razor says that this is just the default error message that's applied any time the site goes down, and that it's intentionally written to cover multiple scenarios (with a positive spin). I'm guilty of doing the same thing, because spending time on error page logic never feels worth doing until a failure occurs, at which point it becomes even less of a priority and gets forgotten until the next time something happens. YNAB is hardly alone in this regard, but YNAB's page feels particularly sugary sweet in today's context.

I write this not because I like to come off as a harda** who complains about happy mixtapes, but because it's a particularly salient example of the importance of copywriting and a brand's disposition unintentionally making things more sour than they need to be. I'm no angel, but if you strive to be one, dear reader, here's what I'd suggest keeping in mind:

  1. If your product or service is related to finances or anything else important, double check the tone and honesty of your error message(s), provide useful links or resources to help the user if possible, and reconsider trying to dissolve tension with sweets.
  2. Tell the social media person to disable their scheduled tweets (ha), or better yet, provide status updates/links to people venting frustration.
  3. If you're a developer working on web-based apps, look into Progressive Web Apps. Google's Chrome team just uploaded a good introductory video series. I haven't built one yet, but functional offline web apps seem like the solution to a problem like this one, and I suspect YNAB's team is looking into them too. Cool stuff.

May 31st, 2017 Update:

YNAB's CTO, Taylor Brown, wrote a postmortem analysis on May 12th, and mentioned the error message:

Normally our maintenance is brief and planned. However, in this case, our “maintenance” message made it look like we were purposefully taking the application down on the last Friday of the month. It caused understandable confusion: “Why are they working on things on a Friday afternoon??”. I’m sorry about that! We later changed the message to say that we were having trouble.

I haven't seen the new one, but good.

Also this:

We are also looking at ways to make our applications less dependent upon our servers in general so that downtime or degraded performance is a non-issue, but that’s for another post…

Sounds like more local processing & web app stuff is in the works, which is good.