Agile Project Planning

ExtremePlanner: Agile Project Management for Distributed Software Teams
Click For Your Free Online Trial

Thursday, August 18, 2005

Big Design Up Front Considered Essential?

In a recent article on Joel On Software , Joel writes about functional specs, and concludes:

"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."

However, the actual spec he's talking about is a high level description of what the software is supposed to do, along with the screens and what should be on them, generally.

It's about 15 pages of heavily white-spaced, image-laden (OK, they're text images) content that clearly explains the intent of the software, without defining exactly HOW it will be built, or even exactly how it will look. In other words, it's really useful!

To me, BDUF is more about the mindset of planning everything out in advance, down to the smallest detail. It's about behaving as if you have all of the answers, when you don't.

No one ever said thinking wasn't allowed to happen up front. Or writing for that matter. There may some XP or agile proponents who think writing documents of any kind is a Bad Thing. I am not of that crowd. To me agile isn't a religion, whose laws can be pointed to in a Book of Agile. It's a philosophy, and a set of principles that basically say "Don't get carried away trying to predict the future".

So if your project can benefit from some clear thinking, try writing a functional spec. Keep it simple, make it clear when you're just guessing about something, and see how it feels. You may just discover that it's a pretty agile thing to do.

For more on agile tools and techniques:

Get your copy of the new book! Agile Thinking: Leading Successful Software Project and Teams


  • Don't forget, that Joel develops software for his own company, and he operates the steering wheel of the product.

    It wouldn't be so easy if he had to create an enterprise system for some other company - Big Design UpFront might be possible only to a very limited extend, which would change the name of the document for "Basic Functional Specification" ;)

    By Anonymous Anonymous, at 12:50 AM  

  • It's definitely a "type of customer" issue - Joel needs to think about what his product needs to do upfront because he wants to sell to thousands of people.

    He doesn't have a single customer who can sit in the room with him whilst he is coding (or if he did the software probably wouldn't appeal to thousands - just to one).

    By Blogger Baz, at 3:25 AM  

Post a Comment

<< Home