It's not extreme, and it's not about programming.
Programmers work in pairs, so that they can explain to each other what they're doing.
All programmers are allowed, nay encouraged, to constantly fiddle with every piece of code in the project, so that they can refactor and simplify the code. The project itself is broken into short chunks, each of which might take one to three weeks to implement, test and deliver. Customers should be deeply involved with the development process, and are encouraged to prioritize and reprioritize features and functionality. And it's better to deliver partial functionality immediately, and then add new functionality in small incremental releases, than to wait to deliver everything all at once. It's hard to argue with most of those ideals, though others seem to be either counterproductive or even downright dangerous.