Predictable outcomes are one of the key expectations that the marketplace imposes on companies and their senior management, and these expectations eventually flow down to software development. Unfortunately, software development has a notorious reputation for being unpredictable, so there is a great deal of pressure to make it more predictable. [...]
Because we assume that our predictions are facts, we tend to make early decisions that lock us into a course of actions that is difficult to change. Thus, we lose our capability to respond to change when our predictions turn out to be inaccurate. [...]
We forget that the predictions of the future are always going to be inaccurate if they are 1) complex, 2) detailed, 3) about the distant future, or 4) about an uncertain environment. [...]
There are, however, well-proven ways to create reliable outcomes even if we canot start with accurate predictions. [...] Fundamentally, an organization that has a well-developed ability to wait for events to occur and then respond quickly and correctly will deliver far more predictable outcomes than an organization that attempts to predict the future.
This note was recorded by Frédérick Dubois from page 31 of Implementing Lean Software Development.