Looking back on four decades in the software industry, I’m struck by how much has changed. I started my career with punch cards and I am ending in the era of cloud computing. Despite all this change, many principles that have helped me throughout my career haven’t changed and continue to be relevant. As I step away from the keyboard, I want to share six ideas I’ve learned from my career as a software engineer.
Individual experiences are just data points along a distribution. What feels fast depends on the conditions under which it was experienced. Everyone’s conditions are different.
Lab tests may not be configured to be representative of the most common experiences on the curve, or any experience on the curve for that matter.
User-centric metrics require extra care to ensure that behaviors are emulated faithfully in the lab.
[…] An even better solution would be to build stronger data bridges between field and lab tools, so that the lab tool itself can make informed recommendations about the most realistic user profiles to simulate.
In this article, we will explore some of these native solutions that are available to the majority of your users. We will see some examples but we won’t go into all the subtleties, because other resources do so very well. Rather, the goal is to inform you of the existence of these techniques.
You could only get those metrics from Chromium. Are they really Google Web Vitals if you only can get them from one of the browser engines? I think if we’re introducing something that’s supposed to be vital for all users, it should exist in all browsers.
Almost all performance tools implemented the metrics (for Chrome) immediately. Google said jump, and web performance tool vendors said: ‘How high?’. A little more caution would have been good. I also felt the pressure of adding those metrics to the tools I build. Google’s monopoly on web performance metrics is not good for the web, I think.
I have worked on many sites and projects over the years, and I have found the single best way to ensure that quality is a core area of focus, is to make that work visible and easily understood. We must do more than just make things faster; we must be able to explain what we did and what impact it had.
If there’s connection one thing I’d like readers to take away from this post it’s that font-display: swap is a very good option for users with a fast internet. But its infinite swap period could be frustrating for users on very slow and unstable connections. If you have users viewing your site under these conditions (I’m pretty certain you will at some point in time), then it may be worth considering font-display: fallback or even font-display: optional. Both have a short swap period (or no swap period), meaning once the fallback font is rendered and the 3 second timeout is exceeded, the font won’t change for the rest of the page lifecycle.
Today, ES2017 is the closest to modern syntax and tools such as npm, Babel, webpack, and Rollup have made it possible to configure your build system and write your packages using this syntax. This post covers several approaches, and you should use the easiest option that works for your use case.
My goal is to improve the user experience and the business outcome day by day. I am still looking for a tool that tells me what to focus on today to make the most significant impact. As this is the perfect time of the year to create a wish list, here is mine.
Tech is always political. The way data is collected and handled is often biased, and many products are neither accessible nor inclusive. Ethical Design Guide is made to share resources on how to create ethical products that don't cause harm.
We believe that our system, coupled with a complete set of open-source models, would allow upcoming developers and us comprehensively study configurations under which optimizations fail to provide their advertised performance improvements.
Dropdown, navigation button, tooltip, collapsible panel, lightbox, tabs, switch like above…