[ Home | Resume | Programming | Engineering Philosophy | Family ]

On Planning

No plan survives first contact with the enemy.
— Helmuth von Moltke

In all of recorded history, no customer has ever changed his mind less than twice (and the poor guy who changed his mind only twice was hit by a truck on his way to send in his third set of changes).
— Marshall P. Cline, C++ FAQs

The future is uncertain. Therefore, it is not generally possible to devise a single course of action that is guaranteed to be optimal in light of what the future actually holds. Furthermore, it is prohibitively difficult in general to develop a plan, let alone an optimal one, for every possible combination of contingencies.

What to do then?

Don't Plan?

If any plan is guaranteed to become obsolete before it can be completed, then wouldn't it save time not to plan at all?

Don't even go there. Not having a plan leads to chaos, under which progress toward the objective is very unlikely to occur. You don't absolutely need to know what you'll be doing in three months, but you do need to know what you're doing now and what you're going to do next, or else you will be ineffectual.

The nicest thing about not planning is that failure comes as a complete surprise, and is not preceded by a period of worry and depression.
— John Perton, Boston College1

No plan is perfect, but in the process of initial planning and working out some of the contingencies, you gain a great deal of insight that is useful for making decisions on an ongoing basis.

In preparing for battle I have always found that plans are useless, but planning is indispensable.
— Dwight D. Eisenhower

Forecast-based Planning?

Since the future is unknowable, why not plan based on your best guess?

This doesn't work because the real world is nonlinear. Uncertainties are typically large, and often asymmetric and/or discrete. It is not uncommon for a single unforeseen eventuality to make the original objectives meaningless, in which case it is obviously pointless to follow the plan.

Even worse, forecasts are often designed, intentionally or otherwise, to incite a particular course of action, rather than to accurately reflect likely future conditions. Plans based on such forecasts are particularly worthless.

Continual Re-planning?

A variation of forecast-based planning is to re-plan from scratch every time the forecast is revised or found to be inaccurate. This is a bad idea for two main reasons:

First, re-planning takes a long time. A large number of considerations must be taken into account, the buy-in of various individuals must be obtained, and revisions must be communicated to anyone who is affected. In the real world, forecasts are revised on a weekly basis, so you don't have time for all of this. On the other hand, cutting corners in the re-planning phase results in plans that are ineffective.

Second, re-planning jeopardizes completed tasks. Because tasks are executed with regard only to the current plan, changes to the plan often require completed tasks to be redone. This has the effect of locking you into your original plan, even after it becomes obsolete.

Abstract Planning

An abstract plan is a plan in which only a small portion of the plan need be considered in response to a typical change in the forecast. This generally implies that the plan is structured in such a way that its elements can be modified without breaking the overall structure.

The structure of the plan implicitly indicates the sorts of changes that are anticipated to occur. To the extent that it is practical, tasks should be performed in such a way that they tolerate anticipated changes. Where committing to a specific decision is really necessary, it should be postponed as late as possible without delaying the realistic forecasted completion date.

If a plan needs to change in some unexpected way that breaks the existing plan's structure or fundamental assumptions, then a thorough re-planning is necessary. The cost of re-planning should be considered before this is undertaken, so that you'll have time to do it properly. Up-front contingency planning can really pay off in such cases.

Critics of abstract planning point out that an abstract plan is always suboptimal for any given future scenario. While this is true, the abstract plan's value lies in the fact that it doesn't require everything to go exactly as you expect. That's absolutely essential when you're dealing with complex products in a rapidly changing marketplace.

Critics also claim that redeveloping a point solution many times in response to repeated re-planning is usually quicker than developing a reusable solution once. However, in my experience, a reusable solution takes only about 50% longer than a single point solution of the same quality, because many of the additional environmental assumptions leveraged by a point solution turn out to be violated anyway. In practice, there are usually sufficient late changes such that reusability actually accelerates initial production, as well as improving adaptability and maintainability.

Abstract planning is difficult, but if you can't do it, then you probably ought to rethink your objectives.


1 Thanks to Steven J. Baker for suggesting this quotation.

Anders Johnson, last modified $Date: 2003/01/08 $

[ Home | Resume | Programming | Engineering Philosophy | Family ]