Christian Heilmann on Building a “Simpler, More Accessible Web”
Christian Heilmann recently gave a presentation at the Typo3 Developer Days titled “Let’s make a simpler, more accessible web” (via Geoff Graham) that speaks directly to my soul.
The web has exploded since the mid-to-late ’90s, which is when I started dabbling in HTML, becoming exponentially more useful and powerful, and even necessary for many aspects of modern life. At the same time, building things on the web has become exponentially more complicated — which, as Heilmann points out, need not be case, and ultimately risks making the web more complicated and costly for developers and users alike.
I could quote Heilmann’s entire post, because I agree with practically everything that he writes, but here are some key takeaways:
- The web’s base technologies — HTML and CSS — are simple yet very reliable and forgiving. If I’m missing an HTML tag or using a CSS property that the browser doesn’t recognize, it doesn’t freak out. Rather, the browser keeps loading the page as best it can. Which is a good thing.
- A lot of modern web development is essentially (and unfortunately) JavaScript development. While JavaScript is very powerful, it’s also very brittle and unforgiving compared to HTML and CSS. Thus, a better approach is to use JavaScript as an enhancement while providing stable fallbacks for when it (inevitably) fails.
- As web development grows more complicated and “highly architected” (to use Heilmann’s term), it gets harder for new folks to pick it up. Which is unfortunate, because there are so many awesome things happening, web-wise. (For what it’s worth, I get intimidated by JavaScript-centric development, in part because it often feels like a violation of the separation of concerns.)
- Web developers should always develop with the users’ needs and convenience in mind, and not simply privilege ours. Or as he puts it, “what ends up on our user’s devices is what’s important, and how easy it is to consume.” There is value in building websites and apps that are easy to maintain and upgrade, if only for our own sanity, but that’s not preeminent.
- Arguably my favorite point in Heilmann’s post is that good web development involves giving up control over what we build and ceding it to browsers and user preferences. He gives several CSS-related examples, like moving away from pixel-perfect layouts and embracing the web’s inherent fluidity via grid/flexbox. He also advises more reliance on browser capabilities (like built-in caching and preloading) rather than building something custom that does the exact same thing.
I could go on, but you get the idea. Basically, keep things simple, rely on proven standards (e.g., semantic HTML), avoid and remove unnecessary cruft, and resist the urge to build something clever and original just for the sake of doing so. Not only will your life be easier, but your users will enjoy an improved experience.
Oftentimes when I look the increasing number of frameworks, complicated build processes, etc., I just want to quit web development altogether. But a better approach would be to remind my fellow devs that web development, at its core, can and should rely on simple, time-tested technologies. It doesn’t have to be a never-ending quest to embrace the latest, greatest, and most complicated.
Do you really need to use Tailwind to design your site, or would you be better served writing your own CSS? Do you really need to install all of those packages and dependencies? Should your CSS be mixed in with your JavaScript? Does everything have to run through an intensive build process? Do you really need to use React or VueJS, or are you just doing so out of habit? Does your website have to be an SPA? I could go on…
But here’s the rub… Does simply asking or considering these questions make you feel uncomfortable? Do they seem heretical, even? If so, then might I humbly suggest two things? First, you could be making your life as a developer more difficult than it needs to be, and second, you might also be making your users’ lives more difficult as a result. Neither of which no developer in their right mind should want.