I don't know when I came up with this technique for learning TDD, it just sorta happened. I have found it to be one of the most challenging things I've ever done, and once I mastered it I stopped struggling to do TDD.
Here is an outline of this learning technique.
- Find a small problem to solve. I use Project Euler as source of inspiration.
- Attempt to solve the problem via TDD without thinking ahead.