I think the most important lesson of the whole TDD drama that shook the Ruby community is this: nobody knows anymore what TDD really is. Seriously, just take a look at Uncle Bob’s response to “TDD is dead”. The only takeaway from this blog post is that even he has problems distinguishing testing in general from TDD practices in particular.
It’s always necessary to agree on common vocabulary before you start a discussion. The term “TDD” is open to interpretation, so you shouldn’t use it anymore. You need to specify which aspect of this whole TDD thing you’re referring to. You might be talking about writing tests in general in contrast to not testing at all. Or maybe about test-first against test-after or test-all-the-fucking-time. You could also advocate red-green-refactor as an alternative to just-write-something-that-works.
There are too many aspects of TDD to have a technical discussion without detailing out what we are actually talking about. As long as we keep using vague terms, we’ll have vaguely useful discussions. And people like me are gonna keep making presentations like Why TDD is a dangerous sect.