Thursday, January 29, 2009

The (not so well thought out) case against Web apps

See The (not so well thought out) case against Web apps at its new home on bradley-holt.com.

I just read Neil McAllister's post: The case against Web apps. I couldn't resist sharing my thoughts on what he had to say (and I wonder now if his article was intended as a troll).

"1. It's client-server all over again... Scaling small server farms to meet demand can be a real challenge -- just ask Twitter."

Twitter is a bad example, Neil. By its nature Twitter requires a client-server architecture. Unless, of course, he's suggesting re-architecting Twitter as peer-to-peer application. Interesting idea, but probably more complicated than scaling server farms.

"Furthermore, security vulnerabilities abound in networked applications, and the complexity of the browser itself seemingly makes bugs inevitable. Why saddle your apps with that much baggage?"

The first part of that statement is mostly meaningless. Sure, unplug most applications from the network and you'll instantly have less security vulnerabilities! Is Neil suggesting that developers will have less bugs if they build the whole stack themselves? Doubtful. Having a large part of the stack maintained separately is a nice benefit of web applications. Developers can focus on getting their part right, and let other people worry about getting the other parts right.

"2. Web UIs are a mess... Buttons, controls, and widgets vary from app to app. Sometimes the menus are along the top, other times they're off to the side. Sometimes they pop down when you roll over them, and sometimes you have to click. That inconsistency hurts your development budget, but it hurts usability more."

Desktop applications are just as guilty of having inconsitent UIs. Programmers break the rules all the time regardless of the platform. We need more UI experts and we need to stop making programmers responsible for the UI.

"3. Browser technologies are too limiting."

So? The web has its own advantages that I will not enumerate here as they are (mostly) well known. It's a different platform. People need to stop trying to build web applications as if they were desktop applications (hint: REST).

"4. The big vendors call the shots... Increasingly, the evolution of Web standards is being driven by major browser vendors -- new features are implemented first and standardized later. Independent developers have little genuine input into the future direction of the Web. And that's to say nothing of the ongoing bickering between the various vendors. Does it make sense to rely on client-side software that's such a moving target?"

No one's claiming the standardization process is perfect. But, at least it happens mostly in the open. All it takes to solve this problem is for more people to step up and get involved in promoting web standards. Stop complaining and get involved!

"5. Should every employee have a browser? ... You could make a case that it's unwise to allow employees unfettered access to the Web if your company values productivity, particularly in high-turnover environments such as help desks and call centers. But if your internal applications are Web-based, you'll need to either host them onsite or maintain careful router or firewall rules to prevent abuse of your Internet services."

I'm not even sure what Neil's point is here. This is a company-by-company decision. If it's important for a company to block web access, then surely they can figure out how to write the appropriate firewall rules to allow their own web apps to work? Overall I thought this piece was not very well researched and had some major logic gaps. If its goal was to be flamebait then it did a good job.

5 comments:

Unknown said...

"We need more UI experts and we need to stop making programmers responsible for the UI."

I'm not so sure about this. Plenty of apps that have "UI Experts" also have lousy UI. Don't blame developers. I think a problem with having "UI Experts" is that they feel they have to do something special to justify their job; that is, instead of a simple standard UI, they need to come up with something flashy and cool.

Unknown said...

Unfortunately, your first point fails badly. He didnt talk about switching Twitter to a desktop application - he just mentioned Twitter as an example for problems you might get when scaling up your servers. Like "look, its not always that simple".

I guess many people stop reading after your first paragraph because of this.

Francois Rautenbach said...

The issue is very simple. Desktop applications have certain advantages and web applications have another set of advantages. Neil is a desktop guy so he naturally leans towards desktop apps and simply pointed out issues with web apps as seen from his perspective.

Neil made a mistake however to dismiss web applications. The solution is not the one or the other. Desktop apps are increasingly making use of web services while web apps in turn are trying to look and operate more like desktop apps. It is two worlds that are moving towards one another. (see http://www.alfega.com/images/stories/technology_progression.png)

We need to understand the benefits of both desktop and web apps and aim towards a solution that not only makes sense for the type of application, but also satisfy the needs of the industry that is targeted.

1a) Well developed desktop apps are easier to work with and are generally more productive than equivalent web apps.

1b) Web apps on the other hand does not need to be installed or upgraded, so bug fixes and improvements are immediately available.

2a) Desktop apps are easier to develop and debug and will generally execute faster than a web app, but code is more tightly coupled and releases are often further apart.

2b) Web apps are usually more granular in structure and can be developed by many individuals working on different parts of the same app at the same time.

I can go on and on, but I am sure you will get my drift.

Personally, I don’t believe that HTML and JavaScript are the best languages for application development and I don't believe that the current line of browsers are good frameworks for applications, but this is the best solution available at this point in time. Products like Silverlight and Air are good compromises, but they are essentially compiled apps that are not that much different from Java in their basic design.

My vote goes for something like WAML and the X-Appl framework.

Anonymous said...

@ Matt
Good point about "UI Experts" - the best know when to get out of their own way.

@ laZee
I think my first point still stands quite well on its own. So what that it's not simple to scale Twitter - what's Neil's point? What's the alternative? Shut it down? Re-architect it as peer-to-peer? I'm just not seeing how Neil can use this as an argument against web apps.

@ Francois Rautenbach
As I said in my post, "People need to stop trying to build web applications as if they were desktop applications." It's a different platform and different rules apply. Silverlight and Air try to make the web more like desktop applications and in the process "break" the web.

Kyle said...

@Matt
I think the people you're talking about are UI designers, or UI professionals, but certainly not experts in their field. A true UI expert will create the best possible interface, and he won't waste his time making unnecessary changes.