XP Is Not a Silver Bullet (see also NoSilverBullet)
A lot of people are expecting ExtremeProgramming to turn trained chimps into SuperProgrammers. Of course it can do no such thing. Like any other software process, XP requires:
What can XP do? Well, even projects that meet all of the above criterion often fail. Maybe XP can help some of them succeed. --JohnBrewer
I saw this comment on the ExtremeHumility page:
From what I can tell, the answer to both questions is "No." XP's adherents and practitioners claim that it is an improvement over other processes that they've used, but that raises the question: what is being improved, and by how much? Are XP teams more productive? Probably, but not by anything close to an order of magnitude. Are they more reliable? Simpler? These are harder questions, at least in part because Brooks' precise meaning (see NoSilverBullet) is open to debate. My interpretation is that he's referring to the software development process itself, and using "reliability" as a measure of how often projects "succeed" (however that is defined) and "simplicity" as a measure of how tricky projects are to manage successfully.
By those definitions, XP's primary claim to silver bullet status would seem to be on the "reliability" front: XP claims to help projects succeed. But I don't hear anyone claiming a tenfold increase in reliability, or anything even close to it. XP may also have some significant, but not earthshaking, contributions to making projects simpler to manage.
If you feel that Brooks is referring to the simplicity and/or reliability of the software itself, then XP also claims to help in those areas, albeit (again) in incremental, rather than revolutionary ways.
All of which raises yet another question: How does XP help? We've all seen a lot of discussion that seems to rest on the assumption that XP is good. But why is it good? What benefits does it really claim to have? The closest thing I've found is the page WhyXpIsPopular, and what I see there matches my understanding of things:
As I recall, Brooks claims success partly because he separates what he considers different techniques. He'd consider reusable components, object orientation and better IDEs to be 3 failed silver bullets even if together they give you a 10-fold increase. I think he'd probably consider XP to be a collection of bronze bullets rather than a single silver one. -- DaveHarris
I'm new to the XP thing but an old fan of TomDeMarco's common sense and the common sense that says that small teams with clear objectives and talent get lots of good stuff done quickly. -- MartyHeyman
What do you do when you don't have A group of reasonably clever developers with sufficient technical expertise? Or worse, what do you do when you're on a team without said resources?
In all of my experience so far, a project that lacks decent developers also lacks success. Is there anyway around this aside from adding 2 years of training and practice to the schedule?
I've seen projects that I wasn't directly involved in succeed with incompetent programmers. They had a long development schedule which included massive BigDesignUpFront and testing on the other end. I can't say I liked their code, nor their documents, nor the execution speed, nor their continual schedule slips, but I've seen them produce programs that output the correct things for valid input.
I believe the practice of PairProgramming is meant to make the high-discipline/long experience needed parts more possible for novice programmers.