The main strength of XP is that it is designed to appeal directly to software developers. The XP practices, and the emphasis on coaching and self-organized teams are most likely a reaction to software development cultures that stress project management and bureaucracy as a means to achieve successful projects. XP is likely also a reaction to bad managers who tell teams what to do, when, and how to do it.
XP has introduced a healthy debate within the software industry. Traditional engineering methods place decision-making power primarily in the hands of managers through bureaucracy, tracking plans, unnecessary milestones, and documentation as a tracked deliverable. XP counters bureaucracy by placing the decision-making power in the hands of the software development team and the software's users. Instead, by emphasizing value to customers through working software not documentation, practices that emphasize technical excellence, collaboration between developers, and direct customer contact, XP is steering the industry more toward producing high-quality and high-value results for customers, which is exactly where the emphasis should be.
XP is Extreme
One of the appeals of XP is that it is extreme, especially compared to traditional software development practices. Pair programming, test-driven development, refactoring, the planning game, etc. are all completely out of the normal realm of experience for traditional software teams. As a result, XP has received a lot of attention and has gotten people to think and question their development methods. The resulting debates have been good for the software industry.
XP's focus on technical excellence is particularly important. Although it's hard to identify core practices, a case could be made that they are simple design, refactoring, and test-driven development. Each of these practices is simple yet powerful and helps to emphasize achieving results as quickly as possible so that users can provide feedback and changes made in response to the user comments. Likewise, continuous integration helps teams focus on keeping their software integrated and working through unit tests and the goal of frequent and small releases.
There is no doubt that XP gets teams working together, intimately. Tight collaboration within teams is a vital aspect of success, and by emphasizing pair programming, collective ownership, self-organizing teams, and having an on-site customer focuses teams on collaborating. The result is exhilarating and fun for those involved, and the results are often phenomenal. Greater collaboration helps to ensure that common problems such as duplicated code and effort, unmaintainable code, and independently developed modules unable to integrate with each other. The integration problem is particularly acute; I have seen projects where two developers working in the same cubicle produce modules that can't be integrated, even when integration was a key design issue!
XP's collaborative practices help to avoid the hero syndrome. We all know the heroes; they're the ones who work long hours to get the critical features into the software. At many companies, they're rewarded by the company for doing so, and there is a general recognition that the company would be in deep trouble if they left. My experience with heroes (and I will confess that in my first job in industry I was one of them) is that they either leave behind a swath of destruction in the code, or they definitely leave behind code that can't be maintained by anyone else because nobody else knows the code the way they do. While it is true that the best programmers do produce more [Demarco and Lister 1999], often considerably more, there is still plenty of room through collaboration to keep the output of the best programmers high while making the entire team into the heroes through high-value and high-quality results.
The most important aspect of XP's collaborative practices is the emphasis on collaboration with customers. Because customers are involved in the planning of iterations and prioritization, and because there are regular releases of software to customers, the team is able to get timely feedback that helps to ensure team members are always doing what is most important to the customer. Thus, XP maximizes value to the customer while minimizing the amount of effort required to create that value through decreasing effort wasted on nonessential work.