Code dojo!

I’ve been wanting to do one for quite a while, but I finally got around to holding our first code dojo. It is where coders get together and engage in deliberate practice in order to improve their skills.

I’d never been to one before, and I wasn’t entirely sure how it would go. For that reason, I held it after work and made it extra, extra optional. Still, a good number of people showed up (as many as would fit in the boardroom), and it seemed to have gone pretty well.

The format I chose was the ‘Randori Kata’ with Timeboxing. Basically, we work on a problem (using Test-Driven Development and Baby Steps) in pairs. After five minutes, someone from the audience replaces one of the pair. People (other than the pair) are only allowed to give suggestions while the tests are passing (green). If they are failing (red), they are only suppose to ask questions if they don’t understand what is going on.

The problem we worked on was (more or less) minesweeper. We were to give the program a description of where the mines were, and it was to label all the spaces as either ‘mine’ or a number representing how many mines were in the area. I picked it because (a.) it looked fun and (b.) it looked simple (I didn’t want to have the first one complicated). As it turns out, it was a lot more complicated that I thought, and we didn’t finish. (I feel a bit better knowing other people doing this same problem had similar experiences).

Like I said, the response seemed good. The main feedback was that there was too much talking/distraction. We came to the consensus that we needed stricter rules enforced more strictly. Other things we noticed were:

  • Pairs weren’t talking enough – one person tended to do all the work at a time. I think this was my fault for not explaining things well enough. It started working better later.
  • Weren’t doing enough baby steps. Weren’t always doing TDD
  • The problem maybe wasn’t well suited for this style of working.
  • People moving around was kind of distracting
  • Line numbers in Eclipse would have helped a lot
  • Need to adjust Eclipse or the projector so highlighting could be seen
  • Not sure how much we used the second projector, though I still think that was wicked cool 🙂
  • Might try to get the unit tests to automatically run
  • Might like to try Extreme OO

I’m calling the experiment a success, given that at the end people were asking when the next one was.

So what do other people think? Any more suggestions for the next one?

For those who wanted them, here is the output:
Source code

As a side note, the slides were done using s5, which is made of awesome.