Phased based software development, commonly referred to as waterfall, has taken a bad rap for at least a decade. And rightfully so in many situations. If we fall under the delusion that we can know everything in advance to accomplish a particular outcome, we’re going to have a rude awakening once we get started. No matter how hard we try, we can’t account for everything in advance. Part of our journey is figuring out the journey.
The extreme form of commitment to an outcome and the exact path to that outcome, have left many to abandon waterfall altogether in favor of iterative approaches. Approaches where we can commit to work for a much smaller duration. Instead of phased development spanning months and years, weeks are used.
I’m not here to advocate one style or another. I personally think the terms waterfall, iterative, agile, lean, scrum etc are all irrelevant. What concerns me, is the consequence of limiting commitment to weekly or bi weekly iterations. I’ve seen iterative development be wildly successful and wildly unsuccessful.
The problem with waterfall wasn’t commitment, it was over-commitment. And, the opposite extreme with iterative development, is under-commitment. Under-commitment is a lack of a guiding principle to prioritize the work within an iteration. Without this, we’re literally deciding every other week, what we should be doing. The consequence is run on development, literally wandering from idea to idea on a bi-weekly basis. The differentiating factor with successful iterative development, is to have a guiding principle.
That guiding principle has to be the desired outcome. It should be phrased in terms of the value we seek to create for our customers. And it should include the value we hope to capture to further sustain our ability to create value for our customers and ourselves. Unfortunately, the obsession over details in waterfall, leads many to abandon a discussion of value at all and purely to focus on specifications, requirements, inputs, actions, tasks etc. Conversely, with iterative development, we’ve simply shrunk the duration of the phases of waterfall. We can easily suffer the same consequences of obsessing over specifications and losing sight of outcomes.
Waterfall’s phased development and iterative development are the same thing at the end of the day. What makes one successful with either approach is committing to value on the scale of a time-frame necessary to actually accomplish the desired outcome. And every month, week and day working to make course corrections toward that outcome. What scale is reasonable for commitment? That really depends on the desired outcome. Use your gut reaction to help you decide. Do you feel your outcome is too much to bite off? Perhaps look for islands of intermediate value and make a smaller, but nonetheless, value oriented commitment.