Monday, June 18, 2007

The Web Browser as Scapegoat

The arguments for Light weight client vs. heavy weight client come and go in cycles. In management there is the adage: 'If things are going badly, reorganize!' The parallel in software projects is 'If things are going badly, redesign!'

One of the key technology issues in the last 30 years has been light weight vs. heavy weight clients. Back in the mainframe days, the only client was a green text only terminal. The mainframe was the 'server'. Then the workstation was invented and you could begin to move more processing to the client. Engineers tried Sun Workstations or PCs as heavy clients and ran into exactly the same client management problems. So you got the idea of a dumb client. The dumb client ran X Windows and nothing else. But that killed the bandwidth, so it was back to heavy clients. We had 2 tier, 3 tier, N tier, and lots of tears.

Then along came the web server. The browser was the new and fancier dumb client. But that was slow so things swung back over to the JavaScript enabled web browser.

What is hidden in all these cycles is the fact that neither the thick client, nor the thin client was ever the problem. What actually happened was that a fad for one style would rise up as the silver bullet to fix all the current problems, and a new wave of naive engineers and managers would hop on the bandwagon. After a few years the project would get in trouble, after all, 80% of software projects fail, and the thick/thin client model was a convenient scapegoat.

Management, trying to buy success, would hire in a new wave of engineers, who recommended the opposite of whatever client server model the old project had, and start all over.

The actual solution was to manage the project better by applying more attention from management, and 'Get It Right (tm)'.

With current computer systems, the difference between light weight clients, and heavy weight clients does not exist. Yes that's a bold statement, but who could argue the IE or Firefox or Flash are light weight clients? They are suitable for ALL applications short of first person shooters like Halo 3.

The difference between IE, Firefox free clients and .NET/C# and Flex paid for clients is exactly that, you pay for the more bloated clients both in licensing and in development time and salaries. Microsoft and others have a vested interest, with matching sales force, in convincing you that they have a better solution. They also pander to managers who are under the delusion that you can buy success.

What has remained constant is the pain associated with updating heavy client programs.

On a recent project they went with a C# heavy client to 'fix all the problems' because they wanted to be able to display real time plotted data. Ajax could have easily done it. The slowness in the system was due to database contention, poorly written HTML/JavaScript, and algorithms, not the web model. On another project management forced a switch from Ruby/Rails to Flex because they were the quintessential 'lets buy success' management team. (Also the Flex group had investment money which has all gone up in smoke now.)

At this point for any business project the only sane choice is web based Ajax/HTML/XML. If someone is pushing a heavy weight client, you can bet that they are either a sales person for Microsoft (.NET) or Flex, or has some other agenda related to 'fixing' the project.


Footnote: The one place where heavy weight client still is viable is computer games or scientific visualization. Go XBox!

No comments: