There’s a Kata For That

I was recently thinking about how Programming Katas can help improve ones Craftsmanship. One of the big ideas behind Craftsmanship is Practice, or more precisely Deliberate Practice. According to the 10,000 hours theory you require 10,000 hours of Deliberate Practice in a specific field to become an expert in that area. When performing Deliberate Practice it is essential to think about the aspects of your craft requiring most improvement.

I have found different Katas to be good for practicing different things; to an extent this comes down to the solution you chose to implement, but obviously some Katas are best solved in a certain way. For example, I would expect a solution to the Fibonaci Sequence Katas to use recursion, and thus be a good start for Deliberate Practicing recursion. The Fibonaci Sequence perhaps isn't the best example due to it's extreme simplicity, but hopefully you get the idea.

In many ways the Katas remind me of the exercises we performed at University. After most lectures there would be a practical in which we would get a chance to try something new, or reinforce something we've gradually been learning about, usually by one or more short exercises. Sometimes we would repeat the exercise many times. On leaving University I no longer performed such exercises, for me Katas have now taken their place. I'm no longer directed by a lecturer, now I'm in control.

Being in control means that I have to pick what to practice. Sometimes I do so blindly, for example I might pick a Kata I haven't tried before and don't know on what the Kata will force me to concentrate. Generally when I select a Kata I tend to start by thinking about something I want too improve, be it something technical like writing loops, or something softer like taking advantage of certain shortcuts in the IDE. Once I know what it is I want to practice I think to myself, you know what "There's a Kata For That" .

Posted in Software Craftsmanship