Saturday, February 23, 2008

Web applications are cool ... NOT! Well kinda ...

The single sentence that drives me mad is "We want a web application because it is easier to deploy".

Well lets face it, it is "easier" to deploy. Single application repository, single update scenario. Yeah, sounds all pleasant.

BUT!

When designing the application and taking into considerations all the interface requirements along with the length of time it will take to implement those requirements are you willing to sacrifice usability so you have an "easier" to deploy application?

Now I can hear you laugh at me saying I am crazy but am I? Should each project not be carefully planned and the needs of the client decided the interface that is to be used? With all the technologies available for interoperability there are so many more avenues available.

Think of it this way. With web browsers you are given your sandbox to work in and you are effectively taking a presentation technology and turning it into an application technology. Is that smart? In my eyes no it isn't (yes then again what do I know :)). This sandbox has limited access to the underlying system and therefore all the load is retained on the server for processing. Now I know you want to isolate your business logic to a single layer, preferably in a service orientated method. I am all for that. My problem is the presentation layer.

The web presentation layer is so disconnected. Maintaining session state is hard and configuring the environment you want to run in is impossible. Then don't even get me started on the browser wars! Why would anyone want to hand their rendering layer to engines that don't comply to the standards they are supposed to?

Enter the smart / composite client. This is a theory / pattern that I think is going to make a huge impact in the coming years. The web will never die but I am hoping that we will see smarter business systems that allow for smart integration rather than having to inject directly into SQL, reverse engineer their logic to implement a service layer on them or tossing them and having to rewrite them completely.

If you have ever faced Enterprise Integration into legacy systems you will know all to well what I am talking about. So let us all vow to change the way we do things. To think about the poor nana down the line who is going to have to interface with your system because he is cheaper and let us expose services / API's and save him a heart attack :) The guy will love you, promote your software all over the place and we all win!

Let us also vow to turn the Internet back into what it is good at, offering information services. Always to engineer our applications that any front-end can consume it (Java, .NET, PHP etc). This way we will finally create a network that can change the face of things. Think about it. You want to offer a conversion utility to people, they consume your service and present it how ever they want! What could be better? The first question every company asks me when acquiring a piece of software is "How easy is it to change the interface?". What I am saying is lets take away that interface and let them build up their applications in an interface they see fit, consuming services from multiple systems! Ah this is a place I would like to retire to :)

So let us always use the right tool for the right job. The web has a place, the desktop has a place.

Anyway's if you made it this far I thank you, and think about it. It makes sense.