Robert C. Martin originally made these points - I can back them up from my own experience: - You will automatically build a regression test suite of unit tests as you go. - You will hardly ever spend time debugging, as if you code yourself into a hole, it's easier to undo your code to the point when the last test passed, rather than crack open a debugger. - Every few minutes you verify that your code works - all of it! I pretty much do TDD all of the time, whether I'm working on production or play code; I find it difficult to code any other way these days.