Friday, June 25, 2004

21 Rules of Software Development

21 Rules of Thumb – How Microsoft develops its Software
6. Beware of a guy in a room.

This is really just a special case of 'Don’t go dark.' Specialist developers who lock themselves away in a room, going dark for long stretches, are anathema to shipping great software on time. Without regard to their individual brilliance, before investing a developer with a significant assignment, it is essential that they understand and agree with the type of development program you intend to run. They must be capable of performing on a team, making their work visible in modest increments and subjecting it to scrutiny as it matures. Some people find this intolerable, and though there is a role for people of this disposition in the software world, it is not as part of a team devoted to shipping great software on time.

There are many pathologies at play here as well as certain healthy patterns of creative behavior. One pathology is a type of savior complex that cannot be satisfied without blowing every single deadline but the last, and then emerging victoriously with a brilliant piece of work five minutes late. A more healthy pattern is that of the true innovator who is truly designing something great, but who has no personal resources left over for anything but the work at hand. Every ounce of psychological, emotional and intellectual energy is being consumed in the work itself. Teamwork, in this case, is an insignificant factor to a person immersed in this sort of creative experience.

But whether or not the cause is healthy or bogus, the results are uniformly fatal to the professional development organization. Beware. Extricating yourself from this trap is nearly impossible.

I am not impressed with Microsoft products in general, but I think these recommendations are important for well defined commercially succesful products -- even if they aren't great products. All 21 are interesting, but especially the above.

For great software I think one needs the opportunity to explore and experiment. That's why Google gives developers one day each week to work on their own initiatives.

Microsoft produces software that sells, albeit within a monopoly framework. Since Microsoft does not really compete, it's hard to say that it meets market needs. Google, on the other hand, does have to compete -- and it makes great software.

No comments: