Web Apps Suck

Written by David Frampton @ 6:23 am, November 14, 2009

I know I’m going to get hate mail for this one… but here goes.

Recently I’ve been thinking a lot about user interfaces. I became enraged by the terrible user interface of Daz Studio, and then had the pleasure to use Motion. I have generally been using a large number of applications lately, and am currently creating my own fairly complex level editor for Chopper 2.

I could write many blog posts about all the different lessons I have been learning recently, but one in particular stands out.

Web apps suck. I’m talking about the web interfaces to the google suite, the photo editors, the facebook website. Apps that run in web browsers, any app that requires an internet connection to function at all, and does most of its work on a server somewhere.

Of course web apps have their uses. I don’t think they should all just go away, it’s nice to have a web app when nothing else is available. But what I’m saying here, is that compared to a native application, web apps are very much worse, for many reasons.

In the most simplistic sense; you need an internet connection, so your ability to access it is unreliable, you get presented with foreign looking – and behaving – buttons and sliders, and the service could go up in price, or simply disappear on you at any point.

But even if that is OK to you, and you like living on the edge, there is still the yucky user experience due to client-server communication. This is what I’m focusing on here.

The latency between action and response in web apps can be horrible, and this fundamentally comes down to the latency between the client and the server. A problem that I can’t see any solution to in the next decade or two.

Currently, the internet can be a little slow at times. It doesn’t matter if it’s due to server overload, bad local wifi or network, slow or misconfigured databases or whatever… there are many, many reasons why a ping to an app server might take a while, and it always seems to take ‘a while’.

Clicking a button in a local/native application, doing a minor computation, returning and displaying the results takes no time. I mean you simply cannot perceive the time it takes for the button to flash, simple data to get computed, and the result to be displayed. It’s stupidly fast.

Clicking on any button in any web app could take any amount of time. Usually it’s fast-ish. Sometimes it even appears to be as fast as a local app. But it’s not, and sometimes it is far worse.

So every web app, no matter how much it tries to pretend to be a native app, is reliant on the connection to its server, and hence can’t rely on some data being available. If you change some state, you can’t guarantee the state change was valid until the server responds. If you scroll down a list, you can’t guarantee that the new items being revealed will be available, or even still exist.

Most of the time it kind of works, kind of a bit slow, but OK. Every now and then someone turns a microwave on, and you wait. Every now and then someone changes a standard or a server config file, or you upgrade your browser, or the database overloads, and it all goes to shit. You might even lose all your data, despite your everything-in-triplicate local backups of your own machine’s data.

This is Bad. It will always be bad. As technology improves, the technology that uses it also improves. And web based apps are a step behind. Web apps will always have higher latency, more interface issues and a less ‘native’ experience. They will always be a worse user experience than native apps, with less user control.

So why make web apps? Because it is easier. Because a developer made a website, and suddenly it turned into a web app. Because a developer wanted to make something simple for Windows and Mac and iPhone and Linux and couldn’t afford to do it properly. Because a developer intends to inject advertising into the experience at a later date.

Most web apps don’t even have a revenue model. Those ones are figuring out how to capture people so they can spam them or sell their details later.

Web apps suck. They are a poor substitute for a native app, and will continue to be so, for many reasons, for many years to come.









4 Comments

  1. mk

    David, I’d like to point you to the *exact* opposite mentality at quirksmode.org (http://www.quirksmode.org/blog/archives/2009/11/native_iphone_a.html). They argue that web apps are more portable and that native apps are unnecessary in most cases. They argue this hold true especially in light of so many developers jumping ship recently citing Apple’s broken approval process, and that we would not have this problem if everyone simply used web apps.

    For the record, I agree with your approach :)

    Comment by mk — December 3, 2009 @ 10:36 pm


  2. Michael Swann

    Wow, talk about an inane post.

    You state that webapps are ‘very much worse’ and for many reasons, then dribble on for over a page reiterating only a single reason, and then accuse webapps of being made by people who just want your money anyway.

    Yet your own products arent free either.

    Comment by Michael Swann — December 4, 2009 @ 12:59 am


  3. David Frampton

    I did focus on a single reason, yes. That was the reason I found most interesting, the others (some of which I did mention in passing) are mostly no-brainers.

    The last bit was just an off the cuff ‘nail in the coffin’ remark. I stand by it though. When a user downloads and pays for one of my products, they know what they are getting and what they are paying for. When a user gives away their life story for any free product, they may be signing themselves up for a flood of spam, or may become hooked on a product that later disappears behind a pay wall.

    If I was writing a non-opioniated article for the press I wouldn’t have said that. But this is a blog, sometimes I let my emotions slip through.

    Thanks for the hate mail though, I was beginning to get disappointed.

    Comment by David Frampton — December 5, 2009 @ 9:07 pm


  4. Jonny

    Web applications depend on a stateless, connectionless protocol that was only ever intended for retrieving static documents. This statement alone makes the notion of web applications utterly ridiculous.

    Web apps suck, and here are some key reasons why my position on web apps has remain unchanged since I discovered what they were some ten-plus years ago.

    1. Widgets
    HTML widgets are sad and lame, and if you want a grid panel you’ve got to build your own by fudging a horribly bloated and convoluted hierarchy of div and table elements. Perhaps the most useless are form elements and are all-but obsolete now a-days as devs move to XHR-dependent apps. Did you know Ext-JS’ grid panel uses a separate table for each row? Does anyone even realize how resource-hungry that is? The button elements are so horribly inconsistent and broken that most devs are making their own bloated custom-widget buttons.

    2. Stateless
    Interaction is stateless and revolves around web-pages. Unless your app is XHR-dependent, to refresh one view on the screen you must refresh everything. That is both time-consuming and resource-hogging. You must also save the state of all views due to the lack of state and where do you save it? Well unless you’re using something like Google Gears, you have to send it back over the Internet all the way down to Arizona and back just for a bloody redundant refresh operation.

    2. Appearance
    Unless you’re relying on a heavily bloated toolkit, the appearance of web applications is never 100% consistent from web browser to web browser. Then when a new web browser is released, everything is broken anyway (toolkits included) and nothing works let alone looks right.

    3. AJAX
    In order to cope with the harsh reality of the three aforementioned challenges, devs take an AJAX approach to web applications. It takes the edge off of developing web-applications while consuming even more resources and power because of all the convoluted and bloated hoops the toolkit has to jump through such as bloated redundant HTML markup and scripting. More and more web applications are increasingly dependent upon interpreted Javascript (the sh*#@iest programming language in existence) to control views and even business logic to some degree. GWT applications are almost entirely Javascript, and although run better than hand-written Javascript, it’s still slow and interpreted Javascript and does not even remotely compare to compiled code.

    4. Power Consumption
    Web applications consume ridiculously more electric power than compiled desktop applications because of all the hoops a developer must jump through to force the Internet platform to facilitate a stateful web application. Based on the depletion of clean running water sources on our planet, we should be finding ways to eliminate hydro-electric dams, not build more. I’m not even going to get into any CO2 debate over this.

    Choosing to write a web application when a desktop application will suffice is nothing more than lazy and cheap and as someone who never buys lazy and cheap I have no support for such endeavors.

    Comment by Jonny — December 15, 2009 @ 8:33 pm


RSS feed for comments on this post.

Sorry, the comment form is closed at this time.