
In the middle of the
20th century, dozens of countries and millions of people believed that
central planning was the best way to run their economies. Even today
there are many people who can’t quite understand why market economies
invariably outperform planned economies; it would seem that at least
some of the planned economies should have flourished. After all, there
are advantages to centralizing economic decisions: virtually full
employment is possible; income can be distributed more equally; central
coordination should be more efficient; directing resources into
investment should spur growth. So why did planned economies fail?
A fundamental
problems with planned economies is that in a complex and changing
economic system, it is impossible to plan for everything, so a lot of
things fall between the cracks. For instance, planned economies usually
suffer a shortage of spare parts, because no one plans for machines to
break down. Secondary effects such as environmental impact are often
ignored. Furthermore, planners do not have control of the purchase of
goods, so they have to guess what consumers really want. Inaccurate
forecasts are amplified by a long planning cycle, causing chronic
shortages and surpluses. Finally, individuals have little incentive to
address these problems, because they are rewarded on meeting planned
targets, not on improving the overall system.
The difference
between a planned and a market economy is rooted in two different
management philosophies:
-
Management-as-planning/adhering focuses
on creating a plan that becomes a blueprint for action, then
managing implementation by measuring adherence to the plan.
-
Management-as-organizing/learning
focuses on organizing work so that intelligent agents know what to
do by looking at the work itself, and improve upon their
implementation through a learning process.
An example of
management as planning/adhering can be found in Material Requirements
Planning (MRP) systems, which were widely expected to increase
manufacturing efficiency in the 1980’s by providing detailed production
planning. In fact, most MRP systems failed at shop floor planning for
the same reasons that planned economies failed: the systems could not
readily adapt to slight variations in demand or productivity. Thus they
created unworkable schedules, which had to be ignored, causing the
systems to become ever more unrealistic.
As the centralized
MRP planning systems were failing, Just-in-Time systems appeared, with
their focus on management-as-organizing/learning. Just-in-Time forsakes
central planning in favor of collaborating teams (intelligent agents).
The environment is organized in such a way that the work itself and the
neighboring teams signal what needs to be done; rather than a central
plan. When problems occur, the root cause is sought out and eliminated,
creating an environment in which intelligent agents continually improve
the overall system. In almost all manufacturing environments,
implementing Just-in-Time trumps any attempt to plan detailed production
activities using an MRP system. Just-in-Time systems succeed for the
same reason a market economy succeeds: intelligent agents are better at
filling in the gaps and adapting to variation than a centrally planned
system.
Management-as-planning/adhering leads to the same problems with software
projects that planned economies suffered: in a complex and changing
environment, it is virtually impossible for a plan to cover everything.
Work breakdown structures and detailed project schedules are similar to
MRP systems; they are invalidated by even modest variation. Worse,
measuring adherence to an invalid plan produces incorrect results and
diminishes incentives for catching the things that fall between the
cracks.
We know that a disproportionately large
fraction of large software development projects fail, but have we ever
attributed it to over-planning? We believe that a market economy works
much better than planned economy, but are we prepared to apply the same
logic to software development projects? In market economies and
Just-in-Time manufacturing, the antidote for the failures of
over-planning is to organize the environment so that intelligent agents
signal to each other what needs to be done to achieve the overall goal.
In software development, the same antidote works.