Jimmy Bogard has written a great post on ten tips to maximize the return on your TDD investment. One of his tips was to invest in your design skills, which I consider to be the best tip in the article. If there is a single, important message that I have tried to convey it's this: focus on the principles, not the technology. Principles are timeless and more importantly, portable between technologies. Trust me, I wasted years of my life learning the intricacies of COM programming...what does that knowledge do for me now? Learning Microsoft's latest and greatest technology is not going to make you a better developer. It's just going to take up space in your brain...long after the technology is obsolete.
So, you wanna learn TDD? Well, there are some other things you need to learn first. Fortunately, you can learn them really quickly, and even more fortunately, you will be twice the programmer that you were before. Literally, the way you think about code will change overnight. So, without further ado...
You could read Agile Principles, Patterns, and Practices (and I highly suggest you do) but the meat of the book is here for free. Read these SOLID articles to start your journey towards higher quality code:
These articles should take you a week or so to read. Don't rush through them. Consider them carefully and start to think about how the code you are currently writing violates (or validates) these principles. Once you have digested these articles, there is still plenty more to learn but you should be able to attempt a foray into the TDD area. If you want some more reading, I have a list of recommended books that I maintain. You should start reading them (and books like them), because it will further your understanding of the principles behind what we do.
I think Jeremy Miller says it best: "TDD adoption punishes coders that don’t understand the basics of coupling, cohesion, and separation of concerns". I could not agree more. Even if you have a good OOD background, I think you will still have a tough time learning TDD. If you don't know these principles, you will probably abandon your efforts to learn TDD. It will just be too painful and unproductive otherwise.