I’m reading Fred Brooks’s new book, “The Design of Design”. He makes a great point about the errors of traditional product development:
In software engineering practice, another kind of harm can readily be spotted—the Rational Model, in any of its forms, leads us to demand up-front statements of design requirements. It leads us to believe that such can be formulated. It leads us to make contracts with one another on the basis of this enshrined ignorance. A more realistic process model would make design work more efficient, obviating many arguments with clients and much rework.
Amen! Successful projects are always iterative projects, where the users figure out what they need over time — not all up front.