One of the premises of extreme programming is that you use it when working on new software with rapidly changing requirements.
Anyone who has ever done development understands the chaos that changing requirements brings. But if you actually plan to live in an environment of rapidly changing requirements, you might want to reconsider your job.
Think about that type of mentality in other professions. Can you imagine building skyscrapers to changing specifications? Or a car? Or the parts of a movie (its a cartoon, no, it's claymation, no, it is a drama)?
I actually worked on a mansion once in the construction trade that was "cost plus", meaning that the specifications could change at any time. And they did, all the time. And at the end of the project they got a house that cost 3 times as much as the one next door even though it was comparable and it is structurally flawed and the foundation is unstable.
The fact is that stupidity and chaos is not a modern invention, it has been around since the beginning of time. To some extent waste is a byproduct is experimentation and is essential, but not everything in life should be an experiment when there are ample procedures that bring positive, proven results.
Think about what rapidly changing requirements means. It means, on an extreme level, that you don't know what you are building. It is one thing to allow for requirement flexibility on minor things, for instance allowing that the colors on a page might end up being blue or green. It is another to say I might be building a stock trading application or a property management application, but "I'm not really sure".
It is true that every product has revisions, but that is okay. It is okay to make accounting software that exports to a new format. It is okay to have accounting software that adds a new tax form. These are incremental updates, not huge architectural changes. It is not okay to start work on accounting software without having a solid idea of what the first product is going to be. Even if the client is willing to pay you cost-plus, you will likely end up with egg on your face.
A project manager really needs to have the guts to say that if the project requirements are not possible to nail down to a large degree, they won't work on the project.
A company hiring an IT team need to understand that if they don't know what they are trying to build in specific detail, they shouldn't even start.