dojo, kata or randori?
What flavour of session shall we have today?
In the agile community we like to share ideas and learn from each others sessions. In addition we borrow ideas from other communities. These three names (dojo, kata & randori) are borrowed from the martial arts world in an attempt to encourage programmers to practice.
The idea of practicing coding it quite unusual in the traditional sense, not least if programming is considered to be a solitary activity. People tend to think of years of experience as being all important. These types of sessions are intended to develop a group learning dynamic where all members leave the session having learnt something.
Dojo sessions can be run in one of a number of ways.
- Choreographed session with leaders talking through decisions.
- Interactive sessions, a pair start to solve a problem, every 5 to 10 minutes one member of the pair is exchanged. Sometimes known as randori.
I am not a big fan of choreographed sessions. While there is value in demonstration I prefer this as an introduction to the session rather that a session in itself. I have felt somewhat detached from the decisions being made in the past.
The agile north sessions that I have been involved in have been in the randori style. We used the dojo to allow people to try TDD. To enhance the involvement of the audience they were asked to supplement the role of the second member of the pair by suggesting tests. The rational behind which test to do next was (for me) the most important output from the session.
Dave Thomas has been instrumental in publicising the benefits of coding katas. A kata is a small task that can be used by an individual to practice his craft. Through repetition one can achieve new insights even with a well known problem. My personal favourite is implementing the model behind Conway’s game of life.
Of course a kata is a good candidate for use in either type of session. However, for me there is an important extra aspect that shouldn’t be forgotten. After a kata, be it group or individual time must be set aside for reflection. During this retrospective we must take time to think about
- What did we do well?
- What did we learn?
- What would we do differently next time?
- What still puzzles us?