Académique Documents
Professionnel Documents
Culture Documents
Microsoft
Builds M ic h a e l A . C u s u ma no a nd R ic h a rd W. S e l b y
Software
Teams of programmers and testers frequently synchronize
and periodically stabilize the changes they make to products
in progress, yielding Excel, Office, Publisher, Windows 95,
Windows NT, Word, Works, and more.
Since the mid-1980s, Microsoft and other PC software companies have grad-
ually reorganized the way they build software products in response to quality
problems and delayed deliveries [10]. Many have also found it necessary to
organize larger teams in order to build up-to-date PC software products that
now consist of hundreds of thousands or even millions of lines of source code
and require hundreds of people to build and test over periods of one or more
COMMUNICATIONS OF THE ACM June 1997/Vol. 40, No. 6 53
years. As the world’s largest producer of PC software, methods by themselves have caused the company’s
with approximately 20,500 employees, 250 products, great financial success. We are saying there are sev-
and annual revenues of $8.7 billion (fiscal year ending eral lessons to be learned from how Microsoft builds
June 1996), Microsoft has probably tackled more PC software products, some of which apply to other
software projects than any other company in the organizations, some of which do not. Software devel-
industry. The complexity of some of its products, such opers and managers from other organizations can
as Windows 95 (which contains more than 11 million decide which ideas may apply to them after consid-
lines of code and required a development team of ering such factors as their company’s goals, market-
more than 200 programmers and testers), rivals that ing strategies, resource constraints, software
of many systems for mainframe computers and reliability requirements, and development culture.1
telecommunication systems.
Microsoft’s philosophy for product development Frequent Synchronizations and
has been to cultivate its roots as a highly flexible, Periodic Stabilizations
entrepreneurial company and not to adopt too many We label Microsoft’s style of product development
of the structured software-engineering practices the “synch-and-stabilize” approach. The essence is
commonly promoted by such organizations as the simple: Continually synchronize what people are
Software Engineering doing as individuals
Institute and the and as members of
International Stan-
dards Organization
Without parallel teams, and
periodically stabilize
[6]. Rather, Microsoft
has tried to “scale up”
its synch-and-stabilize the product in incre-
ments as a project pro-
a loosely structured
small-team (some
structured approach, ceeds, rather than once
at the end of a project.
might say hacker)
style of product devel-
Microsoft would Microsoft people refer
to their techniques
opment. The objective
is to get many small
probably never have variously as the “mile-
stone,” “daily build,”
parallel teams (three
to eight developers
been able to design, “nightly build,” or
“zero-defect” process.
each) or individual
programmers to work
build, and ship the (The term build refers
to the act of putting
together as a single
relatively large team
products it offers now together partially
completed or finished
in order to build large
products relatively
and plans to offer pieces of a software
product during the
quickly while still
allowing individual
in the future. development process
to see what functions
programmers and teams freedom to evolve their work and what problems exist, usually by com-
designs and operate nearly autonomously. These pletely recompiling the source code and executing
small parallel teams evolve features and whole prod- automated regression tests.) Whatever the label,
ucts incrementally while occasionally introducing these techniques address a problem common to
new concepts and technologies. However, because many firms in highly competitive, rapidly changing
developers are free to innovate as they go along, they industries: Two or three people can no longer build
must synchronize their changes frequently so prod- many of the new, highly complex products; such
uct components all work together. products require much larger teams that must
We will summarize how Microsoft uses various invent and innovate as they develop the product.
techniques and melds them into an overall approach Team members need to create components that are
that balances flexibility and structure in software interdependent, but such components are difficult to
product development. We are not suggesting that define accurately in the early stages of the develop-
the Microsoft-style development approach is appro- ment cycle. In these situations, projects must pro-
priate for all types of software development or that 1This article is based on the authors’ Microsoft Secrets: How the World’s Most Powerful
Microsoft “invented” these development ideas. Nor Software Company Creates Technology, Shapes Markets, and Manages People, The Free
do we suggest Microsoft’s software development Press/Simon & Schuster, New York, 1995.
Preliminary
Document No. 1 Program
Software Design
Requirements
Document No. 3
Test Plan
Analysis Design (Spec)
ceed by Document No. 2
finding Preliminary
Design (Spec) Program Document No. 4
ways that Design Final Design
structure (As Built)
and coordinate what the
individual members do Document No. 3
while allowing them Interface Coding
Design (Spec) Document No. 5
enough flexibility to be Test Plan (Spec)
creative and evolve the Test Results
product’s details in Document No. 4
stages. The development Final Testing
approach must also have Design (Spec)
a mechanism that allows
developers to test the product with cus- Operations
..
Opened/
Resolved
Bugs
19 20 21 22 23 24 25 26 27 28 29 30 31 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
1/18 2/1
Source: Microsoft internal document
• Speak a “common language” on a single develop- responsibilities and work in small, nimble teams.
ment site. What Microsoft tries to do is allow many small
• Continuously test the product as you build it. teams and individuals enough freedom to work in
• Use metric data to determine milestone comple- parallel yet still function as a single large team, so
tion and product release. they can build large-scale products relatively quickly
and cheaply. The teams also adhere to a few rigid
These principles bring considerable discipline to rules that enforce a high degree of coordination and
the development process without the need to control communication.
every moment of every developer’s day. For example, For example, one of the few rules developers must
managers in many different companies talk about follow is that, on whatever day they decide to “check
making their companies less bureaucratic, more in,” or enter their pieces of code into the product
innovative, and faster to react through organization database, they must do so by a particular time, say, 2
and process “re-engineering” and “restructuring” to p.m. or 5 p.m. This rule allows the project team to
speed product development. But complex products assemble available components, completely recom-
often require large teams of hundreds of people, not pile the product source code, and create a new
small teams of a dozen or fewer engineers; and large “build” of the evolving product by the end of the day
teams can make communication and coordination or by the next morning and then start testing and
extremely difficult and slow. Large-scale projects are debugging immediately. (This rule is analogous to
simpler to schedule and manage if they proceed with telling children that they can do whatever they want
clearly defined functional groups, sequential phases, all day, but they must be in bed at 9 p.m.) Another
and precise rules and controls. This approach, how- rule is that if developers check in code that “breaks”
ever, may restrain innovation and undervalue the the build by preventing it from completing the
importance of frequently synchronizing work. Com- recompilation, they must fix the defect immediately.
munication and coordination difficulties across the (This rule resembles Toyota’s famous production sys-
functions and phases may also result in a project’s tem, in which factory workers are encouraged to stop
taking more time and people to complete than pro- the manufacturing lines whenever they notice a
jects that overlap tasks and require that people share defect in a car they are assembling [4].)