I wonder if test-driven development's promise of design through refactoring appeals to most of us just because it basically says that "I'll just clean it up later.." without ever actually forcing us to do so. (Maybe that's why proponents of extreme programming say it takes discipline to do extreme programming.) I'm sure most of y'all are disciplined developers or so talented that you don't need no stinkin' discipline, but, in my experience, to the rest of us, up-front designing is the most reliable way to produce software. It resonates with findings about the human will; namely the fact that the most reliable prediction of a person's future decisions can be made from his current decision. Ie. if you now decide to delay starting working on something, most probably you will delay starting tomorrow also. Similarly, the most reliable prediction of whether you are going to clean up the structure of the software (call it refactoring or designing), comes from your current decision ("I'll just start hacking" vs. "I'll design this first").
(All this, of course, conflicts with the oh-so-appealing idea of "sketching the program"..)
[permalink] [2 comments] 24.10.2004, 11:15