The Evolution of Web Development

Just like in the amazing “Evolution of Dance” video we will be going through all the major highlights of the last few decades, except in relation to web development instead of dance.

But very much unlike in “The Evolution of Dance” we won’t stop in the present and will be projecting where Web Development is going so that we can explore interesting questions like:

  • “What capabilities should I be investing in right now?”
  • “What is the impact of microservices on front-end development?”
  • “How do we deliver Javascript based applications to the next billion users who can’t really run Javascript?”
  • And; “What is that server doing in my front-end?”

I am not saying there will be any dancing involved, but I am also not saying there won’t be any dancing either.

To understand the evolution of web development, we need to look at where we are and how we got here.

  • 1842 – We should start at the start, paying homage to Ada Lovelace – who created the first program.
  • 1942 – We fast forward 100 years to one of the first digital computers, the ENIAC Six. The problem with the ENIAC is the men who’d built it were shipped off to war, leaving six women to work out how to operate it – and they were largely forgotten in history. Which is crazy given they made such a massive contribution to the invention of programming.
  • 1952 – Grace Hopper came up with compilers, to make programming easier and more accessible.
  • 1969 – Bob Taylor thought about a computer network that could span the globe – Arpanet.
  • 1978 – Ward Christensen came up with BBSes, while snowed in with a modem. This was an amazing step as it linked computers around the world, anywhere you could connect by phone. This led to the first arguments over using the phone to call someone while someone was using BBSes… and you could only have 1:1 users:phone lines.
  • 1984 – Radia Perlman invents the Spanning Tree Protocol, which allowed people to connect multiple networks. The impact of the ability to bridge networks at scale is difficult to fully convey.
  • 1985 – Nicole Yankelovich created Anchor Links, letting people link between places in a marked up document.
  • 1989 – Tim Berners-Lee creates HTTP and HTML, under the world’s most under-stated job title “Web Developer”.
  • 1992 – Marc Andreessen creates Mosaic, which had the momentous ability to show text AND AN IMAGE! That really brought things to life for a lot of people.
  • 1993 – Rob McCool created CGI-BIN (Common Gateway Interface to BINary) which hugely changed the capabilities of the web. It let you create HTML on the fly, by calling out to a C program.
  • 1994 – Rasmuc Lerdorf creates Personal Home Page Form Interpreter – PHP. Another game changer. CGI-BIN was too hard for a lot of people, but PHP was much more accessible.
  • 1995 – Hakon wium Lie creates CSS. This allowed us to stop using tables and spacer gifs, a dramatic step forward for web development and design.
  • 1995 – Brendan Eich creates JavaScript. Just a little thing…
  • 2003 – Mike Little makes “The Comment That Changed The Internet”, suggesting they fork ‘b2’ which became WordPress.
  • 2005 – Anne van Kesteren, XMLHttpRequest – the standardised version of what Microsoft had created. This kicked off the AJAX era.
  • 2006 – John Resig, jQuery. Hugely changed the game for adding behaviour to web pages, it was more accessible and efficient.
  • 2011 – Sophie Alpert (lead and top contributor) releases React, which changed the narrative of developing for the web.

So what we are seeing over the course of a few decades is the progression from flat documents, to logic on servers, to logic in browsers. This kind of progression keeps happening in IT!

  • Back in 1943 we had mainframes, and people thought the world would only ever need a handful of them.
  • In 1977 even the founder of DEC couldn’t imagine people wanting a computer in their home.
  • Then in 1981 Mark Dean came up with the personal computer.

We have a sort of pendulum effect – we go back and forth between centralised and decentralised computing, we go back and forth between the server and client.

But we are really moving along two axes – Cool vs Easy. How cool is it, how much can it do; vs how hard is it to do those things.

  • Mainframes weren’t very cool or easy
  • Traditional apps and mobile apps are cooler but not particularly easy
  • Front-end apps are cool and arguably easier

Angel's Landing

Photo: Angel’s Landing, a difficult path but an incredible view.

But where do we go from here? So how do we get to cool AND easy!? How do we get there?

Level up the browser:

  1. WASM, which will change the scope of viable client-side applications
  2. variable fonts, check out variablefonts.dev
  3. Web Speech API, which can change how we interact in huge ways
  4. Web USB, making the browser closer to being an operating system
  5. Media Recorder, another aspect of conversational interfaces
  6. Progressive Web Apps, how do we make a great mobile experience without writing separate apps
  7. Push Notifications, another step towards PWAs
  8. WebGL, 3d-accelerated graphics inside your browser
  9. Web Monetization

Level up the server:

  1. GraphQL, which is a massive change to how we create APIs. REST was always pretty restrictive. “Dave was right…” This really changes how we think of the backend, the whole relationship between frontend and backend is different.
  2. We are reaching a point where we can have true separation and have pure business logic on the back end. They’re stable, so we’ll slow down the rate of change (and innovation) on the back end. It’s hard and expensive to change backends, but you also don’t need to change them as often. They’re also exceptionally logical as it’s computers talking to computers. Frontends change a lot; and users are very random creatures – we still need to test UI with humans.
  3. We currently have static hosting or server hosting. Static is scalable, simple, cheap. Server is flexible, deployment is clear, SEO is good, there are a lot of opportunities to tune and improve performance, NoJS which will be a huge deal for the next billion, we can do personalisation and localisation easily. So what do we do? SERVERLESS! Which is… MAGIC! but what next?

Introducing FABs: Frontend Application Bundles. Trying to create Docker for front-end. Remembering Docker didn’t invent anything so much as it was the One Ring To Rule Them All. FABs aim to be 100% portable, so you can build once and run in many places with a lovely light bundle.

@evanderkoogh