Joel Spolsky posted on his site about several instances where where he needed to modify the Project Aardvark (Copilot) Functional Specification.
It was all fine, and stuff I agree with myself, up until close to the end where he wrote:
I can’t tell you how strongly I believe in Big Design Up Front, which the proponents of Extreme Programming consider anathema. I have consistently saved time and made better products by using BDUF and I’m proud to use it, no matter what the XP fanatics claim. They’re just wrong on this point and I can’t be any clearer than that.
Now, I’m neither a hardcore XP person, nor a hardcore BDUF person, but that’s a bit of a mischaracterisation of XP if I ever heard one. There was me thinking one of the core mantras of XP was “design a bit, code a bit“, meaning you create a rough spec up front, and then refine that over each iteration/milestone/phase/whatever of the project.
I know there’s people out there who look at XP and say to themselves, “yay, no planning!”, but that’s not XP. And I think we can all agree that those people aren’t so much XP fanatics as XP idiots.