Web development as we know it, is dead

Web development as we know it, is dead.  We keep looking for the common runtime that can run everywhere.  We yearn (remember Java) for the platform that allows us the promise of “write once, run everywhere”.  This, in the global sense, is a pipe dream.  My comments here are targeted for custom software that businesses rely on.  These are commonly referred to as business applications, or line of business applications.  The days of writing a business application for the web and expecting it to serve all users is over.  Only in a world where 99% of your users are using pretty much the same type of computer is this possible. (desktop/laptop computers – PCs/Macs)

I started web development in 1997 using Microsoft’s IDC/HTX technology that ran on IIS on Windows NT 4.  Soon thereafter, Microsoft developed Active Server Pages (ASP), then .Net, then MVC, now Web API, and is now working on TypeScript as a way for C# programmers to develop JavaScript for HTML5 applications using classes, namespaces, and some typing help (see my TypeScript FizzBuzz example)

For custom software, the web was a HUGE breakthrough in a world that saw software packages as things you deployed via floppy disk, and then CD ROM, and installed on every single computer on which it was used.  For companies developing and deploying custom software to a large number of users, this was a huge pain.  Remember that some of the first proponents of browser-based custom software and business applications were from corporate I/T departments that were bearing the burden of deploying and updating desktop applications.

Over the last decade, web applications for business have dominated.  This was a big new capability: run the software without installing it.  We can’t discount this.  It was huge.  The computing form factor, however, was unchanged.  It was the desktop.  In 2000, you were lucky if you had a 17 inch CRT monitor.  By 2003, 19 inch was becoming more popular, so early web applications were build with 1024×768 target resolution. 

Fast forward to 2013, and if a web application doesn’t have a responsive design, we scoff because it’s difficult to use it on the smaller web browsers found in mobile devices.  HTML5 represents a huge leap forward in capabilities for web browsers everywhere.  HTML5 is the next incarnation of the “write once, run everywhere” dream.  The same pipe dream.  The problem isn’t in the “write once”.  The problem is in the “run everywhere”.  And don’t get me wrong, I love HTML5.  This is my real license plate.

With HTML5, we try to target HTML5, CSS3, and JavaScript (ES5) in order to make one codebase function the same across all types of computers.  This isn’t possible because our code is being interpreted radically different across browsers on Windows, Mac, Linux, iOS, Android, and WP8.  Because the runtimes are different, we find ourselves using libraries like jQuery to on-the-fly adapt to platform differences.  We look to things like LESS to help us decompose our CSS that is bloated with browser/platform specific tags.  Because of all these issues caused by differing runtimes, we sometimes find it easier just to tell our business users: “just run Chrome.  It will save us a lot of money”.  Essentially, that puts us right back in the boat of choosing a runtime platform.

I’m discussing the world of business software here, not the consumer space where even a wrong choice of color will cause users (and revenue) to be lost. 

Web development, as we know it, is dead.  It had a great run.  Applications were greatly simplified with only 2 tiers to manage: the application, and the database.  We “told” ourselves that we were still 3-tier because the browser was the 3rd tier, but we had little control over that. 

The new world and the new face of web development for the business world of custom software is one where the application runs on the web server and is merely a set of APIs.  No presentation.  Talk about forcing separation of concerns (SoC).  This new world is one where we must recognize that the shape of computers has radically shifted and that clients are, once again, fragmented.  We will not be able to write one client application to serve all people or all platforms.  The new web applications of this decade run headless on the web server and merely interact with multiple clients.  We will be on the hook for developing as many of these clients as we determine is necessary to serve the business need.  And these different computing form factors will likely be differently designed.

For instance, an HTML5 client is likely going to be common for many scenarios including seldom-used features like maintenance screens (it’s really easy to do these here).  On the other hand, for people on the go, they will need to perform some functions from wherever over a 3G/LTE connection.  For this, the business needs to select iOS/Android/WP8 for the target platform.  This mobile app with then just talk to the application running on the server.

Soon, we will need to develop some client apps that run on the upcoming wristwatch from Apple and the eyeglasses (Glass) from Google.  And with TVs becoming so cheap, it is just a matter of time before it makes more sense to write a client for a display in the office instead of hooking a full PC into it (we’ll control the UI with the TV remote).

Yes, an era of web development has passed.  It will certainly have a long tail, but existing web systems need to expose their functions with HTTP APIs in order to support clients for necessary platforms.  We will never, as an industry, stop chasing the dream of “write once, run everywhere”.  After all, it makes too much sense.  But as long as the definition of “everywhere” keeps changing, we will be forever chasing.