John Ousterhout, author of A Philosophy of Software Design, sharply points to the problem of TTD, doing so is basically debugging your system, not designing at all. By focusing on passing test one by one, there is no more design and finally will lead to very bad design. However he is a big fan of unit test, he does white box test (not black box).

What is unit test?

While watching his interview of this book, I almost give up trying TTD one day, then a comment in YouTube disagreed with his opinion on TTD, John disagrees with TTD because he didn’t mention the third step of TTD: Red, Green, Refactor, (this is where design happens non?)