Stop masking your crappy apps

How mobile application performance testing is the proven way to increase your app's user experience.

This may come as a surprise, but the “close door” button in an elevator does absolutely nothing to make the door shut faster. It’s purely a psychological ploy to ease the minds of impatient riders. It tricks them into thinking that they’re speeding up their ride when in reality it is solely designed to calm their nerves during unwanted seconds spent waiting.

Developers have taken pages from the elevator’s playbook as they attempt to keep up with customers’ rising expectations around application performance and quickly hide flaws. According the 2017 App Attention Index, which surveyed 1,000 people each in the U.S., U.K., France, and Germany, nearly two-thirds of consumers have deleted an app or abandoned a website after just one attempt due to problems with performance. Furthermore, the report showed that poor user experiences (UX) also takes an emotional toll, which is bad news for customer loyalty. With 56 percent of consumers reporting feelings of frustration and 27 percent feeling stressed or angry after a weak experience, it is clear that the stakes for UX excellence have never been higher.

One quick fix method commonly used by developers to mask an application’s flaws is related to a principle called “perceived performance,” which is the notion that a user’s perceptions about an app's performance needs to be managed. Examples of this technique can be found whenever you open an app on your phone. Those animated title pages that first appear are simply smoke and mirrors as the application takes time to load. A report by Microsoft calls this “benevolent deception,” which they found is becoming more heavily relied on as enterprise and consumer apps are growing more complex and users increasingly prefer applications with simpler, more intuitive interfaces.

Mechanisms more closely tied to an elevator “close door” button follow a technique called “volitional theater.” This concept refers to functions and displays that don’t correspond to the underlying processes.

They come in three flavors:

1.) System Images Deception: Designed to reframe what the system is doing

This category of deceptive UX includes the “percent to completion” load screen we’re all familiar with. Those images of filling bars, circles, sand timers, etc. are often misleading in truly depicting how far along an application is in completing something. Many times it doesn’t correlate with its progress at all and just stands in to distract the end user as the application takes time to load.

2.) Behavioral Deceptions: Designed to offer users the appearance of change

Here, UX designers use a host of optical illusions and cinematographic techniques like blurring to suggest motion when nothing is actually happening on screen. Examples include extra buttons or content that need to be scrolled through before the app is accessible. These often give the end user something to do as issues related to slow-performing software are being covered over.

3.) Mental Model Deceptions: Designed to take advantage of existing mental models about how the system operates

Some developers build on ways we’ve been trained by analog devices to mask performance problems for their digital equivalent. For example, think of how some developers have built upon the mental model people have for telephone calls and how that’s used for VOIP calls. A simple example is some VOIP apps will start ringing immediately after dialing a number even though the application hasn’t yet executed. Every extra ring gives the app a few more seconds to load.

However, instead of masking issues, developers feel that slowdowns or clunky design can and should be eliminated. It’s always better to diagnose and solve performance issues instead of merely covering them up or distracting the user with UX techniques that cannot keep up with consumers’ increasingly high bar for performance expectations. These seemly small slowdowns and performance hiccups can lead to bigger problems that completely turn off end users from your application and will make it difficult to compete in a new age marketplace of performance.

So where should developers begin in righting these deceptive wrongs? I urge developers to start solving performance issues by seeking a deeper understanding of their own application stack and dependencies so they can diagnose the root cause of the performance problems. A good start is evaluating the software and corresponding infrastructure dependencies through a holistic user experience perspective, which helps prioritize the goals of the end user and unifies all development teams onto a single metric.

For example, if a customer wants to “checkout” their shopping cart, they click the “checkout” button. Upon that single click, a request is made from the browser through the internet to a web server, which then calls an internal website, a database, and a caching layer. Each component within that call that’s invoked is responsible to fulfill that click, so we call the lifeline of that request a business transaction.

By viewing an application through this perspective, you’ll begin to understand what your customer is ultimately trying to achieve and see what problems are most critical to fix first. Starting from business transactions also unifies all engineering teams to view your system as a function of business processes vs. individual requests firing off everywhere. This is how you can start prioritizing and solving the problems that matter most to customers.

As application ecosystems continue to explode in complexity, it will grow harder to maintain optimal performance and release schedules. At the same time, more businesses are undergoing their own digital transformations and discovering the importance of performance management for the first time in order to stay competitive. Excellence in UX for the next generation of applications has to start by troubleshooting business transaction performance from the user’s point of view. From there, you’ll be able to drill down to the code level and intelligently capture the root cause that impacts the user, instead of a temporary fix.