Bill writes:
One aspect of TDD is that it captures knowledge about the system, executable knowledge, which was previously transient, unavailable or simply thrown away. Without TTD or test-first, this 50% output/effort was probably never captured. It was spent interpreting print lines and on hours poured over the debugger - neither of which result in reusable knowledge. Time spent in a debugger is not recyclable, not repeatable, not resuable by others - a debugger should be tool of last resort.
Thank you! This concisely captures one of those feelings you have about TDD, something that only programmers (or clueful managers) can understand since many people think code simply springs forth from your fingertips ready-to-use. (Or as my favorite writing teacher from college said: "There's no such thing as good writing, only good rewriting.")
Bill's post responded to a Udell article about a new testing tool. The article is interesting enough, but it's odd to see acronyms like 'TDD' out in the wild like that. I'd considered TDD to be a behind-the-curtains discussion that nobody else but the people actually doing it would really care about...