Lately, the idea of “How” software works as opposed to “Why” users use software has been on my mind ( Anyone who thinks that Web-based apps should take over the world is being naive at best. Web-based apps virtually never address the “why” that users use computers. How is having an application Web-based going to increase the user’s satisfaction or their productivity in the slightest? I can think of dozens of reasons why Web-based apps are more frustrating, less easy to use, less functional, and less productive than a desktop app. I cannot think of any pain points that a Web-based application relieves for 99% of the applications out there.

Why would I even want to bother with a central, Web-based repository for my documents like this? The free 64 MB USB thumb drive that one of my customers gave me stores enough for 99.9% of users to put every document they will ever need on, and nearly every computer on the planet can open and edit an Office document, whether it be Microsoft Office, Open Office, etc.

In addition, what third party vendor do I trust with a sensitive business document, to the point where I’m going to permanently leave my data on their servers? Umm… none. If I have a VPN on my network at work (and nearly every corporate network does now), the problem is solved right there. At the worst, I can call someone and have them email me the document, or I can VPN into my network and open a Remote Desktop session to my desktop PC.

I have never heard a user state their needs as “I need to do XYZ through a web browser.” I have heard “I need to be able to do XYZ from any computer I might find myself sitting at”, but if I wrote a well written application that did not need to use an installer, and is small enough to fit on a USB thumb drive, I have accomplished that exact same goal without having to even involve a network! [Addendum 4/3/2006: sMoRTy71 points out (correctly) that USB drives aren’t perfect solutions. This is an example of ways to not have to write a full Web-based app; another alternative would be to offer this same software (no installer needed binary) as a download. The point is, there is zero reason to write a Web-based version of an existing desktop application.]

These vendors of Web-based applications are not listening to their users, or even trying to put themselves in the shoes of their users. They are listening to the self congratulatory babblings of venture capitalists, Well Street investment bankers, techno-nerds for whom technology exists for the sake of technology, and so on and so on. Technology is a lever, nothing more, nothing less. If that leverage is not being applied to solve the problems the user has, it is a waste.

Every obstacle that you put in the user’s path hurts their productivity. Making an application depend not just upon a local application, but having a constant Internet connection, the uptime of a third party’s webserver, the performance of said server, and the end user having a PC that meets the requirements (including web browser configuration, a HUGE “if”) just throws more obstacles in the user’s path while giving them a second rate application that will ALWAYS be slower than native code looking at data on the LAN. This is “progress”?

This is the Object Oriented Programming Model gone to a hideous extreme. Let’s just abstract everything, stick half the parts somewhere else, stop caring what is actually happening on the backend, and call it a day. I categorically reject this mode of thought. It does not help the user one bit. It just creates a nightmare for me (the developer), the user, and the people trying to keep the network locked down. Everyone a Web-based app touches is made unhappy.

Think “mashups” are so hot? The real question is “if someone made this data store available to me on my local network, would my users be best served by having a ‘mashup’, or something running locally?” The answer is almost always “a desktop application built to order”. Software development isn’t about “cool”. It isn’t about “nifty”. It isn’t about what language you are using, or whether or not you are coding to spec, or whether or not you followed “eXtreme Programming” or “Agile Programmer” or “Ten Thousand Monkeys with Ten Thousand Compilers Programming”, it’s about meeting the needs of the users. To think anything else is a bad case of “developer hubris” and even worse is a waste of your employer’s money and your user’s time.

Web-based applications, except for rare occasions, does not address the user’s needs, it strokes the egos of those involved with the development process. Google’s ego is swollen to the size of a small country. They think because their fanboy base is so big, and because so many tech writers adore them (c’mon ZDNet, how many “Google Watch” type blogs do you need? Where is the “MySQL Watch” or “Oracle Watch” or “IBM Watch”?) that they are actually any good. The truth is, their software is in perpetual beta and exists merely for the sake of suckering people in to develop a critical mass of users, so Google can then plaster ads all over it.

Do you really want Google’s servers indexing your critical business documents and injecting their ads throughout them? When you give a map to your church’s special sermon about “Removing Lust from your Life”, do you want ads for every adult novelty shop appearing on that map ( When you send an email to your therapist about tomorrow’s appointment, do you want your browser showing giant ads to help you find a website for treating whatever it is that you’re in therapy for?

I have yet to see functionality in a Web-based application that could not (and usually does) exist in a desktop application. Everyone is going ga-ga over “mashups” involving Google Maps. I hate to share a little secret, but Microsoft has offered this functionality through MapPoint for years to desktop users as a simple-to-program ActiveX/COM object. The only thing that using Google Maps over MapPoint gets me is that it is free. Yes, that may be a big deal for many many people, but Google does not give anything away for “free”. What they mean by “free” is “you pay us with your users’ attention and gestures”. Do you want your users leaving your application or being distracted by Google’s ads? Neither do I. I am honestly surprised that Steve Gillmor (who understands “attention” and “gestures” better than anyone else) would support a mechanism where the attention and gestures are going to a third party in a process than actually subtracts value from your application.

Most users are fed up and frustrated with their existing desktop applications, which is why people are looking for a solution. The solution isn’t to start moving everything to the Web by simply replicating the existing, crummy apps with AJAX, but for programmers to change their mindset when writing code. Web-based, desktop, thin client, it’s all the same lousy software if the developers aren’t addressing their users’ needs.


Want to see who’s next On the Soapbox? Find out in the Blog Roundup newsletter. Use this link to automatically subscribe and have it delivered directly to your Inbox every Wednesday.