Click here to Skip to main content
Click here to Skip to main content

The New Emperors Clothes - Abuse of Web Technology

By , 30 Jan 2012
 

Introduction

The inspiration for this blog post was the following set of error messages displayed on an arrivals screen at Brighton, England railway station on Sunday 29th January.

The Inspiration for this Article

A Recipe for Chaos

What this shows is a broken arrivals computer system which has been completely over, and badly, engineered for the purpose of displaying information about the arrivals of buses to carry train passengers.

The designers/developers have chosen to build a browser based system with client-side Javascript pulling data asynchronously from a web service. Nothing wrong with that in principal, but for a non-interactive display-only, highly available message board system? I think not, as clearly demonstrated.

The problems shown here are typical and are spreading like wild fire. People, including customers, project managers, inexperienced technical people, and transport staff, all make the same mistake. They think that the web is all about the browser.

This mistaken belief is responsible for the rise (and soon fall) of browser oriented technology, where software houses, designers and developers around the globe, have resorted to breaking all the rules of industrial strength software development in the belief that browser technologies are current 'best-practice'.

What are these current technologies that are not industrial strength?

  • Separation of concerns: Client-side script and web services

Whilst separating display logic from business logic is generally a good principle of software engineering, it is almost impossible to do using the current technologies favoured by the web software development industry today. Client-side code is being implemented in Javascript and is increasingly gaining more and more business logic because changing Javascript is easier that redesigning complex web services. This makes for very unreliable and unmaintainable software, and let us not forget that this business logic is available for all to see.

And what of the display logic? A mixture of HTML, CSS and JQuery is creating code which is utterly unmaintainable and unmanagable, Throw in the mechanism of dealing with the enormous range of web service protocols, document object models (DOM) etc.. and you have a classic spaghetti dish. This is far from the ideal and history teaches us much about what happens when this is the case.

  • Lowest common denominator web service protocols

We have gone from WSDL and ASMX to REST and WCF. XML is being replaced with JSON because it is smaller in size and gets around some browser string problems, but you have to use JSONP to get around many other limitations. So, we are now passing complex data as strings! We get no benefit from sharing classes or strongly typed objects. Another recipe for disaster.

  • Proprietary security protocols

Each browser/web server combination works differently with different security protocols, and oAuth is hard to do properly. You need some good technology on the back end and a good CRM system to manage developer API keys etc.. Web security is always evolving and requires a lot of knowledge, money and time to master. Many projects simply do not have the budget or experienced staff, so instead developers are implementing their own proprietary security mechanisms, resulting in systems which are very fragile and easily hackable.

  • Development and maintenance tool immaturity

For almost thirty years, we have had highly graphical software development tools with more recently intellisense, edit-and-continue, source code analysis tools, memory checkers, garbage collectors etc.. We get almost none of this with Javascript, DOM and JQuery. Developing in these client-side web frameworks is like stepping back in time to a prehistoric age of software development.

  • Script-kiddie mentality and inexperience

Many of the people writing this client-side javascript/jquery/HTML/CSS are young, cheap and inexperienced. They have no concept of industrial strength software design. They do not know or care about reliability or maintenance because they'll be off onto the next job or mountain long before their code catastrophically breaks leaving us with the debris. Good luck to the people who have to fix it under enormous pressure from paying customers, irrate investors and frustrated management.

  • Too much focus on web design at the expense of robustness and reliability

If it looks good, it must be good eh? Wrong! Almost all web designers know absolutely nothing about complex business processes and the provision of reliable data to service those essential business activities. Project managers and customers are easily captivated by something which looks sexy. Web designers know this and use it as a shield to hide the mess that lies beneath the surface.

There are of course many more, but this is a blog-post not a book.

In summary, the new emperors clothes do not fit, are badly designed and will be torn to shreds as more and more people will be affected by this madness. Anyone contemplating building line of business (LoB) or safety (or transport) critical web applications using these technogies should really think again, to put it mildly.

History

Article first posted on TriSys' blog on Monday 30th January 2012.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

About the Author

Garry Lowther
Chief Technology Officer TriSys Business Software
United Kingdom United Kingdom
Member
Software developer

Sign Up to vote   Poor Excellent
Add a reason or comment to your vote: x
Votes of 3 or less require a comment

Comments and Discussions

 
You must Sign In to use this message board.
Search this forum  
    Spacing  Noise  Layout  Per page   
QuestionAbsolutely right [modified]memberSyedur Rahaman6 Mar '13 - 20:00 
Your point is absolutely right. But what is solution? How can we choose proper technology?

modified 7 Mar '13 - 3:51.

GeneralMy vote of 5memberjawed.ace4 Mar '13 - 0:41 
Real Observation.. Thanks for sharing your views...
GeneralMy vote of 5mvpNick Polyak20 Oct '12 - 16:12 
The picture is too funny not to give it 5Smile | :) I also thought that one cannot develop reliable software in JavaScript but after getting familiar with knockoutjs I changed my mind. It is possible to produce reliable JS code, just more difficult than in strongly typed languages.
GeneralMy vote of 5memberKamran5710 May '12 - 0:10 
He has put something forward that is widely overlooked.
GeneralMy vote of 5memberRene Pilon17 Mar '12 - 17:59 
Bang on you are.
 
Reminds me when I changed position last year. I was brought in to save someone's "bacon" where managers had put a lot of trust in this kiddie. That first morning - looking at his "code" (if you can call it that) - I must have said out loud "wtf" (the long form) 10 times before lunch even arrived. Needless to say - the kiddie is gone now - but - the cruel joke - he's now a "senior web dev" at a small company where they're about to find out he's completely useless when they're site falls down. It kills me how business types / managers are sold by fancy looking buttons....
 
Experience is king ... no matter what new language or technology comes around.
GeneralMy vote of 5memberfi396820 Feb '12 - 23:11 
straight to the point of problems with "state-of-the-art" technology
GeneralMy vote of 5memberGrump9 Feb '12 - 1:13 
I don't necessarily agree with all of your points but commend you for stating your views and standing by them in the face of the onslaught from the emperor's disciples.
QuestionI see your point, but ...memberSGarratt8 Feb '12 - 10:56 
The web has evolved at rapid pace, and sexy and first to market has often driven web based front end development. To that end younger 'script kiddies' as you call them were often left to run wild making the most interactive and shiny front ends probably at the expense of design and architecture considerations. probably lots of .. "hey lets use this new jQuery widget .. it looks cool" at the expense of thought out design.
 
But as said by other posters the problem is not the technology .. scripted web interfaces leveraged on top of web services, HTML5, these things are amazing .. if used right. This page on codeproject certainly leverages ECMAScript and services extensively - and well. I agree, the client script should be concerned only with talking to services, handling events and moving the DOM around, and minmal business logic should be client side. The problem then is to come up with and encourage a good design and coding best practices in your shop and make developers adhere to them and avoid glomming on to every shiny new client widget without due consideration for its dependability and usefullness. Generally just good software develoment practice reagrdless of the underlying technology, web or other.
 
As for your Brighton station sign it looks like it HTTP Request Timeout'ed so presumably the server side is down - it happens. I bet it looks pretty cool when it does work.
SGarratt

AnswerRe: I see your point, but ...memberGarry Lowther8 Feb '12 - 23:48 
I am not against the web browser - I just object to people assuming that because you need to connect a device to a web service that you need to use a browser.
There are many cases where a highly interactive desktop or native device application works much better with web services than a browser e.g. skype, reuter/bloomberg terminals, napster/itunes, your phone app on your phone etc..
Inexperienced developers choose the browser purely because it makes the deployment of the application easier and are in denial about all the other drawbacks. Because of that, a whole industry has sprung up trying to bring the functionality of a desktop into a browser.
 
As for that Brighton station browser app, the request timed out days before I saw it (another reader saw it), and was still dead two days later. It had no error checking or recovery capability.
GeneralRe: I see your point, but ...membergstolarov11 Feb '12 - 15:06 
Unfortunately it's a whole mentality of letting the lowest bidder to do your job. In the last 15 years most of the development work moved to India. As I learned there is so much work there, so many projects, that people who are worth anything are being promoted to project leaders within 2 years. Professionals with 20+ years of software development experience being replaced with fresh college graduates, with all the mistakes that are so typical for inexperienced developers.
As far as using one technology vs other - it's just tools. Some tools are more appropriate than the others but with good knowledge you can make any technology 'sing'. No offence but some of the staff in your article reminds me late 80-ies when mainframe programmers looked down on PC saying that it's kiddie toys, not fit for serious computing.

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Permalink | Advertise | Privacy | Mobile
Web04 | 2.6.130523.1 | Last Updated 30 Jan 2012
Article Copyright 2012 by Garry Lowther
Everything else Copyright © CodeProject, 1999-2013
Terms of Use
Layout: fixed | fluid