How we convinced everyone to care about technical performance
Main illustration: Michael Driver
Be it a marketing site that’s slower than your competitors’, an app that crashes on install, or a blog post that never loads, technical performance directly or indirectly impacts everyone at your company.
So why is performance often a black box that’s only cared for by a select few engineers at a company? Much has to do with communication. Performance improvements are often explained with complicated metrics and graphs, which make it hard for people to see the real impact it has on their day to day work. Exactly how slow are we talking about? What is the benchmark we are comparing it against?
Performance might be one of the most invisible parts of the user’s experience but it’s one of the most important. Intuit recently shared their efforts on reducing page load time from 15 seconds to 2 seconds (over 5x). During that effort, they observed a dramatic increase in conversions, for every decrease in page load time. For example, Intuit launched a new payroll platform, which led to an increase in page load time and a decrease in conversion rates. After improving the page load times by 2.5x, they saw a 14% increase in conversion rates.
Having the right information available to the right people can make a big and impactful difference, which is why caring about performance and optimization should be a shared responsibility across your organization. To make sure it matters to more than just engineers, we very recently took a small step internally and brought easily comprehensible performance metrics to the attention of our fellow Intercomrades (yes, that’s what we like to call ourselves ?).
What did we do?
Being part of a growing company presents numerous opportunities for optimization. Some of them are public facing, some are behind the scenes and some are purely for an engineer’s satisfaction. With more than 40,000 visits every day, Intercom’s website is one of the first things a potential customer or visitor comes across when learning about Intercom, which made it a perfect candidate for high impact performance upgrades.
A very small team of engineers set out to improve the load time of the site. We started with our page load time average, which at the time was 4.5 seconds. The first step was to identify the bottlenecks – Chrome DevTools was immensely helpful for this. Then we performed a series of operations that directly impacted the amount of data transfer, page load time, number of requests being made and caching and compression behaviors. Here is a short rundown of the tasks we performed:
- Compression: Reducing the size of images (you can use ImageOptim), videos (try FFmpeg), and other network requests, dramatically decreased the load time.
- Delay loading of non-critical items: Anything that does not impact the customer experience (tracking scripts, ad scripts, etc.) can be loaded on the page later.
- Caching: Assets that don’t frequently change can be stored and loaded by the closest servers or the browser itself.
We carried out upgrades and operations over a week. Below you can see how each day’s effort improved the load time of the site.
Better visibility breeds even better performance
Now that we had some good load times, it was time to set a benchmark. We monitored the page load times for a few days, and decided on 1.2 seconds as a healthy threshold limit. To help keep our work in check, we made this simple metric available to a wider audience. We needed a place where everyone whose work is related or impacted by the marketing site, should have access to this information. So, we built a Slack bot to report page load times (retrieved from New Relic Synthetics) into our #marketing channel every day.
An average time over the threshold, would send us a more unhappy message. Here’s how that looks, should it happen:
The Slackbot has become part of the broader teams’ daily routines. Modifications don’t go unnoticed, and there is genuine care about performance. Here is a nice conversation from our Slack channels after a recent improvement:
And while this bot is great for benchmarking and quantifying daily changes, it has also led to gamifying things and fun social banter:
Broader visibility can yield interesting findings and a more distributed responsibility amongst concerned stakeholders, and this was an early effort on our part. The idea of surfacing the right information to the right people in your organization can be applied in a range of settings. For example, you could measure and improve similar performance metrics of the busiest API endpoints from the past day.
These days, we are also trying to get the load time of our marketing site below 1 second. After all, if it can be faster, it can be better ?