Two metaphors dominate humanity’s relationship to time, and they are strikingly relevant to software development.
The first sees time as a succession of repeating cycles. We observe the movement of the sun, moon and stars, and the cycle or birth and death, and mark regular events with similar rituals across cultures. The myths of this world-view occur in a time outside time, in which the patterns are laid down for reenactment in the profane world. Failures in this context are simply enactions of mythical patterns, and we can always pick ourselves up and try again.
The second metaphor sees time as an arrow. History and causation become key ideas. Whether shaped by an interventionist god or by human action, our existence has a trajectory, and there are no second chances. We focus on predicting the future, and our failures hurt us. This approach is profoundly unsettling, as seen by the popularity of notions of the End of History, whether through the coming of a Messiah, the achievement of a Communist state, or the arrival of a technological Singularity.
We see this second approach in Waterfall software development, with its focus on prediction and the succession of distinct activities. As Waterfall projects slip into their Death March stage, we see parallels with the period of tribulation foretold by many millenialist cults.
In XP and wider Lean and Agile practice, we see a return to the cyclical notion of time. Our rituals correspond closely to those of traditional time-keeping, and we embrace the unpredictability of the future by giving ourselves the chance to fail and redeem ourselves. In this light, the ‘cargo-culting’ of agile practices takes on a benign air, rooting our behaviours in a mythical reality.
In order to survive an uncertain future, let’s embrace traditional cyclical approaches to time and set aside the idea we can predict everything!