« The power of myth | Main | Heh »

August 19, 2005

Joel Splosky and Big Design Up Front

Joel Splosky wrote an article about a new product he's developing, and said this:


. As I worked through the screens that would be needed to allow either party to initiate the process, I realized that Aardvark would be just as useful, and radically simpler, if the helper was required to start the whole process. Making this change in the spec took an hour or two. If we had made this change in code, it would have added weeks to the schedule. I can’t tell you how strongly I believe in Big Design Up Front, which the proponents of Extreme Programming consider anathema. I have consistently saved time and made better products by using BDUF and I’m proud to use it, no matter what the XP fanatics claim. They’re just wrong on this point and I can’t be any clearer than that.

And suddenly, another piece of the jigsaw puzzle fell into place, and I could see the overall picture more clearly.

If the customer is able to understand complex software flows, and visualize a working application in his or her head, then BDUF is probably the right strategy.

Otherwise, it probably isn't.


Consider Joel - he is his own customer. This is his vision, his product, his system. He knows what he wants done, how he wants it done, and what it should do. Developing the application "experimentally" is almost certainly counterproductive for him, or for anyone who is extremely clear on what they want.

But Joel is building a product from his own vision. I, on the other hand, am building a product for someone else's vision, someone who is very bad at visualizing complex flows, who hasn't thought through the user interactions and what the system means to her. If I had insisted on BDUF, instead of a more iterative, partial-demo-every-week approach with this customer, we would all be miserable right now, and probably would not see repeat business from this customer.

Which again reinforces my existing prejudice - that agile development is more suited for consulting projects or product improvements that 'behave like' consulting projects.


Especially those where the customer doesn't know exactly what they want.

Posted by jb at August 19, 2005 10:32 AM

Trackback Pings

TrackBack URL for this entry:
http://www.undefined.com/cgi-bin/mt/mt-tb.cgi/253

Comments

Post a comment




Remember Me?

(you may use HTML tags for style)