smart stuff

XP is fractal.
25 Sep 04 - http://www.approximity.com/cgi-bin/blogtariAgile/index.rb/XP_agile/XPisFractal.rdoc
(Source: Ken Boucher posted this to the xp-mailinglist)
 > Surely, you're not calling design documents you built in the middle
 > of a project "up-front" design?

Let’s talk about "project" and "up-front" for a second.

In the old world I came from, a project had a feedback loop. This feedback loop could be considered to have covered design to unit testing, roughly a period of 6 months to a year on many projects. In other words, I would get feedback on my design 6 months after I made it.

Now let’s enter the fractal nature of XP.

My design to unit test feedback loop is the duration of a card in most cases. In some cases it’s as small as design/refactor/new test/new code/refactor/ (which may be a scope of minutes). In some cases it may be as large as an iteration (after all, we didn’t pick the cards in this iteration at random, we had a plan). It may even have been as large as a release plan.

The difference is that I get my feedback quickly and the design I do at any given stage is as small as it needs to be instead of as large as it can be. But I still do design "up-front". I have a plan before I leave the release meeting. I have a plan before I leave the iteration meeting. I have a plan before I even start refactoring before that first unit test. I have to make the same decisions I would have made in the BDUF, the only difference is that I make them as late as possible. In short, I make them just before I do the task that requires that decision to have been made.

XP is fractal. It’s possible to think about an XP project as a large collection of projects, each small enough to be written on 3*5 cards. And I do design for every one of those projects up front.