People pay for performance. Fast cars are pricey, next-day shipping is more expensive than having to wait a week, and the speedier CPU in your new laptop costs more.
Performance is also a feature of a product, and something that should be traded off with other features when deciding what is in scope for a release. It should not be taken for granted or considered an after-effect of all other product decisions.
Dieter Bohn’s recent article on smartwatches highlights this pitfall:
How long are you willing to stare at it as it chugs along trying to achieve the thing you actually want to do? One second? Two seconds? Surely not more than three. Let’s call it the Three-Second Rule: If something takes more than three seconds on a smartwatch, they blew it.
On most smartwatches, a lot of things take more than three seconds. When that happens, you shouldn’t spend those seconds dreaming of a future smartwatch that will be faster thanks to the inevitable march of progress. You should spend them being annoyed by the product managers who created software that was designed for some mythical future processor instead of the thing actually inside your watch.
Fast is relative
Assuming it’s ticking along, an analog watch can show you the time in about as long as it takes you to glance down at your wrist. A paper notebook is instant on, never runs out of batteries, and the pen or pencil lets you write extremely quickly and accurately.
A smartwatch and a note-taking app can do a lot more things than a Timex or a Moleskine. However, when it comes to performance, smartwatches and note-taking apps are judged relative to the performance of existing products. 3 seconds may be extremely fast for what the smartwatch is doing on the hardware it’s doing it on, but that doesn’t matter if customers expect 0.3 seconds.
The reverse is also true. Consider email compared to writing a letter. Email is much faster than writing out a letter and sending it by post. Years ago, people were happy to send and receive email even if transmitted via a slow, 14.4K modem (if not an even slower 1200 baud!), because email plus a slow modem was still faster than snail mail.
Making the tradeoffs
It’s easy to say performance is the most important feature of a product, and must trump all others. It’s also easy to ignore performance and hope that the features of a product don’t slow the experience to a crawl or cause it to consume an excessive amount of resources. The right answer is somewhere in the middle, and also involves having a plan.
Here’s one high-level outline of a performance plan for your product:
- Set performance goals. You need to figure out what is considered adequate performance for your product or feature, as well as the range from exceptionally good to exceptionally bad. You can do this by studying competitors’ products, traditional solutions, as well as prior releases of your own product. Set these goals with the customer’s expectations in mind, not with your feature list, dev costing, or architecture in mind.
- Anticipate performance issues. Before a new feature is built, you should try to predict performance issues it may raise. Steps should be taken to mitigate if not outright remove these issues. Here, tradeoffs will occur. Sometimes addressing performance issues will come at the expense of more engineering work, other times at the expense of scoping down a feature, and still other times at the expense of adding resources to the device and charging customers more.
- Measure as you go. With your goals set, you need an efficient way to measure your product’s performance, and you need to alert people when features are falling below goal. Often the right answer here is something automated and objective; stopwatches and your laptop connected to a public wifi access point will only get you so far.
- Invest time to fix the issues. It’s important not to underestimate the time it will take to fix performance issues. Tradeoffs will occur here as well. You’ll need to decide whether it’s more important to fix a performance issue versus a functionality or UI problem at any given time. And, sometimes, you may be forced to delay shipping a feature in order to have more time to fix its performance issues.
Keep performance top-of-mind
On my first product team, we had someone focused on performance testing. He had this giant, ugly trophy that was the performance trophy; I believe it was called the Joey Award, and had a caricature of a kangaroo on it. You, the developer, won this trophy if you happened to own the slowest feature in the product. You had to place this trophy on your desk for everyone to see. The only way to get rid of the trophy was to improve the performance of your feature such that it wasn’t the slowest feature anymore.
This trophy made it very obvious who had the slowest feature at any given time. But, more importantly, it kept performance visible and top-of-mind among everyone on the team. Seeing this visible marker of slow performance every day, and receiving regular emails about who the new recipient was, kept everyone on the team thinking about how to make their feature faster and consume less resources.
Performance is delightful
Delivering a product with great performance doesn’t just mean a better user experience. Great performance lets customers get things done more quickly, builds loyalty, and gives customers a reason to brag about your product to friends. While not always easy to pull off, a product with great performance is a path to a delightful product.