Russell Bateman
May 2018
Planning work and building a product used to be done on models involving schedule and cost uniquely. Think of a ship that must be designed, built and floating by a certain date. It's going to be a very expensive undertaking, one that must be planned out to the last detail absent which money will be spent without a viable product arriving on-time.
Once the decision to spend the money to design and build the ship is made, the metaphor in play is water heading inevitably toward a cliff before falling over it. If your project is headed toward such a catastrophic conclusion, you must plan and prepare. If your product is a barrel, it must be able to make the plunge and survive hitting the river below. You have only one shot at it.
This is the image of waterfall development. You must plan and prepare for all possibilities in anticipation of an extended release date. It's a product that's defined from start to finish. It's a product that's calculated to make a big splash. If you're Lockheed-Martin, it's your F-35 that must beat out whatever Boeing will put up against you. It's the way things were once done (and are still done, in certain industries).
In software, however, stop and think.
Is there value to a subset of the application that can be exploited before the whole of it is finished? Can you prove the user interface and emerging functioniality little by little? Will the customer be enticed to pay for more functionality based on experiencing the promise with each early, functioning release? Does early, good-quality software give warm fuzzies that spending more time and money on the product will be worth it? Can lessons learned from early releases benefit future development by correcting decisions made and forestalling mistakes?
Conversely, can time and money be saved by realizing a disastrous undertaking in the early stages of development and putting a stop to it or having the leisure of making sweeping changes in product direction?
These are the advantages of agile (in opposition to waterfall) development.