How to start a Coding Dojo
I recently attended the XP Days Ukraine conference in a rainy, but beautiful and Christmas-decorated Kiev. I conducted a coding dojo and gave a talk where I demonstrated pair programming live together with Dima Mindra. After the talk, I got a few questions about how to run a Coding Dojo.
This article is meant as a guide to anyone wanting to start up a Coding Dojo, whether it’s in Kiev (Mikail/Aleksey), in Odessa (I’m looking at you, Dima!) or anywhere else in the world.
A Coding Dojo is a place to learn and have fun while programming
Quite simply, a Dojo is a gathering of programmers who come together to have fun and learn while programming. It’s always hands-on and it’s always social. In Oslo there are about 300 people who have signed up their interest. We meet on average once per month, usually in a bar. There is anywhere from 5 to 25 people who attend any given meeting.
Alternatively, a Coding Dojo can be used to describe a single event for a company or team that wants to train their developers in a hands-on and engaging way.
Coding Dojo Style #1: Many programmers, one problem
In the martial art Aikido, “Randori” means that multiple people are attacking the same person. In the Coding Dojo, “Randori” means that multiple programmers are attacking the same problem. In order to organize a randori-style dojo, you need a computer with a development environment, a projector, a place to meet, a facilitator and 4-10 programmers who attend. Here is one way to carry out a Randori Style Coding Dojo:
- If the group is new to test-driven development, the facilitator demonstrates the red-green-refactor cycle with a simple example (no more than 10 minutes)
- The facilitator introduces the programming problem (kata) to solve. The Prime Factors kata is a good first kata for a group
- The faciliator invites a partner to join him at the keyboard. The facilitator writes a first test, makes sure it runs red and invites someone else from the group to take his place.
- Each pair works on the problem for 5-10 minutes, the facilitator then makes sure that one person in the pair is switched out with someone in the audience.
- After about 45-60 minutes of working on the problem, call a break and review what’s happened. Personally, I’ve had success with asking everyone to name one thing that they learned, one thing that surprised them, and one thing they want to change about the way they work.
- After the review, the group can work on another kata (problem), try the same problem again or use another exercise form
The biggest barrier for most people to participate in a Coding Dojo is that most programmers have never programmed live in front of anyone else. This feels extremely awkward and vulnerable at first. As a facilitator, your most important job is to help everyone feel at ease at whatever level they are.
Coding Dojo Style #2: Pairs working in parallel
Some people report that a Randori-style dojo can feel slow and constrained. As an alternative, I sometimes use the CyberDojo software, created by Jon Jagger. For a CyberDojo style dojo, you need a place to meet, a computer with a projector and internet access, a facilitator and 6-30 programmers with their own laptops with a web-browser and internet access. Here is how I usually carry out a CyberDojo style Coding Dojo:
- The group forms pairs of programmers
- The facilitator sets up a CyberDojo on http://cyber-dojo.com. (It may be smart to send a quick tweet to Jon to make sure he’s not planning to restart the server at this time)
- All the pairs work in the fashion the group has agreed to work for 30-60 minutes
- After the coding session, the facilitator uses the CyberDojo dashboard as a focus for discussions of programming habits
If you’re thinking about facilitating a Cyber Dojo, just go to http://cyber-dojo.com, try creating a dojo and solve a kata. You can do this on your own now!
Coding Dojo Style #3: Working under stress
Extreme startup is a workshop based around a server that will ask questions of the software running on the computer of each participating pair. As the pairs answer questions correctly, they are awarded points. I usually run an Extreme Startup session after having run a strict TDD Coding Dojo. In the Extreme Startup, teams can work any way they want. The Extreme Startup software is developed by Matt Wynne and Richard Chatley. There are several forks, including mine, which tries to maximize the stress. In order to run an Extreme Startup workshop, you need a place to meet, a computer with a projector and the Extreme Startup software, a facilitator and 6-30 programmers with their own laptops with a development environment of their choice. All the computers need to be on a shared network so they can communicate using TCP/IP.
- The group form pairs. If someone wants to work solo, or in bigger groups, that is okay, too
- The facilitator starts the Extreme Startup software in warmup mode
- The facilitator demonstrates how to get started (I use this collection of starting points in a number of languages)
- The teams work for around 30 minutes until (almost) everybody have been able to get a web server running and registered on their computer
- The facilitator starts the Extreme Startup software in real mode
- All the teams reregister their servers. All hell breaks lose as they try to implement the questions as fast as they can
- After the teams have worked for another 60 minutes, the facilitator breaks off the competition. Ask the teams on the top to describe how they worked
If you’re thinking about facilitating an Extreme startup, download my or Richard Chatley’s version of the software to your computer. The README file explains how to get it running. Then download Steria’s collection of starting point to your computer. Use the ruby/sinatra_for_dummies starting point to create a solution. Let me know of your experiences when trying out the software, so I can improve the README. You can do this by yourself now!
Start a coding dojo
A coding dojo is a great way to build your professional network, become a better programmer, and to have fun! I hope this article can help you get started.
Comments:
Johannes Brodwall - Jan 27, 2012
This is really awesome! Thanks for posting the pictures Mikalai.
It looks like you’re doing the CyberDojo + Extreme Startup combo. Very cool.
Dmitry Lebedev - Jun 6, 2012
We’ve tried print_diamond kata, and hadn’t finished it during 2 hours. 1. Few guys noticed that we were doing not an optimal solution and proposed to go with radius solution.
In that case, may we give them the task by pieces? First, say, just to draw diagonal with *, next - four diagonals, then - change * to a char?
- There were a lot of discussions during coding, and it was a big distraction for guys at the keyboard.Â
What are the ground rules for CD could be? No talking if you’re not at the keyboard? Who has a right to discuss the solution? What if someone disagree with what pair at the PC is doing?Â
Johannes Brodwall - Jun 6, 2012
- Print Diamond, like most katas, often ends up taking much longer than you’d think it should. Don’t worry about getting done with a kata or not.
I do like your idea of giving the task by pieces. The “*” is certainly a simplifying variation. How about discussing with the groups what changes could be made to make the problem simpler?
- Especially a Randori style coding dojo can lead to people discussing a lot. I think many discussions can be useful, especially the first part of a discussion. What I’m trying to improve on myself is to find the time when you can say “let’s progress the way the driver wants to for now, and then we can revisit this discussion when we know more.”
With a Randori style coding dojo, I try to keep the groups no bigger than 8 people. I find that the bigger the group, the more they get distracted by discussions.
Mikalai Alimenkou - Jan 26, 2012
We had our first Coding Dojo session in Kiev 2 days ago. It was a lot of fun and useful experience. Thanks a lot for your efforts on spreading this technique around the world! Great job!
Here are photos from our session:Â https://plus.google.com/photos/101872120608370075262/albums/5701664543281375137?banner=pwa.
[Arkadi Shishlov] - Aug 2, 2012
The link to Bodil Stokke’s collection of starting point is 404.
Johannes Brodwall - Aug 9, 2012
Thank you for letting me know, Arkadi. We have moved the starting points. The link is now corrected.