01 Feb

The Case for Web Applications

Recently Neil McAllister wrote a column for InfoWorld making his case against web applications. I want to make my own case for web applications, pretty convenient since that’s what I want to do as a full time job.

It’s client-server all over again

Scaling small server farms to meet demand can be a real challenge … security vulnerabilities abound in networked applications

Yep scaling is always an issue, trying to scale web applications has been one of the hardest challenges of the new web2.0 business. With so many people jumping on and using web applications scalability is a real and definite problem.

However, it’s also a made up problem as Neil seems to be referencing in this column “enterprise application development”, which is very different from general purpose web applications, like Twitter, Mint, or RememberTheMilk. These are apps designed specifically to solve a particular problem with regards to a business, typically problems like accounting, Customer Relations Management, Project Management, etc. It’s a different type of web application and a different customer. Business have and are willing to pay for the use of applications to help them out, the average individual person isn’t willing to pay money for a to-do list or keeping in touch with friends. Paper/Email/etc is still a lot cheaper than even $5 a month.

So let’s take a look at the “enterprise application” market, shall we. The vast majority of business in the US are small business, with less than 50 people under them. Scaling even bad code to take care of 50 or so people at once is a pretty easy task. Even with bad hardware, cruddy network connections (all problems which I’ll address later), bad or even worse ignorant developers – scaling to handling 50 or so people is a relatively easy task.

If a business hires a contractor to build internal web applications, than scaling to average business is a no brainer, and for those business that are super size even Neil admits scaling at that point is easy as well:

Concentrating computing power in the datacenter is fine if you’re a Google or a Microsoft, but that approach puts a lot of pressure on smaller players.

The smaller players don’t need to worry about concentrating that much power in a datacenter, because they don’t need to.

Now the flip side of the coin, what if you are a business wanting to purchase your applications, well you have two main options when it comes to enterprise applications depending on the business, you can purchase a license to the software and you install it on your own servers, or you have subscription to the software, typically tied to the number of people using it. In the first case, scalability again falls back on the small business using the software (refer to my earlier arguments). In the latter case, scalability falls on the company building the software and there we have several economic factors at work.

  • The company is being paid not through some VC firm, but rather by you. IF the company has any decent business sense the pricing is set up in a way where as more people use the software they are able to purchase more hardware, more redundancy, etc to scale the software and thus the business.
  • The company’s fees are directly tied to how many people use the software, you add more people, the business charges you more. Again a proportional rise in the number of people means they are able to scale the business easily.
  • The bad companies won’t stay in business for very long. This isn’t always true (looking at you Blackboard/WebCT), but generally bad companies are replaced by good companies, because no one buys the bad software except in places where there is a monopoly or some other overriding reason. Currently there are some places where that exist, but I have hopes that as the web2.0 craze trickles from the average consumer, the enterprise application market will also experience a shift and the signs are there. I’m just waiting for it to happen in a few key areas: education, accounting for example.

His next major issue in this section is security, security is unfortunately an issue no matter how your application is built. I don’t care if you built your application in assembly for only a single processor, or you are coding for NASA and following their guidelines. Security is always a problem and will always exist, get over it. Web applications if anything have a few key benefits, by their nature data isn’t stored scattered on a bunch of hard drives across the company, instead all the data is located at the server. It’s ridiculously easy to backup databases and email them, or take nightly snapshots and ship it off-site. The web application can be put behind a password locked part of the company’s website enabling only people you want to see the data. Even a bad web-developer knows how to implement .htaccess control. This allows the company to manage all aspects of the password also, ensuring you don’t use bad passwords in your system.

His other point about security is that browsers are really complex, yep and so are Operating Systems, so should we stop using computers?

Web UIs are a mess

The Web’s stateless, mainly forms-based UI approach is reliable, but it’s not necessarily the right model for every application. Why sacrifice the full range of real-time interactivity offered by traditional, OS-based apps?

I’m not entirely sure where he is coming from here. We have a wide variety of UI designs available to the web, including ones that simulate an actual computer desktop. Are they all perfect, nope they sure aren’t all perfect. Are there some really impressive and innovative work done in the field of user interfaces for the web, yeah there are. What about the complaint that menus are not the perfect paradigm for applications for the desktop, yet open just about any program and you see at the top a menu, File, Edit, View, Options, etc all exactly the same irregardless of OS or the application. About the only applications that don’t fit into this paradigm are games, and even those have a similar look and feel, with a menu and sub-menus to access options. There is no right model for a UI either on the desktop or in the browser, they all have different things to communicate and thus need different ways to communicate.

His next complaint regarding web UIs is that they aren’t as interactive as the traditional apps. Here he has a point, although in my opinion  a slight one. Web apps are still very interactive, I’m typing this in the browser (in WordPress to be precise) and I have no need for anything else to make my point in a way that I desire and that I feel communicates it. What are you missing out on when you use Google Docs? How many people actually use in their day to day job anything more than what a free tool like Google Docs offers? My even better question is what happens when you have a tool designed to replace your desktop app in every way that you are actually paying for. I guarantee you, you won’t be missing much and may even be wooed by some of the tricks that web applications have over desktop apps. Also tools such as AJAX, Google Gears and other such things allow you to have as much a rich experience in the browser as you do on your desktop.

Browser technologies are too limiting

JavaScript has evolved into a respectable general-purpose language, but it can hardly be expected to be all things to all people. User interface code written in such languages as C++, Objective C, or Python can often be both more efficient and more maintainable than code written for the Web paradigm. … HTML and CSS are clearly deficient when it comes to rich interactivity

Is JavaScript a great language, no it isn’t but his argument is pretty weak because it lacks a lot of technical understanding. JavaScript is not the language that handles the vast majority of what happens in the browser. Typically JavaScript (JS) is used to make a single page interactive, by sending requests to other languages. Typically JavaScript does not (and really shouldn’t) handle your Business Intelligence part of the software. JavaScript sends request to other languages, PHP, Ruby, C#, ASP.NET, etc, via a method called AJAX that allows the server to do the work and update the page without the page needing to be refreshed. The point of this is that JavaScript isn’t and will never “be all things to all people” in fact the vast majority of web applications no longer even rely upon plain JavaScript, instead using Frameworks, such as jQuery or MooTools to write JavaScript that doesn’t care what browser you are on and creates a language that has a lot more features and capabilities. So his arguement lacks technical reasoning behind it.

The same goes for the second half, UI code is not exclusive to JavaScript, in fact very little if much UIs are typically written entirely or mostly in JavaScript. Also, yes it is true that HTML and CSS do have issues when it comes to desiring a truly interactive experience, such as desiring a video or other media to be included in your pages. My point regarding these is pretty simple, A: how often do you need in an enterprise business application a video or sound, B: Flash is a pretty decent substitute until HTML5 comes out (knock on wood) and video and sound are built into HTML.

The big vendors call the shots

Recently, Sun Microsystems CEO Jonathan Schwartz described the browser as “hostile territory” for independent developers.

This just doesn’t make sense from either Sun or Neil. The browser and the web2.0 world has been a boom for independent developers. The ability to build an application and launch it is even easier than ever. Especially when you combine the ability to globally market your application and tie advertising to people searching about the problem your app solves. If I was an independent software developer the two areas I would look at is the mobile market and the browser. The vast majority of developers have never been able to influence where the standards and the browser were going to head and you know what they are probably ok with that. That’s the fact that you accept when you build your product on top of other people’s work, regardless of it being the browser, the iPhone, Facebook or the desktop, there are always standards you must follow and accept, so it just doesn’t make sense to complain about the poor independent developers. The other aspect of this is that Firefox was created specifically to counter-act Microsoft and force Microsoft to build a better browser, and it was created and still built by independent developers. So his argument doesn’t make sense no matter which way you come at it.

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.

I can’t even wrap my head around the jumps Neil must have done to come up with this idea. Having access to the browser, makes you a better not worse employee (within certain constraints). Employees need the ability to take breaks first of all, and let their mind float. Especially information workers need the ability to push information off to the side and take a break and let their mind stir ideas around. The ability to access a browser allows an employee to search, the holy of holiest the internet has given us: search: the ability to look up the correct answer or the better way to solve a problem before doing it wrong or spending time getting up and asking someone else and thereby breaking 2 of your employee’s concentration. Employees now have the ability to find a better way to do their job, that helps you, a lot. Even accountants, arguably the one employee who you might think surely doesn’t need a browser and the one person who you want to ensure they don’t get comprised with adware, security holes, etc, could use a browser to find the correct tax information for this year or a new loophole to save your company money, or what is the correct form to fill out when you have a x, y and z situation occur all at once.

So yes every employee should have access to a browser, are there security issues involved in that, yep there are. Are there security issues involved in your companies financial records only being stored on a single computer, yep again. Life is a trade off, personally I think storing the data on the server, password protecting your data, and enforcing security standards such as anti-virus/spam software and firewalls, provides the average business pretty decent security.

What about the bad hardware/network connections?

Earlier in my arguments refuting the scalability issue, I mentioned that I would take on the bad hardware/network issue that I half mentioned there. And now I will. Umm it’s not an issue, seriously unless you are one of the horrors from DailyWTF, most companies should and do purchase half decent hardware to manage the problem. It doesn’t take a huge expense to be able to find and run servers capable of serving you know a business having 3 million unique users, somewhere on the scale of 10 million page hits a month for $6,000. Hardware is cheap, and just keeps getting cheaper. If a business can afford about 2-3 thousand every couple of years, they should have no problem providing the necessary hardware to keep a small business running. And well if a business can’t afford that, there are certainly enough opitions out there to scale without the company needing to purchase hardware, Amazon S3 and AmazonEC are just two of the many options out there for companies to scale hardware.

Next what about faulty network connections? Does that really even exist anymore, one of the benefits that we have in this day and age is that unless you live out in the middle of nowhere there is a reliable source of high-speed internet connection. No, it may not be cheap, and yeah you may be stuck with only one company, but that is simply a side factor that I am going to ignore in this case. You still have a connection that exists. What is more, with high speed data plans coming from Verizon and AT&T for your cellphone and phones such as the iPhone you now have the ability to access your company’s web apps no matter the time or location. This proves an invaluable service especially for your management staff as it has to travel, no they never have to worry about having the latest sales number or how many are signed up for your monthly email newsletter. Perfect use case, you are asked on the spot to give a presentation on the business, you have all the information and what’s even more why not create a coupon on the fly for 10% off and use it during your speech.

Web apps do have problems, they do have issues but they are not to the level that Neil tries to make them out to be. Web apps I feel are going to be were business will develop their next great set of applications and I intend to help build them.

One thought on “The Case for Web Applications

  1. Pingback: The Case for Web Applications | PHP-Blog.com

Leave a Reply

Your email address will not be published. Required fields are marked *