I don't TDD because if your reqs and both code change too fast it's waste of time.
I'm deeply into functional programming and I do have "perfect" functions. And a test suites for them. Never worte them upfront.
I write a (hopefully pure) function for some data transformation taks. Test my program, then I write a test which makes sure even all corner cases are covered. And fix my function. Not TDD but still well tested. But only if I'm sure the function will be used.