Thursday, November 04, 2004

Evolution

I have spent most of my professional life developing traditional Win32 applications in C++. Sometimes, I wonder how relevant this sort of application will be in the future.

Don't get me wrong. There will always be room for that sort of development, but in this increasingly interconnected world, smart clients and web-based apps make more sense.

Adam Bosworth states that web-based apps or services can evolve more quickly.

Well this is where the comment about evolution in action comes in. Things that breed rapidly more quickly adopt through natural selection to a changing environment. Services can typically deploy changes every month or even more rapidly because they only have one single configuration on a set of machines whose OS, storage and networking they totally control and which they manage in their data centers. These days Microsoft gives birth to new products at a pace that makes an elephant seem quick, about every 60 months, that means in the time that a service can make 60 adaptions to its customer's needs, Microsoft makes one. It used to be that they shipped every 12 months. Then 18. Then 24. And so on. The creep is driven by the ever increasiongly complexity of features, hardware, os variations, and backward compatibility of the API's so ably designed to lock developers in. They locked the developers in all right. The Microsoft ones. This alone to me has been a compelling argument that when a product can be delivered as a service, it should be.

Reading this makes me question some of the architectural decisions that I have made recently. The main virtue of a smart client is that it support off-line capability. If you eliminate this consideration, it would seem that a web-based client is always the way to go. I think the only remaining question, is whose tool chain to use?

Next week, I head off to VS Connections, where perhaps the trade-offs will become more clear to me.