Does anyone remember back in the day when an application had an error, it actually displayed some kind of error message? Albeit the errors were usually cryptic, it was at least something that you could run with. Now if you look across the app ecosystem, there is a disturbing trend. When something goes wrong with an app, it’s going to just close and dump you to your home screen with no idea why. It used to not be in this way though. When an application had trouble starting up or it had some kind of unhandled exception, it would at least display some ugly modal dialog box and give you some kind of message and then it would close. Maybe these errors weren’t user friendly (ok, they definitely weren’t), but you could at least provide the information to a developer or support person and they would have something to work with. Now applications just crash and they dump you back to your home / start screen and the poor person that has to support it really has nothing to work off of. My question is how as consumers have we been desensitized and believe that this is now acceptable behavior for an application.
I could be totally wrong here, but I believe this all started with Apple’s launch of the iOS App Store in 2008. Apple, a company noted for putting user experience first, seems to be the root cause of this. Back when I could stand using an iPhone, I remember the first time I launched an app and it had an issue. It just closed and I was sitting there looking at my screen full of icons. I launched the app again and again it crashed and took me back to the home screen. Lame. I kept trying to open the app and there was nothing I could do. Finally, I uninstalled the app and reinstalled it and it started working again. How is that for user experience? This is the same company that shows a computer with an unhappy face when your hard drive goes bad. I get that consumers don’t always need the details of an error, but they should be available.
I thought surely it might get better after the years, but in fact it has gotten worse. Much worse. You see, Apple convinced all of us that its was perfectly acceptable for an app to crash and not tell you why. So much to the fact that when you started seeing competitors implement their own marketplaces, we see the same behavior. Just a few weeks ago, I pull out the Delta app on my Windows Phone to try and check in for a flight (one of the rare exceptions that I didn’t fly Southwest). My connection in the building was a bit sketchy so I launch the app, it tries to connect and has trouble and so what ends up happening? That’s right the app crashes. Frustrating.
The software development world is shifting into a world of sandboxes and Windows Store applications are no exception. Just a few minutes ago, I tried to launch iHeartRadio. It gets the screen loaded and then what does it do? It crashes and I am sitting there staring at my prize-winning start screen (I won $10 in the Windows 8.1 contest. :) ). This happens fairly regularly with Windows Store apps, so the tradition continues.
Holy crap! What if software developers start using this error handling technique on software that really matters? I would hate for the software for air traffic control when my flight is coming in to just crash and drop the operator to a command prompt. I sure don’t want that happening to the software that controls our defense systems. I know this is a totally different user segment, but we’re already seeing some of this behavior in business products like SharePoint where we get messages like “Something went wrong.”
The point of this article isn’t to just beat up on Apple. However, I really think it started here. The other competing app stores just followed the same model. As a result, we get the same experience. It seems for now that us as consumers have come to accept this behavior. Maybe this is a limitation of the app store technologies in use and proper exception handling just isn’t feasible. I don’t know. I do know that some platforms have crash logs available that are buried in various places. However, that doesn’t help consumers one bit. All they know is that the app they wanted to run isn’t working.
How do I think error handling should be done? Well first, it should never just crash without giving you a reason why. All exceptions should be caught, handled, and then close the application if necessary. A consumer oriented error message should be displayed to the user. Consumer don’t need to know the real reason why the application had an error, but they do need something to report. The error message should also have a course of action besides “contact your system administrator”. It should have a link to click on, a phone number to call, whatever makes sense. Lastly, there should be a way to get more detailed information about the exact error directly from the error screen. This can be a link that shows the actual error, stack dump, etc. The error should have a unique id (such as a correlation id from SharePoint) so that a developer or the support team can go find it after the fact. This assumes that the error information is being logged somewhere. It should be. Maybe, that’s a lot to ask for on a mobile device, but I don’t really think it is.
Am I completely off base here? Do you remember applications crashing in this manner prior to iOS? Leave a comment and let us hear your ideas! I’m not saying the old cryptic error messages were much better, but I think as developers we need to proactively think about a better error handling experience. Coming from a development background, I know that error handling is one of the last things we think about. It shouldn’t be though. With the invent of touch screen devices, consumers demand higher quality user experiences. There are a lot of great applications and web sites out there that really put UX first. These experiences are all great up until the point that something goes wrong. As consumers, it’s time for us to demand a better error handling experience.