Coding Kata, Life Kata

Kata: a sequence of formalized and codified movements arising from a state of mind that is oriented toward the realization of the way.

Kenji Tokitsu, The Katas: The Meaning behind the Movements

Perhaps you have seen a kata, maybe even performed kata. I first encountered kata when I was taking karate lessons in 6th grade. I would learn the movements of the kata at the dojo and then go home and practice them over and over in my back yard. There was lots of kicking and punching and yelling (Ki-YAH!). Bruce Lee would have been proud. The neighbors thought I was cute. The dogs thought I was nuts.

I thought kata were cool because you could do them over and over again and see improvement. You could slow them down or speed them up. You could express yourself with grace or with violence. You could add subtle movements that would add expression and uniqueness to each move. Perhaps most importantly, I felt competent – which was a feeling that was honestly hard to come by as a 12 year old boy.

After a while, my fancy moved on to other things. There were plenty of distractions at that age: science fiction, Dungeons and Dragons, piano lessons, girls, all the usual geekery. But the Kata still left an impression on me. Years later I studied the things that make up deliberate practice. In examining what made up good practice I saw many things that reminded me of kata:

  • It’s designed specifically to improve performance
  • It can be repeated a lot
  • Feedback on results is continuously available
  • It’s highly demanding mentally
  • It isn’t much fun

Daniel Coyle, The Talent Code

All of these criteria can be true of kata. I was seeking discipline at the time. I was looking for ways to practice the things that I do professionally, so that I could become the very best at what I do. It’s a journey I’m still on today.

Kata was re-introduced to me a few years ago by folks who were forming the Software Craftsmanship movement. People like Bob Martin and Andy Hunt who were experimenting with something that they called the Coding Kata. Simply put, the coding kata is a way of practicing our programming skills with exercises that can be repeated over and over. If you are interested in some examples, you can find a few here: http://codekata.pragprog.com/2007/01/code_kata_backg.html#more

So it became evident to me that the notion of the kata might be applicable beyond just the martial arts. In fact, the Japanese have known this for centuries. It turns out that within Japanese culture, the kata is applicable to a whole range of different activities. Here are just a few examples:

  • Tea Ceremony
  • Flower Arrangement
  • Miniature Gardens
  • Martial Arts
  • Painting
  • Calligraphy
  • Poetry
  • Archery

And I’m quite sure that this is only the shortest list. It got me to start thinking…Are there katas in my life? What might those katas be? How would I tell if the things I do are katas or not? Here’s a potential list I slapped together of things that might be katas for me:

  • Competitive Weightlifting
  • Coding
  • Sailing (racing)
  • Public Speaking
  • Writing

Are these the kinds of things that one practices? Yes. Are these the kinds of things where there is a desirable pinnacle of excellence, a goal that is relevant and meaningful to me? Yes. These are the things that I practice nearly every day in some form or another. Some examples:

Weightlifting: every competitive lift has a specific “form” that you need to maintain in order to successfully perform the lift without injury. Furthermore, extensive planning goes into the training for each lift. Nothing is too detailed: the number of breaths you take before the lift, where you place your feet, where your eyes rest, where your hands are placed on the bar – no detail is too small. No consideration is insignificant – not when your goal is to be the best.

Coding: Like any craftsman, I need to become an expert at using my tools. I need to practice using my IDE/editor to generate code as efficiently as possible. I focus on different aspects of writing the code: speed, form, elegance are all dimensions of coding that can be explored in practice.

Sailboat racing: Each position on the boat depends on a specific skillset that needs to be developed. As a driver, you need intense concentration, as a  grinder, you need brute strength and an awareness of the sail trim, as a bowman, you need to be part gymnast and part cowboy.

So as you can see, kata can be applied not only to solo activities, but also to team activities. The point is that excellence can be achieved with disciplined and deliberate practice.

“Throughout your life advance daily, becoming more skillful than yesterday, more skillful than today. This is neverending.”

Yamamoto Tsunetomo, Hagakure

I imagine that each of us may have a different set of katas if we take the time to look for them. I think of them as the things that we are the most passionate about – the things that we really want to practice, need to practice. They are the things that we have some burning desire to be good at. For some, this combination of practices would be our life kata. The life kata is the sum of the practices that we pursue to give our lives meaning.

One Response to Coding Kata, Life Kata

  1. martial arts styles…

    Coding Kata, Life Kata « Agile Tools…

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: