The Case for Web Applications

Recently Neil McAl­lis­ter wrote a col­umn for InfoWorld mak­ing his case against web appli­ca­tions. I want to make my own case for web appli­ca­tions, pretty con­ve­nient since that’s what I want to do as a full time job.

It’s client-server all over again

Scal­ing small server farms to meet demand can be a real chal­lenge … secu­rity vul­ner­a­bil­i­ties abound in net­worked applications

Yep scal­ing is always an issue, try­ing to scale web appli­ca­tions has been one of the hard­est chal­lenges of the new web2.0 busi­ness. With so many peo­ple jump­ing on and using web appli­ca­tions scal­a­bil­ity is a real and def­i­nite problem.

How­ever, it’s also a made up prob­lem as Neil seems to be ref­er­enc­ing in this col­umn “enter­prise appli­ca­tion devel­op­ment”, which is very dif­fer­ent from gen­eral pur­pose web appli­ca­tions, like Twit­ter, Mint, or Remem­berTheMilk. These are apps designed specif­i­cally to solve a par­tic­u­lar prob­lem with regards to a busi­ness, typ­i­cally prob­lems like account­ing, Cus­tomer Rela­tions Man­age­ment, Project Man­age­ment, etc. It’s a dif­fer­ent type of web appli­ca­tion and a dif­fer­ent cus­tomer. Busi­ness have and are will­ing to pay for the use of appli­ca­tions to help them out, the aver­age indi­vid­ual per­son isn’t will­ing to pay money for a to-do list or keep­ing 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 “enter­prise appli­ca­tion” mar­ket, shall we. The vast major­ity of busi­ness in the US are small busi­ness, with less than 50 peo­ple under them. Scal­ing even bad code to take care of 50 or so peo­ple at once is a pretty easy task. Even with bad hard­ware, cruddy net­work con­nec­tions (all prob­lems which I’ll address later), bad or even worse igno­rant devel­op­ers — scal­ing to han­dling 50 or so peo­ple is a rel­a­tively easy task.

If a busi­ness hires a con­trac­tor to build inter­nal web appli­ca­tions, than scal­ing to aver­age busi­ness is a no brainer, and for those busi­ness that are super size even Neil admits scal­ing at that point is easy as well:

Con­cen­trat­ing com­put­ing power in the dat­a­cen­ter is fine if you’re a Google or a Microsoft, but that approach puts a lot of pres­sure on smaller players.

The smaller play­ers don’t need to worry about con­cen­trat­ing that much power in a dat­a­cen­ter, because they don’t need to.

Now the flip side of the coin, what if you are a busi­ness want­ing to pur­chase your appli­ca­tions, well you have two main options when it comes to enter­prise appli­ca­tions depend­ing on the busi­ness, you can pur­chase a license to the soft­ware and you install it on your own servers, or you have sub­scrip­tion to the soft­ware, typ­i­cally tied to the num­ber of peo­ple using it. In the first case, scal­a­bil­ity again falls back on the small busi­ness using the soft­ware (refer to my ear­lier argu­ments). In the lat­ter case, scal­a­bil­ity falls on the com­pany build­ing the soft­ware and there we have sev­eral eco­nomic fac­tors at work.

  • The com­pany is being paid not through some VC firm, but rather by you. IF the com­pany has any decent busi­ness sense the pric­ing is set up in a way where as more peo­ple use the soft­ware they are able to pur­chase more hard­ware, more redun­dancy, etc to scale the soft­ware and thus the business.
  • The company’s fees are directly tied to how many peo­ple use the soft­ware, you add more peo­ple, the busi­ness charges you more. Again a pro­por­tional rise in the num­ber of peo­ple means they are able to scale the busi­ness easily.
  • The bad com­pa­nies won’t stay in busi­ness for very long. This isn’t always true (look­ing at you Blackboard/WebCT), but gen­er­ally bad com­pa­nies are replaced by good com­pa­nies, because no one buys the bad soft­ware except in places where there is a monop­oly or some other over­rid­ing rea­son. Cur­rently there are some places where that exist, but I have hopes that as the web2.0 craze trick­les from the aver­age con­sumer, the enter­prise appli­ca­tion mar­ket will also expe­ri­ence a shift and the signs are there. I’m just wait­ing for it to hap­pen in a few key areas: edu­ca­tion, account­ing for example.

His next major issue in this sec­tion is secu­rity, secu­rity is unfor­tu­nately an issue no mat­ter how your appli­ca­tion is built. I don’t care if you built your appli­ca­tion in assem­bly for only a sin­gle proces­sor, or you are cod­ing for NASA and fol­low­ing their guide­lines. Secu­rity is always a prob­lem and will always exist, get over it. Web appli­ca­tions if any­thing have a few key ben­e­fits, by their nature data isn’t stored scat­tered on a bunch of hard dri­ves across the com­pany, instead all the data is located at the server. It’s ridicu­lously easy to backup data­bases and email them, or take nightly snap­shots and ship it off-site. The web appli­ca­tion can be put behind a pass­word locked part of the company’s web­site enabling only peo­ple you want to see the data. Even a bad web-developer knows how to imple­ment .htac­cess con­trol. This allows the com­pany to man­age all aspects of the pass­word also, ensur­ing you don’t use bad pass­words in your system.

His other point about secu­rity is that browsers are really com­plex, yep and so are Oper­at­ing Sys­tems, so should we stop using computers?

Web UIs are a mess

The Web’s state­less, mainly forms-based UI approach is reli­able, but it’s not nec­es­sar­ily the right model for every appli­ca­tion. Why sac­ri­fice the full range of real-time inter­ac­tiv­ity offered by tra­di­tional, OS-based apps?

I’m not entirely sure where he is com­ing from here. We have a wide vari­ety of UI designs avail­able to the web, includ­ing ones that sim­u­late an actual com­puter desk­top. Are they all per­fect, nope they sure aren’t all per­fect. Are there some really impres­sive and inno­v­a­tive work done in the field of user inter­faces for the web, yeah there are. What about the com­plaint that menus are not the per­fect par­a­digm for appli­ca­tions for the desk­top, yet open just about any pro­gram and you see at the top a menu, File, Edit, View, Options, etc all exactly the same irre­gard­less of OS or the appli­ca­tion. About the only appli­ca­tions that don’t fit into this par­a­digm are games, and even those have a sim­i­lar look and feel, with a menu and sub-menus to access options. There is no right model for a UI either on the desk­top or in the browser, they all have dif­fer­ent things to com­mu­ni­cate and thus need dif­fer­ent ways to communicate.

His next com­plaint regard­ing web UIs is that they aren’t as inter­ac­tive as the tra­di­tional apps. Here he has a point, although in my opin­ion  a slight one. Web apps are still very inter­ac­tive, I’m typ­ing this in the browser (in Word­Press to be pre­cise) and I have no need for any­thing else to make my point in a way that I desire and that I feel com­mu­ni­cates it. What are you miss­ing out on when you use Google Docs? How many peo­ple actu­ally use in their day to day job any­thing more than what a free tool like Google Docs offers? My even bet­ter ques­tion is what hap­pens when you have a tool designed to replace your desk­top app in every way that you are actu­ally pay­ing for. I guar­an­tee you, you won’t be miss­ing much and may even be wooed by some of the tricks that web appli­ca­tions have over desk­top apps. Also tools such as AJAX, Google Gears and other such things allow you to have as much a rich expe­ri­ence in the browser as you do on your desktop.

Browser tech­nolo­gies are too limiting

JavaScript has evolved into a respectable general-purpose lan­guage, but it can hardly be expected to be all things to all peo­ple. User inter­face code writ­ten in such lan­guages as C++, Objec­tive C, or Python can often be both more effi­cient and more main­tain­able than code writ­ten for the Web par­a­digm. … HTML and CSS are clearly defi­cient when it comes to rich interactivity

Is JavaScript a great lan­guage, no it isn’t but his argu­ment is pretty weak because it lacks a lot of tech­ni­cal under­stand­ing. JavaScript is not the lan­guage that han­dles the vast major­ity of what hap­pens in the browser. Typ­i­cally JavaScript (JS) is used to make a sin­gle page inter­ac­tive, by send­ing requests to other lan­guages. Typ­i­cally JavaScript does not (and really shouldn’t) han­dle your Busi­ness Intel­li­gence part of the soft­ware. JavaScript sends request to other lan­guages, PHP, Ruby, C#, ASP.NET, etc, via a method called AJAX that allows the server to do the work and update the page with­out the page need­ing to be refreshed. The point of this is that JavaScript isn’t and will never “be all things to all peo­ple” in fact the vast major­ity of web appli­ca­tions no longer even rely upon plain JavaScript, instead using Frame­works, such as jQuery or MooTools to write JavaScript that doesn’t care what browser you are on and cre­ates a lan­guage that has a lot more fea­tures and capa­bil­i­ties. So his argue­ment lacks tech­ni­cal rea­son­ing behind it.

The same goes for the sec­ond half, UI code is not exclu­sive to JavaScript, in fact very lit­tle if much UIs are typ­i­cally writ­ten entirely or mostly in JavaScript. Also, yes it is true that HTML and CSS do have issues when it comes to desir­ing a truly inter­ac­tive expe­ri­ence, such as desir­ing a video or other media to be included in your pages. My point regard­ing these is pretty sim­ple, A: how often do you need in an enter­prise busi­ness appli­ca­tion a video or sound, B: Flash is a pretty decent sub­sti­tute until HTML5 comes out (knock on wood) and video and sound are built into HTML.

The big ven­dors call the shots

Recently, Sun Microsys­tems CEO Jonathan Schwartz described the browser as “hos­tile ter­ri­tory” for inde­pen­dent developers.

This just doesn’t make sense from either Sun or Neil. The browser and the web2.0 world has been a boom for inde­pen­dent devel­op­ers. The abil­ity to build an appli­ca­tion and launch it is even eas­ier than ever. Espe­cially when you com­bine the abil­ity to glob­ally mar­ket your appli­ca­tion and tie adver­tis­ing to peo­ple search­ing about the prob­lem your app solves. If I was an inde­pen­dent soft­ware devel­oper the two areas I would look at is the mobile mar­ket and the browser. The vast major­ity of devel­op­ers have never been able to influ­ence where the stan­dards and the browser were going to head and you know what they are prob­a­bly ok with that. That’s the fact that you accept when you build your prod­uct on top of other people’s work, regard­less of it being the browser, the iPhone, Face­book or the desk­top, there are always stan­dards you must fol­low and accept, so it just doesn’t make sense to com­plain about the poor inde­pen­dent devel­op­ers. The other aspect of this is that Fire­fox was cre­ated specif­i­cally to counter-act Microsoft and force Microsoft to build a bet­ter browser, and it was cre­ated and still built by inde­pen­dent devel­op­ers. So his argu­ment doesn’t make sense no mat­ter which way you come at it.

Should every employee have a browser?

You could make a case that it’s unwise to allow employ­ees unfet­tered access to the Web if your com­pany val­ues pro­duc­tiv­ity, par­tic­u­larly in high-turnover envi­ron­ments 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. Hav­ing access to the browser, makes you a bet­ter not worse employee (within cer­tain con­straints). Employ­ees need the abil­ity to take breaks first of all, and let their mind float. Espe­cially infor­ma­tion work­ers need the abil­ity to push infor­ma­tion off to the side and take a break and let their mind stir ideas around. The abil­ity to access a browser allows an employee to search, the holy of holi­est the inter­net has given us: search: the abil­ity to look up the cor­rect answer or the bet­ter way to solve a prob­lem before doing it wrong or spend­ing time get­ting up and ask­ing some­one else and thereby break­ing 2 of your employee’s con­cen­tra­tion. Employ­ees now have the abil­ity to find a bet­ter way to do their job, that helps you, a lot. Even accoun­tants, arguably the one employee who you might think surely doesn’t need a browser and the one per­son who you want to ensure they don’t get com­prised with adware, secu­rity holes, etc, could use a browser to find the cor­rect tax infor­ma­tion for this year or a new loop­hole to save your com­pany money, or what is the cor­rect form to fill out when you have a x, y and z sit­u­a­tion occur all at once.

So yes every employee should have access to a browser, are there secu­rity issues involved in that, yep there are. Are there secu­rity issues involved in your com­pa­nies finan­cial records only being stored on a sin­gle com­puter, yep again. Life is a trade off, per­son­ally I think stor­ing the data on the server, pass­word pro­tect­ing your data, and enforc­ing secu­rity stan­dards such as anti-virus/spam soft­ware and fire­walls, pro­vides the aver­age busi­ness pretty decent security.

What about the bad hardware/network connections?

Ear­lier in my argu­ments refut­ing the scal­a­bil­ity issue, I men­tioned that I would take on the bad hardware/network issue that I half men­tioned there. And now I will. Umm it’s not an issue, seri­ously unless you are one of the hor­rors from Dai­lyWTF, most com­pa­nies should and do pur­chase half decent hard­ware to man­age the prob­lem. It doesn’t take a huge expense to be able to find and run servers capa­ble of serv­ing you know a busi­ness hav­ing 3 mil­lion unique users, some­where on the scale of 10 mil­lion page hits a month for $6,000. Hard­ware is cheap, and just keeps get­ting cheaper. If a busi­ness can afford about 23 thou­sand every cou­ple of years, they should have no prob­lem pro­vid­ing the nec­es­sary hard­ware to keep a small busi­ness run­ning. And well if a busi­ness can’t afford that, there are cer­tainly enough opi­tions out there to scale with­out the com­pany need­ing to pur­chase hard­ware, Ama­zon S3 and Ama­zonEC are just two of the many options out there for com­pa­nies to scale hardware.

Next what about faulty net­work con­nec­tions? Does that really even exist any­more, one of the ben­e­fits that we have in this day and age is that unless you live out in the mid­dle of nowhere there is a reli­able source of high-speed inter­net con­nec­tion. No, it may not be cheap, and yeah you may be stuck with only one com­pany, but that is sim­ply a side fac­tor that I am going to ignore in this case. You still have a con­nec­tion that exists. What is more, with high speed data plans com­ing from Ver­i­zon and AT&T for your cell­phone and phones such as the iPhone you now have the abil­ity to access your company’s web apps no mat­ter the time or loca­tion. This proves an invalu­able ser­vice espe­cially for your man­age­ment staff as it has to travel, no they never have to worry about hav­ing the lat­est sales num­ber or how many are signed up for your monthly email newslet­ter. Per­fect use case, you are asked on the spot to give a pre­sen­ta­tion on the busi­ness, you have all the infor­ma­tion and what’s even more why not cre­ate a coupon on the fly for 10% off and use it dur­ing your speech.

Web apps do have prob­lems, 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 busi­ness will develop their next great set of appli­ca­tions and I intend to help build them.

Comments are disabled for this post