Home > AJAX, ASP.NET, Musings, Personal > Some Design Up Front is Good

Some Design Up Front is Good

December 18th, 2008

Like a horse with blinders on, avoiding some degree of Big Design Up Front (BDUF) can force your team and project into tunnel vision, because… If you don’t look at what you’re building in its entirety, it is harder to see the big picture, to have to that ah-hah moment that leads to a break through, to maintain conceptual integrity, or have a successful project.

I worked on a project where we attempted evolutionary design (avoiding Big Design Up Front) while taking an Agile approach. We used Continuous Integration, and Test Driven Development. Looking back, our attempt at trying to avoid Big Design Up Front was fatal for our project’s success and probably our biggest mistake. The funny thing is, the only reason we avoided BDUF was because it seemed non-Agile (note the capital ‘A‘ in ‘Agile’ read Yegge’s post Good Agile, Bad Agile for the reference). As a development team we were inexperienced Agile (eXtreme Programming) teenagers and somewhere along the way we exchanged our brains for dogma.

eXtreme Programming [is at odds with] “Big Design, Up Front” (BDUF) _ Because “Ya Ain’t Gonna Need It” (YAGNI) … [but this is often] taken as permission to not do any planning – Gerard Meszaros’ Alberta TechFest slide deck ’07

In the past Big Design Up Front (BDUF) was associated with large inflexible architectural solutions that are designed upfront (before development begins) – like the waterfall methodology. However; BDUF (like most techniques / methodologies / tools) are quite useful when used with a sprinkle of common sense and moderation. BDUF can be a productive lightweight tool for fleshing out the high level overview of a system. It is important to note that I’m not advocating Big Architectural Design Up Front which is often composed of reams of documents, UML, ERDs, diagrams, and other unneeded artifacts. Instead I’m advocating for paper based story boards, wire frames, paper prototypes, user stories – anything that is easy to create, destroy, and recreate. These techniques provide the foundation of the final product, they start to verbalize the common product goal and can start to draw out the language, metaphors, and model that will eventually compose the project.

Avoiding some Design Up Front was a mistake for our project. As a team we were trying to cope with the complexities of our domain under very tight deadlines. Our code became increasingly brittle, we had overlooked obvious shared functionality that a high level overview would have fleshed out. At the same time we had segregated our application into sprint sized silos with no clear relationships – each sprint was essentially a two week tunnel, and disconnected.

Without some form of BDUF it was difficult to:

  • maintain conceptual integrity, a common goal, a consistent user interface
  • estimate the whole product cost
  • have a successful project

We should have headed Steve McConnell’s words:

people were claiming,  “I don’t have to do requirements or design because I’m using object-oriented programming.” That was just an excuse. Most of those people weren’t really doing object-oriented programming-they were hacking, and the results were predictable, and poor. Right now, people are saying “I don’t have to do requirements or design because I’m doing agile development.” Again, the results are easy to predict, and poorSteve McConnell, Code Complete

Or perhaps Martin Fowler’s suggestion:

the planned design approach has been around since the 70s, and lots of people have used it. It is better in many ways than code and fix evolutionary design. But it has some faults. – Martin Fowler, Is Design Dead?

Not doing some Design Up Front is probably another excuse for being sloppy, but what do you think?

Author: Adam Kahtava Categories: AJAX, ASP.NET, Musings, Personal Tags:
  1. z
    October 9th, 2009 at 10:01 | #1

    BDUF (like most techniques / methodologies / tools) are quite useful when used with a sprinkle of common sense and moderation.

    Common sense and moderation are not characteristics of BDUF. Big is not moderate for the first place. Middle is moderate. DUF is working surely.

  2. Adam Kahtava
    October 12th, 2009 at 11:48 | #2

    @z, Yup. Everything in moderation. In the case I described above, we didn’t plan enough and didn’t know what we were building.

    Some variation of BDUF (like DUF) would have certainly been welcome.

  1. No trackbacks yet.