7 May 2008

Unified programming - Microsoft Volta

Hey,

I was looking the other day at various web programming technologies which were employed by the software company I work in. With .NET Framework 1.1, developers got a programming platform that was comprehensible, at least there were many programmers, including myself :), that could say they know most of its classes and worked with them.
We're now at .NET Framework 3.5 with 4.0 on the distant horison and the number of classes is just too big for anyone to claim that they are a ".NET Framework expert". I'm very midful of candidates (I'm involved in recruiting personnel for my team) which come and say they know ".NET Framework". This just shows they're either unaware of how they use words or they just brag. There is no way someone knows everything about basic .NET Framework classes, WCF classes, etc. Not to mention all the other web technologies, such as AJAX or Javascript. I'm getting off topic though...

The reason I started writing this is because we're at a point when the sheer complexity of writing good code is bigger than ever and it gets more and more difficult finding young talent that can master everything there is to know about web programming. I mean master all aspects of it and create very professional web 2.0, ajax enabled scalable websites. And those who do find it very difficult to master desktop programming as well, due to the quite different programming models of the two environments. And what about writing JS/AJAX code when you're actually a C# programmer???

I was suprised and pleased to find out about Microsoft Volta (http://labs.live.com/volta) which is an experimental project aimed at easing the life of the developer. Namely, programmers would use the same models for everything, be it desktop or web programming. The Volta project is based on the very simple fact that everything that pertains to .NET is compiled into MS Intermediate Language (MSIL). This allows (as explained on the Volta project site) retargetting, refactoring and remodulating code, which in turn allows changing the architecture of the application itself. Which brings me to the essential thing about this, which is why I'm impressed: yo're basically allowed to write the application before architecting it! Developers have always been bound by the architecture of their application and if this project succeeds and it becomes a product, it would be the first time this link (which any developer knows generates a lot of problems) will be broken. Not only that one could write a single tier application which gets "compiled" into an application with as many tiers as needed, but you could concievably write a web application which gets "compiled" into a desktop application and viceversa. That's what I call flexibility.

Having said all this, I think we shouldn't get our hopes up just yet as this is yet an experiment as of now. But it's something to be watched for for sure. Hope it works! Happy programming till then.

No comments: