The magic of web development quality

James Norton
Dec 9, 2015 · 2 min read

Any sufficiently advanced technology is indistinguishable from magic.

Clarke’s Third Law


When I built my first single page app running in a browser in 2001 there was no tooling. We had no JavaScript development environments, almost completely non-existent debugging tools, an untested technology called XMLHttpRequest which later became popularised as AJAX, and very low power computers. The browser was primitive and very much singular. In 2001, Internet Explorer 5.5 dominated but didn’t conform with most standards at the time, and I don’t remember being especially concerned with minority browsers. Progressive enhancement wasn’t a part of the toolkit and in fact, users were relatively hard to come by given the relatively low penetration of the internet in general.

On top of these problems, JavaScript was not a well understood language at all and JSON had only just been described fully. It was the wild west! I don’t remember the code I wrote all that well, but I can’t believe it was especially object oriented and it almost certainly didn’t follow the SOLID principles or conform with YAGNI, DRY or KISS! The one thing I am certain about, it had no tests at all.

So what’s changed?

Web development is software engineering

It has always seemed appropriate to me to talk about front end web development as a software engineering discipline, but is it? My favourite definition of engineering would seem to suggest so:

Engineering is the action of working artfully to bring something about

I have yet to find any principles of software engineering that don’t apply equally to HTML, CSS and especially JavaScript. The really hard bit is applying those ideals.

Mature tools including excellent libraries and test frameworks, a well understood language with repeatable patterns that are SOLID and an outside-in test first approach. Progressive enhancement and responsive web development techniques allow us to have true cross browser support that is future proofed. Even CSS can be tamed these days with efficient pre-processors.

Supporting every conceivable device type — mobile, desktop, tablet, TV, smartwatches, fridges, POS terminals and more — is now possible with one codebase. Web development is now truly cross-browser, not just multi-browser.

We can use a variety of reporting tools to understand how our application evolves over time including test coverage with the likes of Istanbul and actual performance measurements by deploying SiteSpeed and real user monitoring tools like mSpec.

These days we are spoilt by a developed and developing language, mature automated testing tools and a good understanding of how to make our code conform to the single responsibility principle as well as all the other basic software engineering tropes.

Modern web development feels like magic

My 2001 self would look at the software engineering qualities and measurements we can apply to web development today, the tooling that is available such as WebStorm, Jasmine, Node, Grunt and SASS and he would think they are magic.

If you enjoyed this, please recommend it by pressing the “heart” button below. Thanks!

James Norton

Written by

I love tech. I love the web. I love building successful products and teams. I work at ASOS doing all these things (but these opinions are entirely my own!)

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade