Tuesday, September 20, 2005


If you are an executive at a software company, your development team may be familiar with agile or iterative software development.

At first, its advocates lamented "big up-front design" (BUFD). Software organizations that try to design the product up front in excrutiating detail waste a lot of effort, as implementing and testing the software uncovers many unforeseen problems. Agile development attempts to exercise the architecture (high-level design) and expose these problems early. It typically does so by "releasing" the software early for testing. It thereby attacks architectural risks early in the development process and defers the design details.

More recently, advocates of agile development have realized that a more serious problem than architectural risk is requirements risk. You never know all of the requirements until you release the product. If your organization engages in "big up-front requirements" (BUFR), you tend to waste even more time than with BUFD. You're better off attacking requirements risks early in the process - again, by "releasing" the software early for testing and feedback - after having defined the key requirements but having deferred the details.

Since market problems and needs should drive the requirements for a product, the product manager must work collaboratively with the development team to iterate on the requirements. A product manager who engages in BUFR and then throws the requirements over the wall to developers subjects the entire product development effort to risk - requirements risk.

UPDATE: Some people refer to BUFD and BUFR as 'BDUF' ("big design up front") and 'BRUF' ("big requirements up front"), respectively.

No comments: