Martin Fowler’s recent blog post about Ruby and Microsoft has some good points. But he, like many outside the Microsoft space, make a faulty assumption about why there seems to be a lack of excitement in the Microsoft space.
I don’t believe the lack of excitement is because we’re all bored. Conversely, the lack of excitement is because we’re overwhelmed. Who has time to be excited? Not only do we all have real work to do with the technologies we have today, but on our doorstep is a mounting pile of new and potentially better technologies.
There’s certainly some truth to the idea that alpha geeks (or uber-geeks) live for the thrill of technology. But even most uber-geeks are finding the incredible pace of Microsoft product releases to be overwhelming.
We’re not just talking about pure dev tools, and perhaps that’s the problem. We’re talking about Biztalk Server, SharePoint Server, Microsoft Office itself and a whole bunch of other programmable server products. Each of these can be thought of as massive frameworks that a developer can tap into.
That’s on top of the peripheral dev tools like VSTS and TFS and all the various versions of Visual Studio Developer/Test/whatever. (Fowler is right on this one – few if any organizations divide their people into such rigid roles and Microsoft did a bad thing by defining their SKUs the way they did.)
Then there are the major platform-changers like AJAX and Silverlight. And the related tooling like Expression Blend and the rest of the Expression Suite. Like it or not, developers are almost certainly going to have to learn not only these technologies, but these not-really-designed-for-the-developer type tools. You can’t build a meaningful WPF or Silverlight app without using Blend. Sorry, but there it is.
If that isn’t enough to get a person scared, then there are the actual dev tools. A new version of Visual Studio (code-named Orcas) is mere months away, just as many people are moving to VS 2005. A new version of .NET (3.0) is already out, and yet most people have barely looked it. And along with VS Orcas will come .NET 3.5, which is in many ways a bigger change than 3.0!!
For application architects the challenges here are tremendous. How to exploit the productivity gains offered by all these new and upcoming technologies, and yet mitigate the risks they entail. Is it cheaper, for a given project, to use Windows Workflow or Biztalk Server? How much time could be saved by switching an application’s file store over to SharePoint Server, but what’s the cost in terms of learning that new API/framework?
Given the broad lack of real-world experience with these new technologies, there’s no realistic way to know what the cost/benefit will be for any given technology. Even those of us “in the know” are barely aware of the true value propositions and risks they pose.
At the same time, it is a faulty assumption to think that we’re not excited. Like a great many people in the Microsoft space, I am very excited about the upcoming language features in C# and VB! There’s absolutely no doubt in my mind that LINQ will literally transform the way we write code.
And then there’s the Dynamic Language Runtime (DLR) coming in Silverlight, along with VBx and other dynamic languages like Ruby and Python. Take all the incredible coolness of VB 9 with LINQ and the related language enhancements, then add a liberal coating of fantastic dynamic language features (beyond the ones VB has had since day 1) and who wouldn’t be excited!?!
But at the same time, you’ll have to forgive the vast majority of developers if they see all this as a double-edged sword. Any major change comes with a price: a period of weeks or months of reduced productivity. For an alpha/uber geek this might be weeks, but it is still a productivity killer.
I don’t know what it is like outside the Microsoft world, but in our world we are busy, busy, busy!! A few weeks or months of reduced productivity to become proficient at WPF, WCF, WF, LINQ and all the other new language features is a hard pill to swallow. From a business planning perspective, the unknowns involved in such huge changes is very risky, and so is also a hard pill to swallow.
Yes, every single one of these technologies is totally awesome! Having spent a lot of time with WPF over the past few weeks, I can say that it is a serious productivity killer, and yet I haven’t had so much fun building a UI in years. Given another few weeks I imagine I’ll be building WPF UI’s just as fast as I can with Windows Forms, but those UI’s will be far more flexible and will require substantially less code to write.
Personally, I want to build my WPF app and then run it on a Microsoft Surface platform. Welcome to the world of Star Trek!! :)