Why Do We Build Web Applications?

Creating a good user interface is no trivial task, no matter if it’s running as a desktop application or inside a browser. When it comes to accessing server-side resources (a common thing in the corporate world) web applications seem to be the first choice nowadays. You have complete control over deployment and in theory platform independence.

However, there are lots of disadvantages, too, and I don’t understand why the alternatives are so often not even considered.

When building a sophisticated web application, you always have to work around the stateless nature of HTTP, deal with browser quirks, JavaScript’s idiosyncrasies and other limitations. Sure, frameworks exist to hide all that from you, adding layers of abstraction and complexity. In the best case, web development feels almost like traditional client-side programming. The question is, why do we put up with this?

Don’t get me wrong, I’m not talking about classic web sites here. Not even about community sites where users generate content. I’m talking about all those countless in-house applications that are used for data entry or management. A good example are corporate content management systems: They usually come with a more or less sophisticated web UI, but the number of people actually being allowed to edit content is small (the deployment argument doesn’t work here).

In many cases, a rich client is a more suitable and cheaper solution. If your users are a relatively small on-site group, there should be no logistic problem to provide them with up-to-date clients. Technologies like the Eclipse Rich Client Platform (RCP) or Java Web Start for even easier deployment should be considered. I’m quite confident that they would help to reduce development costs quite a bit and (if done right) could result in a far more powerful and ergonomic user environment. In web applications you have to reach for Ajax (adding a second programming language to your project) and still won’t get anywhere near a classic desktop application.

Maybe the problem is that there are too many web developers out there …

Advertisements
This entry was posted in best practices and tagged , , , . Bookmark the permalink.

4 Responses to Why Do We Build Web Applications?

  1. David Linsin says:

    I believe that your the question is not “why do be build web apps” it should be “why do we sell web apps” or “why do we provide clients with web apps”. That ultimately approves your claim that there are too many web developers, because the answer to these question is “because we can offer them web apps”.

    I guess this is a double-edged sword, in that the client is asking for a solution in terms of functional requirements and he expects us to provide them with a well suited solution. That could be a desktop or web app. Even if he is asking for a web app, but you consider a desktop app to be a better solution, you should clearly try to educate the client. If he refuses to at least consider your opinion it’s time to walk away.

    I know that’s the ideal world, you can’t always select your customers. However, before trying to implement something as a web app, which would only be possible to realize in a reasonable amount of time as a desktop app – go awol.

    Building a very lightweight client app as a crutch for the statelessness of HTTP is in my opinion a reasonable way to provide rich user experience in a cheap way!

  2. mafr says:

    Hmm, I guess you’re right. I consider myself a backend developer, but the web has so much mindshare that you simply can’t escape it. I spent much more time playing with the major Java web frameworks (and Django) than with Swing or RCP/SWT/JFace. As a result I’m much more confident in my knowledge in the web area than in classic desktop development. And that’s probably true for many developers.

    It’ll be interesting to see if rich client frameworks manage to take back some ground. I’m tempted to play with RCP again.

  3. I will go with David. If you are determined to provide a user friendly app, then it may be possible to persuade the client.

    Again it all depends on the approach and understanding and also the budget.

  4. Ynwiss says:

    In my opinion the answers to the questions above lie within the very nature of humanity, which generally tends to be a whiny, lazy lot to my mind. Of course noble exceptions exist, yet in my experience they are seldom to be found in the free-market economy. Laziness comes in many forms, but it is rarely surpassed by the laziness of the user, who is often overwhelmed by the terror of an additional click, to say nothing of other inconvenient processes, like the loading of a rich client. I agree, that in ideal world we would turn our backs on this sort of customer. But in the real world the user is often backed up by another specimen of humanity: the manager, who has always an open ear for the needs of the user and whose word bears much influence on the core structure of a software project. It is my guess, that it is the burning desire of every manager, to make the software he is supervising available to a public as broad as possible in the easiest way imaginable. And think of it, would it not be superb if your software could be used by anyone with a browser? Would it not be easy if anyone could access it with a single click? And when you come to think of it like a manager, would it not be profitable? And so the developer often finds himself implementing the user’s view on the problem, or to be precise that, what the manager thinks to be the user’s view, although other solutions might be more effective, secure and even a tiny little bit more comfortable for the developer.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s