I have to admit, I am a recent convert to coding dojos. As with all initiates into any group, I might be guilty of religious zealotry but don’t let that colour your opinion of what I have to say.
While at the ACCU 2010 conference I was introduced to a new way to do a coding dojo devised by Jon Jagger and Olve Maudal they call a CyberDojo. What is unique about it is that the actual coding is done via a web application and the participants play a kind of musical chairs.
A typical coding dojo involves breaking up into small groups and each group working on the same problem (usually in a TDD approach) until the end of a session where you have a retrospective and wrapup. In contrast, during a CyberDojo you are changing codebase and partner at every iteration.
“What is an iteration?” I hear you ask. Well, it’s whatever Jon and Olve decide it is. In reality, normally after about ten minutes the organizer rings a bell to signify the end of the iteration. What this means is that everyone should try to get to green (i.e. code compiles and all tests pass) as soon as possible. Once everyone is at green then the musical chairs begin – your partner rotates to the laptop to the right and you inherit the codebase that was being developed on that laptop. The code that you were working on is now inherited by the laptop to your left.
Interesting behaviors emerge
It is interesting to note that this is not a competitive exercise. At any rate It would not be possible to “win” at this game by any measure, since the code and the teams are fluid in the most real sense. This fact was mentioned at the start of the session although it took quite some time for the altruism and communication to emerge.
Some of the more interesting motivations you have when writing you code:
- You want to leave a clean codebase for the next guy.
- You focus to stay close to green at all times.
- You learn to get up and ask other people about their code.
I can honestly say that this was a lot of fun. In fact, I‘d go as far to say that I had a blast! My advice: try it. Download the project from Sourceforge and get a bunch of hackers together for a good old fashioned code-fest. And write up your experiences so others can learn what works and what doesn’t.