I have completed my first production module using the test driven development methodology. I had some qualms about using this approach as it seemed like a waste of time to go through all the Red, Green, Refactor steps. It was a little frustrating at first, but as I got into the rhythm of it, I found that not only was I producing code faster than I have in the past, I was also producing much better code.
One of the biggest obstacles I face when doing a project is over-analyzing every aspect of my architecture. This leads to approaching a problem and debating with myself for endless amounts of time over which solution to implement. The drawback to this (besides the obvious fact that I'm spending more time thinking about solutions than coding) is that my solutions don't REALLY solve the problem I'm facing. They solve the problems that I perceive. By approaching each step in the process and solving only that problem using the TDD methodology my code now conforms better to the spec and not to my interpretation of it.