I once had a lovely conversation with a very bright senior engineer in New Zealand, John Watson – a guy I like and respect a lot. This was in the early days of agile and he had asked about it, so I spent an evening explaining Extreme Programming to him. He sat and listened carefully, questioning only for clarification, and it was clear that he understood — he got it. After thinking about it for a while he said, “it doesn’t work”.
I had worked on XP projects and they were successful — very successful. I thought about what he said and I assumed that I simply hadn’t explained it properly — the fault was with me, not with him. We talked some more and after a while he said, “it doesn’t work”, but this time, rather than rail against his assertion I asked why?
He said that to follow a process like XP one needs a team of bright, disciplined engineers who communicate effectively and continually. Engineers who will listen to each other with respect and who will give each other the chance to speak and be heard. He said that you need engineers who understand the benefits of process, and who understand the process being used. He then said that these people are elite and that they will probably succeed no matter what process you use — that of course XP is successful, because the people we’re talking about are exceptional — and that if we use XP with normal developers it’ll fail just like all other processes.
What he said we really need is a process that works with normal developers, and XP isn’t it.
I don’t know if he’s right, but I suspect that he is.