JavaScript Frameworks Won’t Save Us
Front-end development has been moving very quickly lately, at least relative to the first couple of decades of web tech. In just the past few years, there has been some rapid evolution in some our industry’s fundamental tools and techniques – from static site generators, JavaScript frameworks and abstracted tools, to new CSS layout models and features – that have revolutionized how we do even the very basics of building websites.
A revolution, even? I’d say so – it’s more than a mere evolution, that’s for sure. There was a sea change in the industry a while ago, where back-end developers and application programmers became the the leading cohort of creators on the web, supplanting what we might call ‘traditional’ front-end-focused developers (HTML and CSS-focused developers, with some JS), and driving the development of tools and techniques that have come to dominate the industry (or so it might seem).
In Canada, most self-identified web developers consider themselves full-stack – nearly 70%, compared only 20% identifying as back-end only, and only 12% identifying as front-end). And yet, JavaScript is far and away the most popular language, and continues to become more popular. HTML/CSS (bundled together) ranks as second, but who knows what that really means.
The effect of this shift has been both good and bad. On one hand, essential development techniques and attitudes have made their way into the front-end world, which vastly improved the way websites are built. This includes project management techniques, developer-focused development workflows and environments, improved security protocols, greater diversity and better performance in build tools and technologies.
On the other hand, back-end developers – as a general rule it would seem – do not like HTML or respect the specification and related guidelines (if they’re aware of them at all), and mostly don’t appear to make the effort to understand CSS and are quick to criticize it as being ‘broken’. There have been some plainly ridiculous attempts to avoid dealing with the specifics of HTML and CSS through abstraction tools or methodologies (*cough* JSX *cough* CSS-in-JS *cough*), and using tools intended for complex web applications for simple web development.
I get it; doing things the same, old, possibly broken way is boring and dumb. Lord knows I’ve felt that numbing feeling of spooling up yet another site the same way as the last one, feeling like there has to be a better way. The web is supposed to be the medium of the future after all, of the bleeding edge; the tools and methods should reflect that. We should be constantly striving for things to be easier, faster, more secure, more maintainable, more powerful, more scalable, and more fun.
However, I’m concerned about what gets lost in this dizzy production. The promise of the web is in its accessibility – not just for users, but for producers; there’s an elegance in the fact that all that’s needed for a basic site is some HTML, CSS, and maybe a little JS, all of which requires nothing more than a basic text editor to write. I strongly believe that no one should feel as though they require a long list of tools to contribute to the web. Any such erecting of barriers and gate-keeping should be actively, even aggressively, discouraged.
But I think more at the heart of my concern than the tools for the creator is the prioritization of the creator. As suggested above, it would seem many the people building and promoting the adoption of these tools are more concerned with DX than with accessibility, proper adherence to specifications or best practices, fundamentally good user interaction design (confusing it for aesthetics), or even end-product performance (it’s already being shown that the most performant sites are still ones made with vanilla HTML, CSS, and JS).
Our job as web developers is to attend as best we can to the needs of users, whether in the form of content or tasks. The web, certainly now in its more mature form, has become as much a means of productivity as much as consumption. Without users, what exactly are we doing? I like making cool things as much as the next person, but we should never forget that the whole point of the web is connecting people and information. If the making of things on the web becomes more about the act of making things than the people using those things, we have lost the plot.