Learning TDD with Katas

Test driven development can be hard to learn and requires a lot of discipline to continue as a practice. There are books for learning TDD and they are good but they are also old and can be hard to approach given that learning styles for coding have shifted away from books and more towards the online, the interactive and the overflow.

Books and resources aside, TDD is a vast shift in headspace and it takes time to re-wire the brain for this. We tend to overload our brains these days, throwing huge chunks of delicate, detailed information at it in great one-time lobs and then wondering why nothing sticks. Kathy Sierra, in her talk, Making Badass Developers, takes this apart and submits that we need to reduce cognitive leaks by feeding new information to our brains in much smaller pieces.

In the writing world, my favorite writing teacher suggests to students who are having trouble getting words on the page that they write for 5 minutes a day, every day. After 5 minutes is up, stop and go no further.

Lately, I have found that this applies to TDD as well if you practice with Katas. Katas are sets of requirements published online in various places by various authors that guide you through testing first. The trick is that if you are learning TDD, you should only work on them for 15 minutes a day. Breaking up the practice into short bursts allows the brain to build new neural pathways day after day.

This is how you build a practice. That practice is important because TDD is most effective if you can stick with it even when coding is stressful. Because we are human, when we are stressed we fall back to whatever it is we have practiced the most. This is when it is hardest to stick to TDD but this is also when sticking to TDD can save you.

If you try learning with a kata, give yourself a month and focus on one of them for 15 minutes a day. Once the month is over, it’s ok if you didn’t finish or you dropped off. Give yourself a fresh start at the beginning of the next month with another kata.

As an example, I’ve completed the Greeting kata and just finished up the Calculator Kata. I didn’t finish all of the requirements in the Calculator one, but decided to stop after a month because I got what I wanted from it and felt like I’d spent enough time with it.

Some TDD Katas

Thanks for the kata recommendations from Yitz Schaeffer a.k.a. @yitzofthebitz and Chris Hartjes aka @grmpyprogrammer