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.


14 comments:

  1. So, you don't work at Microsoft because you want them to produce great software?

    ReplyDelete
  2. Robert O'Callahan28 February 2006 01:33

    That's one of the reasons, yes.

    ReplyDelete
  3. An interesting post. I'd have to say I agree. I'm looking for an employer, so I guess it's good food for thought.

    ReplyDelete
  4. As a computing undergraduate, I briefly considered Microsoft for my placement year, but due to some of the reasons stated above I had to reconsider.
    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.

    ReplyDelete
  5. Robert, this is a superb post. Do you mind if I translate it into French (or actually have someone else do it for me and post it somewhere on a French blog) ?

    ReplyDelete
  6. Robert O'Callahan28 February 2006 19:01

    Feel free to have it translated/reposted.

    ReplyDelete
  7. It's really a interesting point. And I totally agree that only the competition can make the software development better.

    ReplyDelete
  8. Here is the French version: http://standblog.org/blog/2006/03/02/93114687-choisir-son-camp

    ReplyDelete
  9. Insightful. :) Thank you so much, roc.
    (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?)

    ReplyDelete
  10. Robert O'Callahan5 March 2006 03:24

    I think the answer to that question is much the same. Microsoft supports open standards when it gives them some competitive advantage. This usually means they support open standards most when they're trying to catch up in some market, or when customers demand it and are willing to migrate to competing products. So if you want to see good support for open standards in Microsoft products, strong competition is still the most important factor. I don't think they're short of quality people to implement standards and work on standards committees.
    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.

    ReplyDelete
  11. I agree that a shortage of engineers by itself isn't the issue, but it is core to the issue. Combine a shortage of engineers with the broadest software charter in the world and you have the problem. It makes top level prioritization decisions challenging to get right in all cases. Just like any business you evaluate the needs, including customer demand, competitive etc. in each space and allocate appropriately. On occasion you could question whether the right # of resources were moved into or out of the right areas at the right times, ie. was there still customer demand for innovation but innovation didn't occur. You could find examples at Microsoft, as in other businesses, where this occurred.
    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.

    ReplyDelete
  12. Robert O'Callahan10 March 2006 04:48

    It's certainly true that Microsoft has finite resources, but somehow, when faced with a real competitive threat, they always seem to find enough people to put together a good team in a hurry. That is why I judge an engineering shortage to not be the real limiting factor.
    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.

    ReplyDelete
  13. You're completely right, and I hope people will see that they mustn't focus too much on IE7, but on Firefox instead.
    Because the more popular Firefox will get, the more Microsoft will try to revert that.

    ReplyDelete
  14. Some IE engineers also hope that Firefox can put some stresses to IE. That way, they won't lose their job.:)

    ReplyDelete

Note: only a member of this blog may post a comment.