And just to give you an extreme example, I started using computers back in the 1990s. So, think Windows 3.0, Windows 10, Windows 10, Windows 10. 1990s, so think Windows 3.0 era, and all computers were single-threaded. They could only do one thing at a time, which meant it was completely normal that if you had a button that you pressed to submit a form and it sent some data over the network, you'd press it and your whole computer would lock up for five seconds while that went. And no one complained. No one thought it was slow because instead of complaining, they were getting excited about this new thing that was called the paperless office, right? And it was the future, and your whole computer locking up for five seconds while you submitted data, it didn't feel slow because you were comparing it to the process of writing the thing down on a piece of paper, picking it up, and walking down the corridor and giving it to a guy called Dave who works in accounting. So, five seconds, that's super quick, right?
Then, of course, someone figured out multi-threaded application development, and now computers could do multiple things at the same time, and all of a sudden those old apps that lock up when you press the button, they start looking clunky and legacy. And there's been a history of this for the last 30 years. We think what we have is fast. Then we see something faster, and we're like, oh no, actually that wasn't fast. This new thing, that's fast. So, if you think about the three ways in which websites can be fast, there's data loading, scripting, and rendering. And as an industry, we have been all over numbers one and two for the last 20 years. We've got some amazing tools. So, for data loading, we've got edge computing and content distribution networks and WebSockets and progressive web applications, and all these things that basically give the illusion that just as soon as your app needs some data, it's just there immediately. Then, for scripting, again, we have incredible tools. So, JavaScript profiling tools are really good.
Rendering, we haven't really done much stuff with, because the tools to optimize rendering performance are a pain to use, and they're hard. And this also means that rendering is the new bottleneck. It is the low-hanging fruit, because we haven't done all the work to optimize rendering performance. And it's the new thing that ambitious teams are using to differentiate themselves and make products that look better than their competitors. My favorite example of this is Linear. So, Linear is an incredibly slick project management app. And they have a rendering budget of 8 milliseconds, because they want to, on the latest Mac or iPhones, if you change anything on the screen, they want to update it to 120 frames per second. And you can tell the difference. You can scroll through it, and everything feels incredibly smooth and fluid. And we know that's possible now, and we want that for our own applications. So, how do we get it? Right, well, it's simple. I'll show you the tools for how you debug performance issues, and you can see why rendering performance is so much harder to debug.
Comments