Sunday, 30 January 2011

Online resources for Coding Dojos

If you're running a coding dojo, or if you're an individual who likes to practice code kata, there are a number of websites which aim to help. In this post I want to review some of what's out there.
The idea of the code kata was originally presented by Dave Thomas in his blog. This is the list of Kata exercises he originally suggested. The dates on the site say 2007 but it must have been at least a couple of years before that*. Some of these katas don't actually involve writing any code, such as kata three. The focus is on general programming skills rather than TDD in particular.
The idea of practicing code kata in a group and calling it a Coder's Dojo was presented by Laurent Bossavit and Emmanual Gaillot at XP2005. is their site for the community, and has some helpful information if you're looking to join or set up a dojo. There is also a catalogue of Kata descriptions. In the past I've personally contributed quite a bit of material to this site, but I've recently become frustrated with the amount of spam on it.
This is an article rather than a whole site, but it gives one of the best summaries of a coding dojo that I've seen on the web.
Corey Haines set up this site in 2009 and his original intention seemed to be to publish a screencast of a kata performance each week. Unfortunately the most recent screencast on the site is from July 2010. There is a lot of good stuff on there to watch, though - notably versions of the StringCalculator kata in almost any programming language you can think of. I really like the idea of screencasts of katas, since for me katas are all about practicing the moves of TDD and becoming expert with your language and editor/IDE. I'm not half as interested in the code you end up with than the route you took to get there. I like that Corey and others comment on the various performances and people learn from watching each other.
As I understand it, Jon Jagger created this tool to help development teams improve their collaboration skills. He's been round several conferences using it as a kind of game for learning about practices such as pair programming, clean code, TDD, and all the people issues related to working in a team. It's a fun activity for a group of programmers to do together, but to get the most out of it I think you need a facilitator who will help you understand what was happening and what there is to learn from it.
This site still claims to be in beta, but there is quite a bit of material already. The philosophy seems to be to try to get people to have fun by playing with code, and also to learn new languages. There's no particular emphasis on TDD. There is a catalogue of katas, and for each one it provides starter projects you can download into your IDE. When you think you're done, it will check your solution for correctness and let you upload the code for public viewing. There doesn't currently seem to be any support for uploading screencasts, or giving people comments and feedback on their solutions.
This site is also quite new, but seems very promising. The aim seems very much to encourage collaboration, feedback, and becoming better at TDD - key elements of a face-to-face coding dojo. It provides tools that analyse your performance of a kata, not at the level of 'does the code work by the end' but at the level of 'what were the moves you made to get there'. Each time you run the tests it records the code before and after, and whether the tests passed or failed. There are tools to let you go through a kata performance, look at the moves made and suggest improvements to the performer.

At present the only language supported is Ruby, but that is a great language for practicing TDD in :-) There is also no catalogue of katas to try - it just points to

What sites have I missed?
There are a number groups holding regular coding dojos in various parts of the world, and many have their own websites. Several of these are also full of helpful information, but they're not quite what I'm after. I'm looking for sites that are addressed to the whole online community. Please write me a comment and point out sites I should know about!

* Laurent and Emmanuel credited Dave Thomas with the idea in 2005 when they presented the coder's dojo, Jeff Attwood credits him in and article dated 2008, and wikipedia says he published code katas before Jan 2006.

Wednesday, 19 January 2011

Launch of my company website

I’m very excited to announce the launch of my company website, at The site has information about the coaching and training I offer, links to this blog, my videos on YouTube, and my twitter feed. My hope is that it gives an indication of my areas of expertise, and what you can expect if I come to work with your development team.

The site was built for me by my friend James Pink, who was very helpful with ideas for site layout and content. He also created my company logo from some sketches I did, and a rather dodgy photo of me hanging my head upside down with one ringlet of hair sticking out. Quite a tricky shot to take by yourself, even if your phone does have two cameras!

The pictures on the site are mostly from conferences - happy memories of good sessions at Agile 2008, XP2009 and XP2010. I’m very grateful to all the photographers for giving me permission to use them. I enjoyed searching through all the conference pictures, these guys really know what they're doing with a camera, and seem to catch just the best moments. The profile shot I’ve been using for a couple of years now was taken by my friend Margaretha Schölin, when we were in China on a business trip together. More happy memories, thanks Maggan :-)

I’d also like to thank the people who agreed to be quoted saying nice things about the work I’ve previously done with them. I’ll return the favour sometime soon, I’m sure.

So now all that remains is to hope that some more companies (preferably those in or near to Göteborg) will notice my site and want to hire me to help them learn agile engineering practices!

Monday, 17 January 2011

Agile Coach Camp Norway

I travelled to Oslo last weekend, to take part in Agile Coach Camp Norway. This was an open space conference organized by some enthusiasts, not for profit. I became interested in going to the conference when I heard some other agile coaches tweeting about it. I’ve just started my career as a kind of agile coach, and I’ve always enjoyed the open space parts of other conferences I’ve attended. I hesitated though, since I have quite a technical focus. What clinched it was when Johannes Brodwall signed up - an excellent programmer who shares my interest in using Code Kata for teaching and learning Test Driven Development.

I was surprised to see Bob Martin in the hotel reception when I arrived - he had come on a whim since he was in Oslo that day. He spent some time on the first evening telling the story of how the agile manifesto came about, and his involvement. He’s an impressive speaker, even when improvising. Bob didn’t stick around for the rest of the conference, and he missed out on some really good discussions.

We began the main part of the conference with a “coaching dojo”, which Rachel Davies invented by analogy with a coding dojo. It was fun practicing coaching one another, and getting feedback from people who are used to giving good feedback. It really set the tone for the whole weekend.

After lunch, we had the open space opening session, and loads of sessions were proposed. I suggested 4, and ended up being very pleased I'd done them. I got some great feedback about a short coding dojo I ran - being coached in my facilitation skills was very valuable for me, and the participants seemed to appreciate learning more about the coding dojo format I use.

It turned out that Johannes and I weren't the only technically-focused people there, and we shared lots of ideas about code katas and teaching TDD. Everyone agreed that success with agile needs developers to change the way they work, and most struggle with TDD. "Parachuting" a trainer in for a couple of days might help developers understand they could work differently, but getting them to actually make changes is much harder. I'm hoping for some success with repeated regular coding dojo sessions with a team. I'll have to report back when I have more experience of actually doing this.

Another highlight was discussing using games for teaching agile, and in particular teaching agile engineering practices. Jon Jagger has his “cyber-dojo” collaborative programming game that he has released open source, and a “Kanban 1’s game” which he uses for teaching teams about limiting work in progress, and keeping work items small. We talked about the fact that many games are released under the creative commons attribution license, and coaches share them with each other. The games in themselves may take time and effort to create, but Jon and many of the other coaches there felt they don’t lose by sharing them, quite the opposite. They get feedback from others and help to improve the games. I wondered if they were worried about losing business to cheaper rivals who just took their materials, but people seemed confident that the skill of the facilitator is so crucial in the success of a game in achieving learning goals for the participants, that they would not lose out.

It was an intense weekend, with a couple of lovely walks in the snow, and good food together with interesting company. I learnt a lot about coaching and made new friends. I’ll be looking out for similar conferences in future :)