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. Codingdojo.org 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 codingdojo.org.
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.