InfoQ

News

Software Katas - Practice in Public Makes Perfect

Posted by Cory Foy on Nov 26, 2009

Community
Agile
Topics
Training / Certification ,
Agile Techniques ,
Design
Tags
Kata ,
Craftsmanship

Many thought leaders in the agile community have started talking more about software katas - a way of practicing specific exercises until one has them memorized. Over the past several weeks, there has been an increase in blog posts and sites devoted to katas. Robert Martin has gone as far as calling them "performance art". Should you add katas to your software toolkit?

Nearly 2 years ago, InfoQ ran an interview with "Pragmatic" Dave Thomas on a wide-range of topics - including Katas. Katas are a focused form of practice that are meant to be memorized. Each Kata tackles the solution to a specific problem. For example: Keeping track of the scores in a bowling game, Converting Numbers to LCD format, and Finding Prime Factors.

Early last week, Uncle Bob blogged about katas in a post entitled What's all this nonsense about Katas?. And in mid-October Corey Haines and others in the Software Craftsmanship community launched katas.softwarecraftsmanship.org a site where they are posting Screencasts of various katas each week.

Taking it one step further, Uncle Bob has posted his latest Kata in which he builds a solution to finding Prime Factors, set to a set of songs called the Flower Duet. In his article, he likens Programming to performance art, saying:

Indeed, it is a beautiful thing to watch a skilled and well practiced martial artist peform a kata. And that started me thinking. Why would a martial artist practice these forms so intensely that they could be performed as an art?

Later he goes on to say:

When you watch a skilled martial artist perform, you know you don’t want to fight him. The performance is a demonstration, and a realization, of mastery.

And yet ... no martial artist practices his art so that they can perform on stage. A martial artist practices to achieve personal perfection in the art of self defense. The fact that the practice can be performed is a (pleasant) side effect.

In what ways do you practice your coding skills? Have you created Katas or other Screencasts detailing the way you work? Do you have favorite sites or katas you use? Let us know with a comment below!

(Thanks to Cory Foy for filling in with this item during Deborah Preuss' European XPDays tour)

Related Sponsor

VersionOne is recognized by Agile practitioners as the leader in Agile project management tools. Companies such as Adobe, BBC, CNN, Dow, HP, IBM, Sony and 3M have turned to VersionOne to help deliver greater value to their customers.

I enjoyed this post by Harry Chou Posted Nov 26, 2009 9:41 PM
Along with Kata's... by Mark Levison Posted Nov 27, 2009 9:00 AM
interesting angle... by Stephan Behn Posted Nov 30, 2009 2:52 AM
Re: interesting angle... by Deborah Hartmann Posted Dec 1, 2009 4:48 AM
Re: interesting angle... by Deborah Hartmann Posted Dec 1, 2009 4:49 AM
Re: interesting angle... by Mark Levison Posted Dec 4, 2009 10:33 AM
  1. Back to top

    I enjoyed this post

    Nov 26, 2009 9:41 PM by Harry Chou

    I really like this post. I am not a Ruby programmer, but the cast for finding prime factors are quite a performance and a demonstration of Ruby (and MacBook Pro)'s power. I am totally hooked. I just finished the KataPotter using C#. It is really very rewarding experience. Thanks.

  2. Back to top

    Along with Kata's...

    Nov 27, 2009 9:00 AM by Mark Levison

    ...I've been using Coding Dojo's as a way for a group to work together and improve the group understanding of a tool eg TDD: www.notesfromatooluser.com/2008/10/tdd-randori-... and www.notesfromatooluser.com/2008/10/tdd-randori-...

    Cheers
    Mark
    The Agile Consortium

  3. Back to top

    interesting angle...

    Nov 30, 2009 2:52 AM by Stephan Behn

    Is there a hidden camera in my room? *g*
    - I just put my own try on katas (codingkata.org) online.

    While it's still under heavy construction (I don't even have 1 kata yet ;-) I hope it will be a great place for other programmers to improve their programming skills. -The things I want to do differently are a) give the student immediate feedback by providing a complete kata setup via maven, b) building some katas with graphical illustration of the problems to increase the fun factor and c) sharing the various solutions online for others to read, learn and criticize. But that's still a long way to go :-)

    Anyway, thanks a lot for pointing out the current discussion around katas - so I can keep that in mind while building up my site. The concept with constant practicing of one kata is quite interesting!

  4. Back to top

    Re: interesting angle...

    Dec 1, 2009 4:48 AM by Deborah Hartmann

    The concept with constant practicing of one kata is quite interesting!<blockuote></blockuote>
    I believe this is the most essential concept in "kata". Continual repetition: each time similar, but different because you are now different :-)

  5. Back to top

    Re: interesting angle...

    Dec 1, 2009 4:49 AM by Deborah Hartmann

    The concept with constant practicing of one kata is quite interesting!

    I believe this is the most essential concept in "kata". Continual repetition: each time similar, but different because you are now different :-)
    (that's better , lol)

  6. Back to top

    Re: interesting angle...

    Dec 4, 2009 10:33 AM by Mark Levison

    This is basically the same point as in martial arts where Kata's come from. We practice them time after time after time to perfect the movements. 4 yrs of Kata has improved my blocks to the point where they often happen instinctively while sparring.

    Cheers
    Mark Levison
    The Agile Consortium

Educational Content

Brian Marick on 4 Challenges and 5 Guiding Values of Agile Software Development

Brian Marick takes us through a quick tour of the most important values and challenges to adopting Agile successfully (they aren't the typical challenges and values we hear in the community).

Are You a Software Architect?

The line between development and architecture is tricky. Does it exist at all? Is an ivory tower actually needed? There's a balance in the middle, but how do you move from developer to architect?

Agile – A Way of Life and Pragmatic Use of Authority

The word 'authority' sometimes produces an allergic response in hard-line agilists. Freedom and authority – both are bad if misused and both are good if used in right spirit for a noble cause.

Getting Started with Grails, Second Edition

"Getting Started with Grails" brings you up to speed on this modern web framework. Companies as varied as LinkedIn, Wired, and Taco Bell are all using Grails. Are you ready to get started as well?

Using ITIL V3 as a Foundation for SOA Governance

Those familiar with only ITIL V2 often scoff at the thought that ITIL could serve as a governance framework for SOA. With ITIL V3, the focus of the framework shifted towards service-orientation.

Adrian Colyer on AspectJ, tc Server and dm Server

SpringSource CTO Adrian Colyer discusses AspectJ, SpringSource's dm Server and tc Server products, OSGi and Scrum.

Adam Wiggins on Heroku

Heroku's Adam Wiggins talks about Rails, Background Jobs, Add-Ons, Ruby, and how Heroku manages to work around Ruby's inefficiencies using Erlang and other languages.

SOA as an Architectural Pattern: Best Practices in Software Architecture

For Grady Booch the foundation of a good architecture is patterns, SOA being just one of many patterns. In this Second Life presentation, Booch attempts to bring more clarity on what architecture is.