The Iteration Imperative
Why digital products should be created iteratively
Back when people first started building complex software, the natural approach was to do this in a planned methodical way that resembles physical engineering. You make a detailed plan, validate the plan in theory, build it, test it in practice, and then deliver the final product to the customer. While there are variations of this approach, it is commonly called the “waterfall” model, since you have a cascade of stages that the process goes through, and once you’ve “fallen” from one stage to the next, you generally don’t go back.
Over time, people realized that this approach was not optimal for the development of digital products. After all, software is more malleable than physical items. You can’t easily add another story to a house once it’s built. It’s much easier to add new functionality to software — especially in today’s world of software that’s either run directly in the cloud or at least delivered and updated via the Internet, where you don’t have to physically ship an updated software package to your customers.
Additionally, developing and improving digital products is risky. It is generally unknown what the best way to deliver value through the product will be. More concretely: when starting out, we don’t know what functionality and user experience the product should provide in order to be most beneficial to its users. The more innovative a product is, the more risk there is. This is another key difference to many physical engineering projects, that are often more similar to previous constructions.
Today, many companies — big and small, incumbents and challengers, old and new — have adopted iterative software development practices. They use Scrum or similar practices, and ship new versions of their software more frequently than as one big annual release. On the surface, it seems they are now working iteratively… but they are not. To truly develop products iteratively, you have to start earlier.