I just wanted to clarify my position on Unit Testing a bit.
First of all, I am a big believer in Unit Testing Production Code, during development and prior to internal or external releases.
As a matter of fact, I first started enforcing this type of testing on projects as early as the early 1990’s.
So, if “TDD” means “Test Driven Development”, I am all for that.
As far as “Test Driven Design”, as one can probably surmise from my blog, I view that as inefficient and cumbersome for a number of reasons; in any case it seems especially pointless to unit test prototype code that will be thrown away or redesigned in short order; once things stabilize a bit on the design front and begins to become part of the production code base, Unit Tests should be written and maintained for it.
Further, since “TDD” can mean both “Test Driven Design” and “Test Driven Development” I propose that “TDI” — “Test Driven Implementation” — might serve as a useful disambiguation.