I mentioned on the weekend that I was throwing myself in the deep end with Test Driven Development, and hoping that I would come up swimming.
Much to my surprise, by Tuesday afternoon I already found myself getting into the swing of things and cutting back my exploratory coding to a bare minimum. Now when I see a piece of a feature missing I stop and write a test where previously I was still giving into the temptation of exploring the solution first and then working out how I wanted to TDD it. I’m still a little slower than I’d like to be, but I have complete confidence in the code I’m writing.
The one problem I do have is that most of the time I’m still jumping straight from acceptance tests to atomic tests; eventually I’ll get the hang of where and when to create integration tests but for the moment I’m very proud of how much I’ve actually trained myself to do TDD.
Slightly off topic, the development speed we’re achieving now is making me wonder if the tradeoffs when developing purely under Pair Programming are actually worth it. I’m going to be giving this a lot more thought, particularly when we get back into pairing. I absolutely do not want to give it up but I think our previous attitude may have concentrated a little too hard on knowledge sharing without considering if the impact on our velocity was acceptable.