The Purpose of Katas

Codemash 2011 has had a Coding Dojo dedicated to Katas.  I don’t recall that last year, but I love it.  While I was there, they were well coordinated also.  Nimble Pros seemed to be organizing things and they kept suggesting people pair up as they walked in and finally coordinated a discussion, swapping out the projector from person to person. 

In and of themselves, the Kata problem is generally not terribly difficult.  We’re talking about Harry Potter and Bowling for crying out loud.  In fact, Uncle Bob goes so far as to say that “a kata is meant to be memorized.”

But the problem is not point of a kata.  Instead, <robe>it’s the journey</robe> that we aspire towards.  Every execution of a kata should start with a goal, an objective.  That goal may be to investigate, understand and adopt another coders decision making process.  Your goal, as it seems for many this week, may be to learn a language or language feature.  Often the objective is to learn a new coding technique. 

Over the past few months, my objectives have often been related to streamlining my tooling techniques.  I’ve used katas to learn Vim and a little Emacs.  I’ve used katas to learn new ReSharper features.  The Vim learning process resulted in much better use of Visual Studio, even installing the VsVim extension which I love. 

Today I used the Greed Kata to practice the Transformation Priority Premise and I was very intruiged by the way my code evolved.  It certainly took me down a path different than that others and the one I would have otherwise have chosen.

So my suggestion to you in an attempt to make your sessions more productive… have a kata goal.