Monday 27 February 2006
Choosing Sides
Suppose you're a great programmer and your goal in life is to get great desktop software into the hands of as many people as possible. Where should you work? Since most desktop users in the world use Microsoft software, Microsoft's recruiters tell you that you should work there --- but they're wrong. This is quite easy to see if you ask yourself, "what is the scarce resource that limits Microsoft's ability to deliver great software?" It is not a shortage of brilliant engineers! It is instead a shortage of competitive pressures.
The current situation with IE7 is a classic example: after achieving a monopoly position, the company sat back and did nothing until Firefox forced its hand. Looking further back, one of the greatest software engineering feats ever (in my opinion) was when IE went from nowhere to Netscape parity with the incredibly fast development of IE3, and I don't think it was a coincidence that Microsoft was then facing one of their greatest threats ever.
Another interesting example is Windows Sidebar. Five years ago Microsoft Research had a project called Sideshow which provided desktop widgets for "peripheral awareness". That project struggled to emerge from the research lab and was killed. Since then a number of similar competitive products emerged, notably Google Desktop. Microsoft responded by hastily assembling a team to copy those features by (re)creating Windows Sidebar.
One could make many more comparisons. Where Microsoft dominates (desktop OSes, office apps), progress is slow; where they are threatened (MSN/Live, Xbox, Java/.NET), progress is rapid.
The lesson is that if you want to see great Microsoft software, the biggest impact you can have is by working elsewhere. Create something compelling, and Microsoft will clone it. Make a successful challenge to an entrenched product, and prod them out of complacency.
A word of caution: you will run a high risk of being flattened by Microsoft's combination of technological prowess and monopoly power, which may daunt some. But fighting the good fight is not necessarily a ticket to penury.
The current situation with IE7 is a classic example: after achieving a monopoly position, the company sat back and did nothing until Firefox forced its hand. Looking further back, one of the greatest software engineering feats ever (in my opinion) was when IE went from nowhere to Netscape parity with the incredibly fast development of IE3, and I don't think it was a coincidence that Microsoft was then facing one of their greatest threats ever.
Another interesting example is Windows Sidebar. Five years ago Microsoft Research had a project called Sideshow which provided desktop widgets for "peripheral awareness". That project struggled to emerge from the research lab and was killed. Since then a number of similar competitive products emerged, notably Google Desktop. Microsoft responded by hastily assembling a team to copy those features by (re)creating Windows Sidebar.
One could make many more comparisons. Where Microsoft dominates (desktop OSes, office apps), progress is slow; where they are threatened (MSN/Live, Xbox, Java/.NET), progress is rapid.
The lesson is that if you want to see great Microsoft software, the biggest impact you can have is by working elsewhere. Create something compelling, and Microsoft will clone it. Make a successful challenge to an entrenched product, and prod them out of complacency.
A word of caution: you will run a high risk of being flattened by Microsoft's combination of technological prowess and monopoly power, which may daunt some. But fighting the good fight is not necessarily a ticket to penury.
Comments
I really get the impression that within Microsoft are lots of talented people who are excellent at what they do, but are somehow guided by incompetent middle-management. There really is no other way to explain MSN Messenger 8.
(Now the harder question is, if you are considering a job of whether to improve the support for open standards in MS products or other products, what do you choose?)
This is especially true on the Web, where evolving standards threaten to undermine their core monopoly. It's great to see IE7 catching up in standards support due to competitive pressure, but I don't expect to see real enthusiasm for undermining their monopoly further by taking the lead again, especially when they want developers to migrate to WPF.
Slow progress is an interesting one - there is slow progress and there is intention to progress slow which are two different things. I'm sure you have seen that as firefox grows maintaining the code-base itself becomes a big issue. Windows and Office are gigantic code bases with millions of users who all want compatibility in additional to innovation. There is a tricky balance to getting that right. Indeed sometimes perceived slow progress comes out of an attempt to over innovate in a particular release cycle to the extent that the innovation swings the pendulum and causes too many acceptable compatibility issues with the existing user base. Its a fine line.
On the other hand in new areas with smaller code bases, fewer pre-existing customers to manage innovation is easier.
An analogy here might be Enterprise IT today where 60+% of resources are spent on maintaining running projects rather than innovating and creating new projects. This is something that needs to be fixed.
The argument that backward compatibility and a large customer base limits innovation is also sounding a bit hollow. We heard that endlessly in 2001-2004 whenever people asked "why isn't Microsoft fixing rendering bugs in a new IE release?" The reply was always "Too large testing matrix, too many customers, too hard". Yet faced with real competition at last, suddenly the (resurrected) IE team is blogging like mad about their great progress fixing CSS bugs and supporting new CSS features.
Other than that I agree with you. Making these decisions is hard. Healthy competition is essential for focusing the mind.
Because the more popular Firefox will get, the more Microsoft will try to revert that.