DA: What would be the two or three things that would characterize the Microsoft way of computer software?
BG: The key for us, number one, has always been hiring very smart people. There is no way of getting around, that in terms of I.Q., you’ve got to be very elitist in picking the people who deserve to write software. Ninety-five percent of the people shouldn’t write complex software. And using small teams helps a lot.
You’ve got to give great tools to those small teams. So, pick good people, use small teams, give them excellent tools; vast compilation, debugging, lots of machines, profiling technology, so that they are very productive in terms of what they are doing. Make it very clear what they can do to change the spec. Make them feel like they are very much in control of it.
Have lots of people read the code so that you don’t end up with one person who is kind of hiding the fact that they can’t solve a problem. Design speed in from the beginning. A lot of things that have helped us, even as the project teams have become larger, and the company has become a lot larger than it was. It is not some methodology where there is a lot of funny documentation. Source code itself is where you should put all your thoughts, not in any other thing. So, our source codes, all though there are a few exceptions, tend to be very well commented in a very structured way.