Performance is all the rage today, and not without good reason. With the rapid growth of the mobile-first world, spotty connections and underpowered devices are serious issues that every web project team needs to consider. However, “performance” is in danger of becoming a buzzword as it becomes thrown around without regard for what truly matters. We measure performance by micro-benchmarks, metrics of various programming techniques, or the difference between trendy framework A and trendy framework B's rendering cycles. Don't get me wrong. These things matter, particularly at scale. However, the truly important metric you should care about is *perceived* performance.
How fast does your application feel to users? After all, they are the ones who matter the most.
Do you think any of your carefully crafted personas care for one second about the microseconds of difference between for and forEach loops? I doubt it very much.
They do care about how long it takes to reach their goal, buy that product, search through that data, or whatever it may be that your service offers. There are a number of tricks and techniques we can apply to help with perceived performance, with much less hassle and much greater effect than any kind of architecture or technology change.
Does It Really Matter?
The first question you need to ask yourself is, “Does this piece of content matter?” Chances are, your user doesn't need or want every single piece of data you have to offer. By prioritizing data, you can load the important features as fast as possible and leave the unessential for later. The ability to prioritize your content and understand that a user does not want everything at once is essential in creating performant experiences, particularly on handheld devices.
You'll often hear people argue that above-the-fold content should be your loading priority and while this can be true, ages can often be shaved off load times and rendering performance by making smart decisions about what to cut in the first place. Does your user need 10,000 rows of data or all 20 columns? Most likely not. Give them what they need and they'll keep coming back.
What Is It They Say About Assumptions?
Assumptions are the mother of all f$#@! ups, or so the saying goes. However, in the world of performant mobile applications you have to make assumptions about your users. If we make educated assumptions about our users, and back those assumptions up with data, we can make logical decisions about content loading, pre-loading, and interface design.
We use this technique on AudioCrawl. The “load more” feature is actually one page ahead of the user at all times, giving the impression of lightning-fast pagination. When the user clicks “load more” we simply display the content that has been preloaded in the background and fetch the next page ready for the following interaction.
Instant feedback is also extremely important in ensuring users perceive your application as performant. Another technique based on assumption: give your users instant feedback and confirmation on actions they take. It's a trick and can't be used in all cases. You wouldn't want to make assumptions about banking transactions, for example. But, where possible, it can do wonders for your users.
Facebook's Like button is a good example of this. You click to like your friends hilarious status update and Facebook shows you the liked state instantly. Now there's a small chance your like won't be successful, we all know glitches in the matrix can occur. However, the chances of that are slim and not worth disregarding the instant gratification you get from seeing that your friends paleo breakfast photo was liked instantly.
Instagram and other photo-uploading apps often use tricks like this. Including, pre-uploading your image in the background while you write overly-long hashtag lists so when you do get to clicking “upload” it feels super fast.
The Convergence of Disciplines
These techniques can drastically improve a user’s experience and perceived product value, but they have to be thought about early on. Unfortunately, there is no “performance” button we can click at the end of a project development cycle.
The modern web must turn to the diversity cross-functional collaboration delivers when people of all disciplines work together to create amazing experiences. It's this convergence of technology, design, data, product management and customer support that sets the Ubers and the Tinders of the world apart from those in the startup graveyard.
Truly understand the wants and needs of your users to anticipate how to design optimal experiences from the onset of your project. Remember, performance is in the eye of the beholder.