The best way to understand the needs of the users and the customer is to allow them to test the product along the development process, in real-life situations.
This avoids the tunnel effect and reduces the time between the formulation of a need and its realization. The product is enriched throughout the project lifecycle and its conformity is checked regularly.
Changes should be seen as opportunities rather than obstacles. Indeed, new ideas can emerge and bring unplanned functionality to the product, thus creating value.
Clear and regular communication remains the key element. There is a real need to create cohesion by bringing all stakeholders together, without intermediaries. Interaction is crucial on a daily basis to reach a clear product-oriented goal.
The idea is not to develop a perfectly detailed project plan before it is even launched but to test efficient practices and techniques for a single project. Through iterations, the team regularly questions its way of working and relies on an empirical approach to optimize its efficiency.
It is thus possible to keep the "winning" methods or to reject the less efficient ones, always with a view to improving the overall realization process. Experience comes with practice, and the project can be launched earlier as less time is spent planning it.