Thank you for calling Web Dev. How may we complicate things for you?

How web development became a never-ending spiral into greater complexity and frustration.

Thank you for calling Web Dev. How may we complicate things for you?
Photo by Maria Teneva / Unsplash

In the beginning was the word and the word was surrounded by HTML tags. And the Creator (Sir Tim Berners-Lee) did look upon his creation and know that it was good. But then into the Garden of Eden came some bright spark who decided it would be a good idea for web pages to be dynamically generated and there was much wailing and gnashing of teeth.

Poor biblical parodies aside, the thirty-five years of what we used to call The World Wide Web can be seen as either a continual progression of exciting new ways of interacting with information, people and entertainment; or as never-ending spiral into greater complexity and frustration. Those of us who have worked in web development throughout the past three decades are probably most likely to be in the second camp.

But first, take a little step back and I'll try to explain how the web works in a paragraph or two. Firstly we had HTML. That's the code that contains the text of a webpage and some basic instructions on how the text should be presented, where links should take you and so forth. It's been around in one form or the other since the beginning of the web. On top of that we have CSS which is a different type of code that tells the web browser how the page should look. Then we have the Javascript. That's the computer program that tells the browser how to manipulate what you see and hear on a webpage. When you click a button to make something happen (like refreshing your social media feed, for example) you're running a little bit of Javascript.

All of those things are used by the browser on your computer. At the other end of the story is the web server. This is the (usually) big fancy computer in a big fancy data centre that your browser connects to. You request a particular page and it send the appropriate HTML, CSS, Javascript and any images or video files to your browser.

And that's Web 1.0, only we didn't call it that then because there wasn't anything else, it was just "the web". Then sometime in the early 2000s people started to talk about Web 2.0. This was the dynamic, "participative" web. Wikipedia describes it as "websites that emphasize user-generated content, ease of use, participatory culture, and interoperability (i.e., compatibility with other products, systems, and devices) for end users". What changed for web developers is that we embraced Ajax - asynchronous Javascript and XML. Instead of web servers building those templated pages, we did it in the web browser, running Javascript code that fetched bits of data from servers and assembled them into the pages you see in your browser. It allowed us to create more dynamic pages that felt like they were faster and slicker because the page could partially load up whilst still loading some other content in the background. And so we accidentally invented a page full of "please wait while this content loads" spinners.

A gif of a spinning circle with the word "loading" under it
The Web 2.0 brought us the loading animation

As the web became more dynamic and responsive so it became more like any other piece of software. Sites like Gmail were fully-fledged applications in their own right. And, as desktop applications make use of the standard GUI frameworks supplied by the operating system, so web applications began to use frameworks to handle the tedious everyday functionality that was common across web apps.

Which leads us to where we are now: your standard web application these days is likely to be built on a framework such as React, Vue.js or Angular. Each of these handle a similar set of task (those associated with updating a dynamic web page) but do it in slightly different ways.

And so we find ourselves in the present day. We used to have lone individual "webmasters" who would be responsible for everything from the domain name, to the servers, to the code and to the content. Now we have frontend developers, backend developers, full-stack developers, content editors, accessibility experts, UI/UX experts and all manner of hucksters shilling search engine optimisation and God knows what else.

So far, so "old man shouts at internet". What's the actual problem? I see two: training and recruitment. Faced with a multitude of different technologies, how does the new web developer know where to start? Almost certainly they'll start with whatever cool thing the social media influencers are touting at that time; be it React, Vue, Nextjs, Astro whatever. And when you only have the one hammer, everything starts to look like a nail. It's a recipe for over-engineering. Web sites that have no need for interactivity or dynamic updates will be built from a starter project that pulls in hundreds of dependencies for no good reason. Each of those dependencies is a potential supply chain attack that bloats the download and the dev has no idea what they are even included for. And when the "cool new framework" becomes the "old boring framework" they'll move on to the next new thing without having ever really learnt how the previous one worked.

As for recruitment, it's a well-known fact that recruiters don't know anything about the technologies they are recruiting for. That's how you end up getting job adverts that ask for five years' experience using a tool that only got released two years ago. Recruiters work on basic pattern-matching. If they've been told the job involves working with React they'll screen out any CV that doesn't mention React. You could have twenty years of Javascript experience but without that specific framework you'll end up in the reject pile.

From an employer's point of view, the chances of finding someone who has experience with the exact mix of eclectic components you use is low. Finding someone who understands the basic principles of web development and can be trained on the specifics of your particular stack is far more useful. Give your junior developers training in web development from the ground up and don't just focus on the new shiny.



Mastodon