TDD Is Not For The Weak

I paired with a nameless person on the development team last week (I would name them but I don’t remember who it was. But hey, I love you, whoever you are!). It’s been an eye opening experience, not because we did something different. On the contrary – it was regular work at Typemock.

What we did is add a feature. We did this by using TDD. We did it by the book. Add a test that tested a small part of functionality. We then added the code that satisfied the test. And then we repeated, by adding tests for the next additional functionality. For the particular feature, we did that for a couple of hours and the feature is done.

A day later it occurred to me – not everyone can do that. Technically maybe, we’re all aware of the TDD steps. But it took a pair of experienced programmers to maintain the slow pace. To have the discipline not to jump forward, and focus on the small functionality. Pairing worked because both of us kept the eyes on the target, yet took pleasure (weird, huh?) by marking off completed scenarios.

So if TDD is for the Alpha, the strong, the experienced, what’s left for the rest? Is this why TDD does not catch on? If TDD is not enabling unit testing, because it’s bound to fail most of the time, then what will?

We should change our ways.

Yesterday, we launched Isolator 5.4.2 with Intellitest. This is the first of many features and product we’ll be launching soon. Intellitest is about making the pain of writing unit tests go away. Our next features are going the same way.

TDD’s failure is a symptom. Successful TDD means you’ve come a long way, baby. But many don’t succeed. And we can help them.

We’ve just begun. Expect more soon.