Oh, thanks, George, write about the successful company and leave the topic of these guys to me, why don't you:
In the article The Secret Failures of Microsoft, Daniel Eran writes that the Beast of Redmond's fortunes are largely based not on their technical merit, but rather PC vendor laziness and the “OEM tax” that comes from including Windows with new PCs:
All of these partners hooked up with Microsoft simply because they had
no idea of what to do on their own. Few even experimented with their
own independent technology plans; they simply picked Microsoft because
the company seemed like a safe bet at delivering technology. They
obviously didn’t do their homework.
The article's main thrust is that when you consider areas beyond the desktop, where a more level playing field and actual competition exists, Microsoft fails more often than it succeeds. Eran walks through a short list of Microsoft's failures in consumer electronics — phones and handhelds, tablets and PDAs, various incarnations of WebTV and XBox (24 million units moved, but at a loss) — citing keyboards and mice as the only area where they've experienced commercial and critical success. All these serve as data points from which he makes the (rather easy) extrapolation that the Zune will be the next flop in the series.
While beyond the scope of Eran's article, one could easily apply the same thinking to their application development tools, another area where they face real competition. As with consumer electronics, they do well with input devices (Visual Studio, a tool with which even many die-hard open-source coders look upon with envy) and with SQL Server, a field where few competitors exist. When you consider the move away from their desktop stronghold and towards “Web 2.0”, the rest of the Redmond toolset offerings don't offer anything special to developers. Their efforts seem to be an attempt to build a slightly better Java — a strange aspiration, considering how some of Java's most vocal proponents and biggest contributors are migrating towards Ruby, functional programming and agile frameworks like Rails.