To avoid making changes that might create bugs, the team is required to stabilize the program every couple of months by eliminating nearly all snags. It is at these periods that the company is able to define what it doesn't yet know and what it needs to find out to finish the project. By stabilizing the product periodically, Microsoft also gets the program to a point where it could feasibly ship. With a finished piece of work, even if only partially complete, Microsoft has the flexibility to add or cut features in response to what's going on in the marketplace. Without a stabilized product, it would be too difficult to assess the impact of a last-minute change.
Flexibility allows people to be creative and build new products.
Eating Your Own Dog Food Much of Microsoft's success is based on its ability to gauge what the market will accept. One strategy that helps Microsoft maintain a customer's perspective is requiring its own employees to use programs under development or nearly complete to do their own work. This not only focuses development teams on making products with the customer in mind, but it serves as a cost-effective means of testing for flaws. There are some exceptions for programmers working on Microsoft's sophisticated business titles, but they're rare. Unconventional Wisdom Despite Microsoft's efforts to maintain order, the hacker mentality still influences some aspects of product design.