The trouble with Big Up Front Design

Agile methodologies say that big up front design (BUFD) is bad. What happens when requirements change? What happens when scalability issues are encountered? How can you know solution X is better than Y? BUFD fails in these cases because unpredictable issues changed the design.

For the most part, I agree in that it is impossible to plan for everything. But I don’t believe it to mean that design is dead.

For example, if you are designing Windows Vista, would you want to have the Windows XP architect involved? Absolutely. Windows XP has proven itself in some ways and failed in others. Learning from how it currently works is a huge advantage to starting from scratch.

Why do most web applications use a 3-tier design? Because it is proven to work. I don’t know if it is the best, but it has always worked for me.

The trouble with BUFD isn’t the design, but the prediction. No matter how hard you try, you can’t predict how something you have never done before will work. However, designing based on proven concepts is something worth spending time on. It will change over time but starting on the right foot is not to be taken lightly.

The best way to explain this is to think of how it would apply to me in real life. If I was told to create a new webmail application, I would spend a few weeks just talking with Mike. Mike has been the lead developer on Noteworthy Webmail for nearly 4 years. I would create a huge design document based on his thoughts and ideas about how to create this application. Even though I know this design would change over time, at least it would provide an awesome foundation for me to start.