- Complaint: TDDed tests are prescriptive
- Response: This is a feature. Stating our assumptions up front exposes misunderstandings.
- Complaint: Choosing tests is hard
- Response: This is also a feature. It tells us that our design is bad or that we don't understand the problem.
- Complaint: The code you TDDed was bad!
- Response: TDD does not free us from thinking. TDD is not magic.
- Complaint: It's too much typing.
- Response: Typing is not the bottleneck.
Many complaints about TDD are complaints that it doesn't solve some problem. These are not problems with TDD – it's not supposed to solve every problem!
Image via WikipediaDynamic languages don't make coffee, continuous integration doesn't shine shoes, and TDD doesn't make code scale. It's simply the basis of a solid, disciplined process for building software – a beginning, not an end."