It cannot take into consideration the needs and distractions that would arise in the future. The fact that it is a kind of process wherein
constant feedback from the user end is taken into consideration to continually develop the code helps it be so. Thereby, they try to maximize the value created by the investment to date. Its advancement in small step cycles helps improve productivity and alleviate the failures as they happen.
Further simplicity in both, the design implemented and the code also helps communication.