I recently designed and implemented a project prototype. I used Test-Driven Development (TDD) as well. After implemented the project prototype for a few days, I felt TDD didn’t help me too much in this project due to lack of good requirements specification.

TTD is very helpful when we have a good requirements specification. In another words, if we know what we need to test, TDD is great. However, if we don’t have any concrete requirements specification and still is in prototyping or piloting phase, TDD is not so great.

If we design the project wrong in the upstream of software development cycle, it doesn’t matter whether we use TDD or not. The use case of TDD is in the implementation phase.

Sorry, TDD is not a silver bullet, and we still have to analyze and design first.