The waterfall method of software development involves a step by step process of developing requirements, determining the business problem, making a plan. Coding the software, testing, launch and fixing any associated problems.
Extreme approaches to software development arose because software doesn't solve the new problems that have appeared since you first developed the spec. So instead by using continuous development and bug fixing the software you develop will be nearer to what is currently needed by a customer, and extreme programming will have a shorter path to getting there.
Agile focuses on organizing teams so that by working together you will increase the speed of development, and shorten the time it takes to develop workable software that can be tested by users.
One technique for planning time estimates that’s used in extreme and agile development is called poker planning. The use of playing cards, where members of the project team select cards that give time estimates on a project, and then all team members reveal their estimates at the same time. Those members of the team who either gave a low or high estimate of time for a project then have to justify their estimates to the group until there’s a consensus.
If planning a project is doomed to failure not because of the success of the implementation of project, but the realization that requirements shift over short periods of time, perhaps it’s time to time about not just building an iterative process for development but the whole enterprise.