For those of you that don’t know what BDUF is, it’s expending a tremendous amount of effort prior to (sometimes during) a project to nail down firm requirements. The belief is that firm requirements will ensure the project is completed on time and on schedule. The problem with that theory is that the requirements will likely change on day one of the project. This is normal for software development projects because most software development projects are not repeatable. It’s not at all like building a bridge where you can rely on historical information to predict the nature of the project.
So it amazes me that after numerous failed projects, many organizations still believe that BDUF is necessary. Some organizations have even convinced themselves that they don’t do BDUF but in reality they do. For example, they may not start with BDUF prior to the project start but soon after they start introducing exploration features where the outcome is a ton of documentation. It is BDUF, just hidden.
I’m not saying everyone needs to switch to Agile (although I wish they would). I’m just saying that BDUF provides little to no value to why waste time/effort/money doing it. The best time to do design work is just before you’re about to implement it because that’s when you have the most information. Why do the design work when you have the least amount of information (i.e. prior to the project)?