Karate Kick

At the Chicago Code Camp this last month (May 30th) I got to see a great presentation by Micah Martin (@slagyr) entitled “Ruby Kata and Sparring”. Micah’s presentation was in a very “Zen” style and the majority of his talk was about the importance of practicing your coding skills. He talked about how we can learn from two common types of training that are used in the various martial arts:

  • Kata – detailed choreographed patterns of movements practiced either solo or in pairs…most commonly known for the presence in the martial arts

  • Sparring – relatively ‘free-form’ fighting, with enough rules, customs, or agreements to make injuries unlikely

After he introduced the concept of Kata, he showed us a demonstration using a well known exercise called Langston’s Ant. Micah bowed to the audience (as is typical in Kata) and proceeded to “live code” his implementation from scratch and ended with another bow to the audience (also typical). The Langston’s Ant has no perfect solution, so he then asked the audience to rate his code and to give him feedback on how to improve his implementation.

One of the things that struck me was how Micah answered the question “It seems like you are very practiced in writing this solution, how many times have you done this?”. Micah told us that he had done the solution more than 50 times. He did point out that he had not done the same implementation 50 times (as if he were practicing giving a Langston’s Ant demonstration), but had evolved his implementation over the course of his Kata sessions. His 50th solution was “better” than the first solution as he had refined it; just like your technique should get better as you practice your martial arts.


I personally need to get a coding workout. I am an evangelist for Microsoft, but that actually involves a lot less coding time than most people would think (the amount of time varies from individual to individual, some of my colleagues code a lot more than others). A field evangelist for Microsoft is typically a technology generalist, having to cover a real breadth of technologies. As you may know, Microsoft has a lot of technologies, so we spend a fair amount of time immersed in learning new things and not necessarily practicing our coding skills.

Over the course of the summer, I intend to get a coding workout; knock the rust off or sharpen the saw as it were. I am going to practice a coding exercise every week (unless I take a week off for vacation; which I would totally unplug for). To keep myself honest, I am going to post something about each workout up on the blog, even if it is to admit a FAIL. Look for the first post next week: Coding Workout: A twitter badge using jQuery.

Note: I have been on an un-planned blogging hiatus for the last 2+ months. It is not that I have not had things I have wanted to say, but have just been short of time to say them. For those of you who have stuck around (kept me in your RSS reader or checked the site for updates), I thank you for your patience. I did want to write a “Sorry for not blogging” post (I hate those – just start blogging!).