TDD is overrated. It's main benefit is that it forces the developer to express the same things twice in two different ways. It is like entering your password twice for verification. You get immediate feedback if there is an inconsistency. On the other hand, there might be methodologies that reveal more bugs per developer-hour, such as code reviews or spending more time on having a clean design. In fact, TDD often leads to a hacky, non-object-oriented design as it forces the developer to add ways to inspect and verify the internal state of whatever is being tested - thus perforating encapsulation.