First impressions from a coding dojo

I know I’m quite outdated at this post from my first coding dojo (which was last friday), but never is too late.
I had never been at a coding dojo before, so at the start I felt myself kind of noob, on its formula.

What is a coding dojo?
Imagine a coding dojo as a meeting of programmers, where you put to work some of XP practices, like TDD and pair programming to solve any given problem. The main goals of a coding dojo is that you firstly have fun programming and seeing other people programming (the computer output is project to everybody at the dojo session). And also, acquire new skills, such as learning new techniques, languages, tools, frameworks and so on.

Coding Dojo formula
In a coding dojo, people are arranged in a way that 2 persons stays at the computer pairing for a certain amount of time (in our case, 7 minutes). Past this time, there’s a pair switch, where other pair take control from the computer, and also from the code, cotinuing from where the pair before were.
While the pair is working on how to solve the problem, the audience cannot take part on it suggesting ways of solving the problem or also suggesting refactorings to the code, while the tests developed under TDD are not passing (red).
And also the problem to be solved and the programming language to be used are chosen just before the dojo session starts.

The whole scenario
My first coding dojo was also the first coding dojo held at Caelum (where I do work), and like me, there were also some other people who was at a coding dojo for the first time. So for not pushing it too fast, we had chosen a common language (Java) and a really cool problem (How to divide a number represented as String without using the / operator?)

What I’ve learned
It’s interesting when you are in front of a crowd coding, and there’s everybody looking at what you’re doing. I’ve never had experienced that before, and it kind of intimidate myself a little bit at the beggining, but past some time I’ve got used to it, and it flowed pretty good.
Also, I’ve learned how boring it is to pair to someone who is tired, or whose mind is at the moon or mars. It just don’t work.
From the language there was nothing much to learn, because we used pure Java, which I work with everyday. So, nothing new on it.

What I’ve liked
It’s amazing when the crowd is all there looking at the problem and figuring out a way to solve it. Everybody, with the same goal and motivated. The feeling of being there was very intense and how the problem challenged us was also very interesting, and I really appreciated it.
By the way, when a test goes from red to green the feeling is very good.

What I disliked
I’m not sure if dislike is the best word to describe it, but I couldn’t figure out a better one, but I think that 7 minutes wasn’t time enough for a pair to fully participate on the problem. Maybe 10 minutes would be a best try (the ones who were there and also had experiences in a coding dojo said that 7 minutes are ok). Or maybe, It’s just a noob impression :).
By the way, sometimes people talked aloud when the tests where red, this can take away your mind and concentration on the problem. So silence while the tests are red is essential.
We also hadn’t prepared a source control environment (lack of time), so we couldn’t integrate our changes at each pair switch.

Future Coding Dojos
We scheduled to run a coding dojo every friday. With a github repo available, so we can integrate our code at each pair switch.
And now with different languages, so we can learn much more on it. After all, that’s what a coding dojo is about. Learning.