There are things I love and hate about Microsoft. Let’s start on the plus side - they’re generally pretty good at making various technical tasks easier, such as developing code and running servers. If you’re a developer or server admin on Microsoft technologies these days, chances are you don’t have to be as ‘hardcore’ as once was necessary - that doesn’t mean there aren’t hardcore developers & admins in Microsoft environments of course, but generally the bar has been lowered so there’s an increasingly wide range of skill levels in that arena. The other way of looking at it is that if you are a hardcore developer, you can concentrate on the more hardcore things and not the minutae. There’s good and bad in everything but generally the move to better and more automated tools is a good thing. I certainly don’t miss my old Borland debugger now I have Visual Studio.
One of the things that constantly drives me crazy about them though is their continuous ‘reproductising’ of existing solutions. By that I mean Microsoft bringing out their personal version of something that’s already done quite well elsewhere, just because they feel they have to lead in every product market. Seeing a report from TechEd has raised my bile on this one again. Being a product vendor in partnership with Microsoft has always been like dancing with the Devil - you know that there’s a good chance that if you actually become successful with your add-on product, Microsoft will spot it and write their own version, crushing yours with either marketing or bundling efforts. It’s happened time and again over the history and reflects MS’s belief that they should be master of every lucrative product market. But the other effect is that they also spend an incredible amount of time reinventing things that already exist. Microsoft Surface is a good recent example, Direct3D was another, PowerShell, their (several, differing) attempts at persistence layers for .Net, and in 2008 we’ll get MS’s virtualisation product. They’re constantly coming out with new products that, in a great many cases, have already been done in one way or another - they’ve just now got a Microsoft logo on them. Everyone in the MS community gets really excited about it all, but as an example I look at LINQ these days and beyond the language integration, I was writing / using something that solved all those problems 10 years ago. So were a lot of other people, and some productised it like TopLink. And looking at some commentary on LINQ, they’re still struggling with some of the core issues that were completely solved by those other solutions all that time ago. Once again they’re investing a shedload of time and effort into something that’s already been done, just not as a Microsoft product. So it has to be done all over again, and then raved about, and all the developers using MS tech have to adjust again to what is now the latest-and-greatest thing to use, but will probably change again in 12 months as they release another product. Is this really progress?
Thing is, pretty much every other company of their size is not living on products anymore, they’re increasingly living on services. In that model, co-operation with existing providers can work well, and an incremental bundling / linking / rebadging / supporting kind of approach can build up where re-use of existing decent solutions is promoted, and the emphasis is delivering value around mature frameworks that evolve, but don’t get wholesale replaced very often. This is generally good for enterprise IT, which really doesn’t need a new paradigm change every 12 months. That’s completely the opposite of the Microsoft model where because of their utter fixation with selling shrink-wrapped product (largely because of their failure to really get to grips with the service model), they seem to have a rabid ‘Not Invented Here’ syndrome for most things. If someone’s already done it, nick the idea, re-write the whole thing a bit differently (and probably screw something up until the first service pack), wedge it deeply into the underpants of other MS products to exploit the chain-buy effect and get it on the shelf in a shiny box. And of course, promote it like it’s a revolutionary idea that you thought of first. Gah.
I’ve exaggerated a bit as I’m wont to do in these postings (MS clearly do bring their own innovations when they’re re-inventing) but I can’t help thinking what a massive waste this is. How much more could they do if they weren’t so damn insistent on reinventing wheels? Clearly a lot of people seem to want solutions with a MS branding on them, even if they are newer, unproven and potentially flakier - perhaps partly because people who rarely stray outside the MS universe have no idea what’s actually being done outside the Redmond halls, and also probably because of the tool integration they do so well, which is understandable. I’ll just have to continue rolling my eyes every time I hear another press release announcing an ‘exciting’ new MS product that re-solves the same old problems, especially when other solutions have actually had the time to mature well. They try, but they’re never going to be in the same ideas league as Google or Apple.