This is transcript of the podcast, download it here.

Hello and welcome to the fifth episode of the Agile Podcast. I’m André Faria, your host.

Today’s topic is Coding Dojos. The first time I went to a coding dojo session, was in the University of Sao Paulo down here in Brazil. Since that day I have been learning a lot in coding dojos, I even started one at my company. It’s one of the best tools to help programmers to improve their skills I have ever seen.

Photo by Esther Gibbons

Photo by Esther Gibbons

Programming is a learned skill. To be a master programmer you must practice! In this sense it is very similar to learning to play a musical instrument or a martial art. In order to became a master programmer, you have to take time to hone your skills, says professor Gary Pollice, of the Worcester Polytechnic Institute. A coding dojo is an extraordinary tool to achieve this master level.

A coding dojo is a coding session centered around a programming challenge. The challenge is small in scope and often based in Dave Thomas’ idea of Coding Kata.

A code kata is a small exercise to improve your programming skills by challenging your abilities and encouraging you to find multiple approaches. This give you the opportunity to play with code without fearing any consequences, and also discover and learn new methods, areas, algorithms, languages, libraries, etc.

Dave Thomas and others have published several different katas that you can try to solve. Danilo Sato wrote a post in his blog listing a lot of good sources of problems for coding dojos. Look at the references at the agile podcast website to find more information.

There are two main styles of Coding Dojos. One of them is also called Kata, and the other Randori.

In the Kata, someone presents a rehearsed choreography of developing a solution for a given problem. During the session, the group comments on the design and coding style and suggests changes to improve the solution.

The Randori is an exploratory form of a Kata where the whole group participates in carrying out an improvised choreography rather than following a rehearsed sequence of steps. Each member of the group takes a turn at the keyboard, adding to the code.

The Rules of a Randori dojo session may be different from one dojo  group to another, but it generally follows these main guidelines:

  • The coding challenge and the programming language is chosen and announced beforehand.
  • There is a room with one computer attached to video screen.
  • The presenter explains the coding challenge and starts the Randori with a pair from audience.
  • One half of the pair is changed every 5 or 7 minutes.
  • The pair on the keyboard should continuously explain what they are doing.
  • The pair on the keyboard should stop when someone from the audience doesn’t understand something and continues when everybody is back on track again.
  • The audience should give comments on design only when there is green bar, in others words, when the test is passing. (During red bar audience can only ask questions)
  • The code should be always well refactored before starting to write new code
  • The pair will use TDD
  • The programming language to be used is announced in advance per session.
  • The presenter acts as a product owner

I hope I have gotten the ideia. I really encourage you to try to find a dojo group in your city and participate, and if there is not one yet, why don’t you create one? Maybe your can start with team…

You can find a list of coding dojos around the world at the website.

I would like to thank my friends Mary and Hugo who presented the coding dojo to me, and also to the fellows from a company in Brasilia called Sea Tecnologia, those guys use coding dojos even to find new people to work with them, and indeed they already hired good people that they met at dojos sessions.

Well, that’s all for today. Thank you very much for listen, and please post your comments, questions and feedback at the agile podcast website. Let me know what you think. I’m André Faria, great to have you listening. I’ll talk too you again next week.