This post was originally on my Posterous account, it's posted here without updating, some of the links my not work.
After deciding today to blog much more often, Jeff Atwood tweets about an old post of his:
Considence I'm sure, but it rung true with a conversation I had this morning about TDD. I'm newish to TDD, but a total convert, one thing I've learnt is not to overthink where it is leading you. Start from the most abstract business logic and write tests for the simple cases first. Then if your finding it difficult to write the tests try injecting in some providers or adapters instead of complicated data structures, suppling the parameters you want not what you have. Don't be afraid to get it wrong, because your going to go back and refactor it shortly anyway. You may find that you end up throwing away a lot, or trying things a few different ways, because you chose the wrong approach, but this quantity seems to lead to quality in the end.