The primary assumption that proponents of plan-driven (waterfall) development make is that the requirements of their project are known and will not change. While this may be true for some projects, it is not true for most. With most projects, the actual requirements of a project are discovered throughout the course of the entire development lifecycle, not just during an early discovery phase. In fact, requirements for a software application can never be definitely defined. They change over time as challenges are uncovered and new ideas are proposed.
Proponents of value-driven (agile) development understand this distinction. One of the twelve principles of Agile development is that everyone on a team should “welcome changing requirements, even late in development”. By anticipating changing requirements, everyone on a project team is free to express new ideas without fear of renegotiating contracts or drawing up change orders.
“Deliver the project needed at the end, not the one requested at the beginning”
One of the best quotes that captures this concept comes from Jim Highsmith of the Agile Alliance, who recommends that a development team should “deliver the project needed at the end, not the one requested at the beginning”. This idea should be a defining mission statement for all software teams. It keeps a team focused on producing the solution that is actually needed, not the one that everyone attempted to define early on in the process.