Yeah, it does! And I don’t necessarily mean denial of service – that would mean that I couldn’t get any programming done. Nope, far from it – but it sure is denial of sleep attacking me. Come one, I am struggling to keep up with all the new runtimes, features, frameworks and best practices coming out of Redmond. It’s awesome and actually fun; no doubt about it – but sometimes it is excruciating as well. And today I am going to talk about the excruciating experience of seeing another reinvented wheel hobble out of Microsoft.
Oh, remember the good old days? 2002/2003 when there was just a handful .NET developer, hardly any frameworks, except THE framework. No choice, but hey, no need to choose either. But let’s face it, most likely too little choice. Then around 2005 things started to pick up. There was one, maybe two high quality frameworks to support you in a particular area of your programming efforts.
And I loved it. Why? Simply because reviewing frameworks for a new direction of programming (like ORM or IoC) took me about half a day, maybe a day of intense work. And then I usually had a definitive favourite. And yes, most of these frameworks were true open source projects.
I don’t know when things changed, but lately I feel … insecure. There is no better way to describe it. I have my definitive favourites, still. BUT all of those choices date back to approximately 2005. Before all those little “Microsoft certified” framiworkies. And I am NOT talking about WF, WCF, WPF and (pure, in memory) LINQ. Those are simply awesome on so many levels and SOMETHING NEW. No, I am talking about all these half-good, half-god, reinvent-the-wheel-but-this-time-elliptic framiworkies like LINQ to Entities, LINQ to SQL, Unity, ASP.NET MVC, … And let’s not even get started on tooling: MSBuild, MStest, …
Why does the appearance of these Microsoft frameworks make me insecure all over sudden? Because: Every single one of those comes with the guaranteed “follow-the-herd-momentum”: “We have to use it, because it’s *chant-as-mantra* Microsoft *chant-as-mantra* Microsoft *chant-as-mantra*”. Oh, my. But here’s the sad part: It preys on my mind as well. Not because I like to chant mantras, but because one can argue that most newcomers to the .NET crowd might not take time to evaluate the alternatives and choose Microsoft(tm) by default. That means that the continuous stream of fresh minds might dry up for all those great open source projects out there. And that’s all they survive on. And THAT means – I HAVE to evaluate those Microsoft thingies and make up my mind which horse to bet on. That is a way harder decision than the 2005 “oh, that one is shiny” one. Because now it is “uh, that one is still so very, very shiny and clearly superior in my eyes” combined with a “there is a brass one out there which is almost as shiny AND it is attached to a marketing campaign proclaiming that brass is the new extra shiny”. You see, it’s no longer about popping the hood and looking at the engine in order to decide. I have seen a weaker product win because of marketing one too many times to still think naively about those matters.
Why does Microsoft do that? Why did they have to come up with a “new” (there is nothing new here!!!) IoC instead of endorsing one of the established frameworks. And the sad part is: They did, they actually did. There are a couple of excellent guides from Microsoft e.g. on using NHibernate and Windsor. Why doesn’t Microsoft stick to that theme, it would be way better for the community, for my productivity and for my sleeping habits.
In all seriousness: From my point of view all those “alternatives” don’t increase diversity. Or to put it another way: Those new “alternatives” don’t increase my happiness. Quite the opposite is true. I see them as a nuisance and certainly an unnecessary one. Last night while I was evaluating Unity, I had to think about a talk I watched on google video about a year ago. It’s called “The Paradox of Choice – Why More Is Less”.
Good people at Microsoft: I hope you will soon realize that less is sometimes more. Stop reinventing the wheel. It is bad on many different levels. I strongly believe that it actually hurts your efforts. Seriously, watch the video. It is quite the eye opener. And after doing so choose one open source product, dedicate 2 or 3 of your employees to it. That way my boss knows that support for that OS project won’t go away. I can get some sleep because I don’t have to evaluate the next not-so-new-but-with-a-twist project you throw out there. And you will notice that it saves you money and gives your company some Egoboo.