| > Note that (4) may happen dozens of times in the course of a large project, and that every single revisit of the TDD tests is 100% wasted time. ^ That is what makes me (Note: I'm not the one you asked the question of) suspicious of the author's understanding. This is the scenario they were describing: > 1. write the TDD tests > 2. begin implementation > 3. discover an unanticipated consideration > 4. rewrite the tests Since the tests themselves didn't reveal the unanticipated scenario, that means it was in using a dependency, not in the API/interface of their code. Fair enough. But the argument that the tests are wasted is effectively saying "making sure the API/interface I was going to use actually worked" was wasted time. I'm a fan of TDD, but hardly a fanatic, and honestly I've had limited opportunities to practice it lately. I think one of the major benefits of TDD is not using it, but the behaviors it teaches you - confirming your interface, making each piece small and decoupled - the things that make something testable happen to also be best practices for coding. This author isn't focused on the areas that actually doing TDD becomes complex, this author is tearing down those best practices by calling it "100% wasted time" That's a much harder sell, and I'm not being convinced by this article. |
That's not how I interpret his statement at all. I think he's saying the specs changed, so writing the tests for the previous version of the specs was a waste of time.