In spite of the inflammatory title, please don’t interpret this to mean Microsoft sucks and Vendor X is a god. I have issues with all the major vendors and have just decided to vocalize about Microsoft first. I don’t really like picking on Microsoft. I’ve worked with them extensively, have been to Redmond, and have worked and socialized with many of their employees. They have all been excellent. Almost every “geek” I have dealt with at Microsoft has been the type of person I would happily have a beer with, which is the ultimate test for a team. So Microsoft doesn’t suck because of its geeks. The problem sits well north of them.
Microsoft’s biggest problem, and the reason Google is eating their lunch, is that Microsoft has stagnated technically. They make their money on the Windows OS and on Office, but both of these are at a dead end. There is no “must have” reason to upgrade either of these any more, and Microsoft’s solution is to try and lock in their enterprise customers with costly maintenance agreements. Like candle makers at the dawn of the electric revolution, Microsoft is desperately clinging to a dead business model, and rather than innovate and adapt, they will abuse their customers to hold on to a monopoly position.
Microsoft has gone to the other extreme with their programming tools, .NET. I consider C# to be the only real .NET language. VB.NET is a joke intended to appease the legacy VB6 code monkeys, and no one with any brains would ever initiate a new project using VB.NET. Managed C++ was to appease the other extreme – hardcore MFC/Win32 programmers. But that is such a specialized group that they didn’t really care about .NET. C# itself is the result of a shotgun wedding between Delphi and Java. Microsoft stole the creator of Turbo Pascal (Anders Hejlsberg) from Borland, who created C#. Rather than play nice with Sun and do something beneficial for their customers, Microsoft chose to fracture the market in an attempt to maintain their platform monopoly.
All this would be water under the bridge if Microsoft didn’t continue the make things worse for developers. C# has morphed from a fairly clean Java clone to an absolute monstrosity of complexity. To give the impression of innovation, they have consistently added everything and the kitchen sink to each revision. Code written in the latest version, .NET 3.5, is simply painful to read if the developer actually tries to use all the features Microsoft has thrown in. LINQ is the perfect example of how to make a language unusable.
Enterprise software developers are not the cream-of-the-crop in the developer food chain. Most are minimally skilled and chose enterprise development to avoid having to deal with rapidly changing technology. The reason there are still VB6 developers is because of enterprises. Given their resistance to change, it makes no sense for Microsoft to keep adding in so much to .NET. The only explanation is that Microsoft is trying to appease their partners. Keeping the platform moving ensures there is huge consulting money to be made in “helping” enterprises keep up.
Developers are the key to any software platform, and one area where Microsoft has really let them down is through their resistance to Open Source software. Almost every other non-Microsoft programming language (Java, Perl, Python, Ruby, PHP, etc…) has a thriving Open Source community around it that breeds innovation, increases reuse and creates a “survival of the fittest” mentality around technologies. Microsoft is a ghetto by comparison, an intellectual ghost town. All because Microsoft’s only motivation is ensuring vendor lock-in to protect their platform monopoly. This will be their downfall in the end. Go to an emerging technology conference or visit a major university and take a look at what the next generation of geeks is cutting their teeth on. You’ll see mostly Apple or Linux laptops, with very little Microsoft. Windows will not be the dominate platform for this next generation.
In summary, Microsoft sucks because they choose to suck. Every reason that is holding them back is entirely within their control. They are like the 80-old chain smoker on oxygen, dying of cancer, that can’t quit smoking two packs a day. They know it is killing them, but they choose not to do anything about it.