Aardvark, BDUF and Getting your story straight

I’ve got a huge amount of time for Joel. His attitude to businesss, developers, workspace and more are great, but sometimes he writes something that makes me cringe.

Yesterday, he published the spec for Copilot, codenamed project Aardvark, for the world to see. For that I’m truly greatful – it’s always good to see what others are doing.

But in the surrounding blurb, he says:

As I worked through the screens that would be needed to allow either party to initiate the process, I realized that Aardvark would be just as useful, and radically simpler, if the helper was required to start the whole process. Making this change in the spec took an hour or two. If we had made this change in code, it would have added weeks to the schedule. 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.

What XP “fanatics” say is that you don’t need to do BDUF on how you build the thing. What Joel’s talking about is BDUF on _what_ you build. Many XPers call this “getting your story straight”.

Rachel Davies has spoken about this with respect to stories having a cost element. Fuller document is on BCS’ wiki.

Olivier Lafontan talks about this in his excellent post where he discusses eXtreme Analysis and the NoVNoS Framework

And back at XPDay3, David Leigh Fellows and Richard Watt presented on Acceptance Test Driven Development, giving a clear view on how “getting your story straight” preceedes estimates and planning.

Anyway, here’s Joel’s useful post with the spec in

Updated: Anthony Williams has picked up on the same point. Anthony sites “design at the last responsible moment” as his headline and that’s a great mantra also. The term missing from Anthony’s post, though, is Interaction Design.

This, in my mind, is the biggest hurdle. Joel is talking about refining the Interaction Design of his application. I have long said that this is the major difference between a traditional requirement and a story. A story is a fragment of interaction design; the XP process is predicated on the story being written by someone who knows what that interaction should be, but alos on allowing them to change their mind.


So, each week I’m posting one of my own photos, sized for use on your desktop. Join in by blogging your own photos and include the phrase [grid::blogpaper] in your post – then everyone can google for them.

This week’s BlogPaper is called Swan:

Download one here: 1600×1200, 1280×1024, 1024×768, 800×600

Sam's Here

Friday morning at 6.33am my third child arrived. Sam’s a big boy, just half an ounce short of ten pounds. Despite this my wife delivered on just gas & air in a little over three and a half hours. Bloody hell she’s amazing. She was totally in control the whole time, following the midwife’s instructions to the point of managing to not push when told not to…

Continue reading