This is true. There are engineers who practice TDD as well, although quite few in my experience. The code I've seen come out from hardcore TDD is utter crap, because what truly matters is a good design. In fact writing tests first by design produces crappily designed and messy code and by extension crappily designed tests. Hence you end up with crap all over.