TDD:

  1. first, write a failing test
  2. then, write just enough code to make the test pass
  3. repeat from 1.

What TDD does is to focus on the interface of any code you are going to write. IMO, only very basic solutions are good candidates for TDD. By basic I mean not simple but minimal, like a REST API.