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 1024x768 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.

Comments

Rush said on 2.28.2013 at 11:00 AM

This sounds a bit extreme. It's not that big of a deal. I don't know any good business applications that were designed with 2 tiers either. If you have a good architecture things don't have to change much. Web API is ASP.NET under the hood. Swap WebForms for MVC for Web API for whatever is next. Whatever it is its still going over the web. I still have to present my application to the user. Today that might be done with HTML in a web browser and tomorrow it might be with a new UI technology on my google glasses. I don't see how this is a huge shocker considering you once wrote "Out on the edges we see UI, Infrastructure, and Tests. The outer layer is reserved for things that change often. These things should be intentionally isolated from the application core."

Jeffrey Palermo said on 2.28.2013 at 11:13 AM

@Rush,

You are right that this is no big deal, and if you systems have the proper separation, you can easily add the HTTP APIs necessary to support modern clients for existing and upcoming computing platforms.

The era of thinking of our applications and being delivered through the web browser - that's over.

Brian said on 2.28.2013 at 11:49 AM

Very interesting read. Client applications and platforms will continue to divide over time. All the more reason to support the most common standards between them like HTML and to a certain extent JavaScript.

Sean Feldman said on 2.28.2013 at 12:26 PM

Good article. What makes me wonder is where it will bring us humans beyond technological aspect. We're chasing advances in technology so badly, yet miserably failing to improve as specie :)

Luke said on 3.01.2013 at 6:14 AM

Dear Jeffrey,

when you talk about HTTP APIs are you talking about WebServices or REST.

If so, the future is in the recent past.

The problem is still maintaining a RICH client interface on different devices.

Java tried in 90's without lucky to do that.

JQuery is trying now with the problems you correctly noticed.

3270 and 5250 were a standard in the interaction the challenge is a new common standard.

Jeffrey Palermo said on 3.01.2013 at 8:46 AM

@Luke,

I haven't found that many people that agree on the definition of REST, so I avoid using the term. I'm talking about non-SOAP, regular HTTP web services.

Max Peck said on 3.01.2013 at 8:48 AM

Aww what's the big deal? Web development ain't dead.

The answer to the fragmentation problem? SPECIALIZE. Pick a platform that you want to write your application to and then write the damned thing instead of worrying about if it will run on every conceivable device.

The main problem is in wanting to be everything to everybody. Get over it!

Luke said on 3.01.2013 at 9:30 AM

Hi Jeffrey, my english is not so good and my keyboard lost a question mark, so the sentence was "are you talking about WebServices and/or REST?" in a comprehensive way meaning generally webservice.

I will stay in touch with your post cause finding a tecnique that standardize the client side developing would be sensational.

Time to market for android or ios or what else native application is still far from what needed for an aspx page.

The problem i find is not only about the final result but in the way your reach it.

Postback, html injection, run time code generation toghether with Ajax,javascript and so on took to what years ago was spaghetti code or even worse.

One instruction for all: "If not page is postback" should not exist in any development envirorment.

I'm waiting for the XWindow of the 3rd millennium.

Bye, Luca

pg said on 3.01.2013 at 2:45 PM

I agree with your conclusions, but not so much with your premises ;-) Using web applications for LoB is too often throwing the rich-GUI baby out with the deployment bathwater, compared to other options such as ClickOnce, Silverlight, and RDS. Even .Net removes some of the pain with xcopy deployment. And whose bright idea was BYOD? When did it stop being reasonable for the company to mandate, and supply, an identical pc/thin client/terminal on every desk?

Rory Primrose said on 3.05.2013 at 3:41 PM

"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."

Ironically this page was very hard to read on an iPhone.

responsinator.com

Oran said on 3.07.2013 at 2:28 AM

Just because "write once, run everywhere" hasn't happened, and HTML5 won't make it happen, doesn't mean web development as we know it is dead.

And just because HTML5 clients are fragmented doesn't mean that the native options are better. HTML5 is the lesser of the evils when it comes to the cost of dealing with client fragmentation. Even with the amazing cross-platform code sharing made possible by Mono, MonoTouch, and Mono for Android, you're still only able to achieve roughly 60-75% code sharing across the platforms. ( www.slideshare.net/.../introduction-to see slide 8 for the percentages on a real project ) Note that the 25-40% of platform-specific C# code is your user-code, not library code. In HTML5-land, I highly doubt you will have to write that much platform-specific code if you make appropriate use of libraries that handle this for you.

When you add ever-growing new platforms into the mix (wristwatches, eyeglasses, TVs, etc.), the cost of going native across all platforms becomes cost-prohibitive for all but the largest shops. HTML5 is the technology best positioned to minimize that burden, followed by the great work being done by the Xamarin folks.

Keith said on 3.14.2013 at 4:43 AM

Superb post however , I was wondering if you could write a little more on this subject?

I'd be very grateful if you could elaborate a little bit more. Cheers!

www.rightwaysolution.com Thanks

czxcc said on 4.02.2013 at 9:57 PM

dsdfsdf

Dan said on 4.09.2013 at 5:32 AM

HTML5 is widely regarded as a technology of the future, however currently it is still under development and it doesn't provide the reliability of Flash. Also, being mostly oriented towards structuring / presenting content for the web, it doesn't provide many tools for graphical development. As a consequence, even if developing animations and complex visual effects with HTML5 is feasible from a technical point of view, still (considering its limitations) the development process is not very fluent.

Website Development said on 4.23.2013 at 2:40 AM

Nice blog. Thanks for sharing this informative blog. Webgeometrics is a website design and development company in India that provides Web Application Development services.

Stevemartinfob said on 4.25.2013 at 12:47 AM

Fortune Innovations offer the best WordPress CMS Development services to various small businesses and corporate clients in Birmingham. For more details: <a href="http://birmingham.fortuneinnovations.com/web-application" title="Web Application in Birmingham">Web Application in Birmingham</a>