Why Microsoft is in trouble
Not listening to developers
For the past 5 years or I've worked on a large desktop application that runs exclusively on Windows. We are the kind of ISV Microsoft loves. Our market it too small for them to go after, but we help sew up their desktop dominance by tying in with their other products. Except with their .NET strategy they've pretty much abandoned us. We have 300+kloc of Windows C++ code that isn't going to be ported to .NET anytime soon. We are stuck with MFC, which is barely on life support, so we are currently looking at third party framework vendors. The result: we are less dependent on Microsoft.
It's the same story for VB developers. If you have VB6 code, then you have more problems than the C++ shops. At least we have a compilier. While .NET is a significant upgrade for VB developers, we need an upgrade path, or we might as well go to the competition. How many VB programs are being migrated to Java, PHP, or other non-Microsoft technology as a result?
Not embracing network centric computing
In 20 years the islands of functionality that were the PC will be a flash in the pan, and the multics proponents will be finally proved correct. Computing will be a utility; the services will be connected via the internet.
The desktop is already becoming marginalized in the overall computing picture. Users are moving to web based email, web based calendars, network connected cell phones, and photo iPods. Consumers want their data to be securely managed, and they want it everywhere, all the time. They don't want it locked up on their PCs.
By putting personal data on the desktop, Microsoft wants everybody to be their own sys admin. No matter how you slice it, sys admining is tricky work. Consumers are going to leave it to the experts, and move their data to the network, and Google is going to lead the way. I think JWZ said it best. It's all about the network.
Microsoft is playing defense and trying to prevent this from happening. This is a classic mistake. I predict a replay of DEC's failure to move to PCs that spelled their demise. Microsoft can't force relevance into the desktop. This is also why WinFS on the desktop is a waste of time. Consumers don't want to manage their contact database schemas on the desktop. They want google to do it for them. And businesses are already using centrally managed LDAP servers. WinFS has no marketable advantage.
Not understanding security
Microsoft doesn't understand security. How do I know? Windows Media Player and Outlook Express come installed on their Windows 2003 server machines. Microsoft has a culture of always shipping more features. But security requires removing all but the absolutely necessary services. When I'm building a machine for internet hosting, I start with minimal install and add only the packages I know that I will need. EVERY SERVICE I ADD DECREASES MY SECURITY.
Microsoft's marketing department isn't going to allow any OS out the door with out every bell and whistle. I suspect this comes straight from top, as it is Steve Ballmer who insisted the initial version of NT ship with a GUI against Cutler's wishes. The less-is-more mentality needed to secure software clashes with Microsoft's core more-features-now philosophy. Witness WinXP SP2 -- an attempt to solve security issues with MORE not LESS software. This strategy will fail.
PCs are cheap
When PCs cost $3000+, DOS and Windows ran about $100 for OEMs. That amounts to about 3% of the retail cost. Fast forward 10 years. A PC can be had for less than $500. If Windows cost even $50 (which is low), that is 10% of the total cost. OEMs are watching a greater percentage of their revenues go directly to Redmond, or more accurately, Reno, NV, every year.
As hardware costs continue to fall, the software costs will become a greater percentage of the total cost of a PC. Eventually something is going to give. Either Microsoft will have to lower their prices or the manufactures will start looking for alternatives. Neither is good for Microsoft's profit margins.
Open Source is for real
10 years ago when I started using Linux, it was a geek only venture. If you were able to get the kernel to compile, you were lucky if you got the X Window System to run with out frying your monitor. 5 years ago, when I started using Linux commercially, I saw it only as a cheap replacement for more expensive Unix based Sun workstations and servers. In 2004, Linux is just about ready for prime time desktop use. In most ways it is GOOD ENOUGH. Don't under estimate the value of GOOD ENOUGH when it costs about 10% of the alternative. Just like MySQL is good enough for a huge number of web applications, OpenOffice and Gnome is good enough for most corporate memos.
As a developer, I am starting to look at the Open Source market in a different light. While I believe it will decrease the amount of money spent on IT as a whole, the money will be distributed more evenly. It means the rest of us have a better chance at getting a bigger slice of a smaller pie, and a fair shake at the pie is all most developers really want.
It is difficult to grow when you are already huge
While the 30 employees in company I work for can make a living selling software for a few million $'s per year, Microsoft can't even look at markets our size. Why? Microsoft is too big. The market isn't significant enough to make a dent in their revenues. In order to grow, Microsoft can only go after huge, massively profitable markets, and those are becoming fewer and far between. When appropriately large markets do arise (internet search and services), they often compete with their desktop products. These markets threaten to cannibalize their core business, which forces Microsoft into the losing defensive position.
This is akin to the Buffet effect in the financial world. Warren Buffet is the second richest person in the world behind Bill Gates. He made his money investing in the likes of Coke, Gillete, and Geico. But now that Buffet is huge, there aren't many companies left to invest in that add signficantly to his total equity. While I might be able to buy a few shares of Kinder Morgan Energy and have it be a meaningful percentage of my portfolio, Buffet would have to buy the whole company, likely paying a premium, to see any attribution to his bottom line. So the opportunities to grow become fewer the bigger you get. Microsoft's size is becoming its biggest enemy.
Companies are built for growth. When your not growing, you are shrinking. Microsoft has a long way to fall, but these things tend to unravel quickly. First it starts with Clam Chowder, then layoffs, then the mass exodous to the new Google Kirkland Office. Then it is just a matter of waiting for your carcus to be acquired by HP.
I don't think Microsoft will fold overnight, but it I'm pretty certain that the days of massive growth are behind them. Microsoft needs a cultural shift, and it doesn't have anything to do with broadcasting all their meetings. While the rise of the Internet might have looked like a huge obstacle 7 years ago, I think the worst lies ahead for them.
Update: This article has generated a surprising amount of interest and was recently nominated by Joel Spolsky for a collection of the best Software Essays of 2004. If you like the article please vote!