.Net development is essentially dead.   WPF was undermined by Silverlight.  Silverlight was then killed by Microsoft’s desperate attempt for publicity (which led them to push HTML5 a technology they barely even support).  While traditional ASP.NET has been waning for years to the point where I don’t know anyone who would consider starting a new project using it.   And Microsoft’s mobile presence is non-existent beyond Windows Phone 7’s tiny ecosystem (it’s telling that Appcelerator is working to add Blackberry support while not even mentioning WP7)

Right now the focus seems to be on ASP.NET MVC.  Almost every blog post Scott Guthrie’s made this year has been on MVC and Microsoft seems to have moved (or hired) their best people onto that project.  I consider this a good thing but I know a lot of ASP.NET developers feel burned by it.   I mean, if you look at ASP.NET MVC it essentially uses all the skills Microsoft told their developers to shy away from (Javascript, CSS, etc…).  So as the focus shifts a  lot of .Net developers are finding their proficiency falls below rails and python developers on Microsoft’s new platform of choice.  While knowledge of things like XAML, Skins and other Microsoft technology has been depreciated.  

(For the record this post was inspired by my attempt to mix Silverlight with ASP.NET MVC only to find Adobe’s Flash was a much better fit)

This is a huge problem even for those with the skills required by MVC.  Because the community is shrinking.  That means fewer answers out there, less support for the technology and eventually fewer jobs.  Even in corporate environments Microsoft’s starting to lose its grip.  With companies like IBM offering support for Python the question of Microsoft’s future relevance in the development sphere is very much up in the air. 

Even their servers are looking less attractive lately.  To this day it shocks me that Microsoft chose not to offer a direct upgrade path from Windows 2000 to Windows 2008.  As far back as I can remember it has always been considered good practice to “skip a generation” in regards to corporate software.  It keeps costs down while providing a stable environment and by only skipping one generation you don’t fall too far behind.    Not acknowledging that shows a real disconnect between Microsoft and their customers which in turn erodes that ecosystem as well. 

Microsoft’s server strategy has been moving in the wrong direction since Active Directory was introduced.  Active Directory is essentially a registry for your network and it causes just as many problems.  I can’t tell you how many times we’ve had trouble installing software only to find another software package left errant objects in the Active Directory and those objects were interfering.   But since Microsoft built its entire server strategy around the technology it makes everything else dependent.  You can’t have a Windows DNS server, DHCP server, and so on without Active Directory. 

This adds external dependencies which is the exact opposite of what you want to do with servers (servers are all about stability and uptime so you want as few dependencies as possible).

Which brings me to the point of this post.  You have both the development ecosystem and the IT ecosystem under it deteriorating yet Microsoft doesn’t see it because the numbers  have yet to drop.  I, for example, still buy Windows servers and still use Visual Studio but you can see where my head is at. 

I really like the Razor engine and I really like NuGet.  They’re both good technology and I’ve been trying to embrace them.  But I have responsibilities both to myself (to keep my skills current) and my organization (to build technology that won’t be orphaned in the future) and I’m not sure Microsoft is the responsible choice anymore.   The debate in my mind is whether to hunker down and fully embrace Razor in the hopes that Microsoft will clean up their act or toss it completely and start slowly moving to a Linux/Ruby/Python alternative.