Coding Dojos are meeting places where developers can go to practice coding together and improve their development skills in a relaxed and enjoyable setting. Emily Bache and others have started to document dojos on a wiki where the public can go to get started.
Dave Thomas introduced the code kata and documented twenty one different katas that can be used to hone our programming skills. His reasoning behind this approach to learning was:
How do you get to be a great musician? It helps to know the theory, and to understand the mechanics of your instrument. It helps to have talent. But ultimately, greatness comes practicing; applying the theory over and over again, using feedback to get better every time.
How do you get to be an All-Star sports person? Obviously fitness and talent help. But the great athletes spend hours and hours every day, practicing.
But in the software industry we take developers trained in the theory and throw them straight in to the deep-end, working on a project. It’s like taking a group of fit kids and telling them that they have four quarters to beat the Redskins (hey, we manage by objectives, right?). In software we do our practicing on the job, and that’s why we make mistakes on the job. We need to find ways of splitting the practice from the profession. We need practice sessions.
Coding dojos are places where groups of people come together to practice katas together. When InfoQ asked Emily Bache about the intended audience for a coding dojo she responded:
I think anyone who wants to improve their coding skills, particularly in the area of Test Driven Development, should consider going along to one. The idea is not really new, there have been user groups and study circles meeting to share experience for years, and this is really a new angle on the same idea. I was a member of a group studying design patterns a few years ago, and the dojo is really a new brandname for an old idea. A bunch of people who all want to improve their skills, learn from one another, and have fun doing it.The premise behind this technique is that deliberate practice, not pure talent, creates expertise. By going over the same small problems again and again you find yourself having small 'aha!' moments that further your design and coding ability. As Uncle Bob put it after attending a presentation by Laurent Bossavit on coding dojo:
Now I have been doing one particular Kata for several years now. I've done it hundreds of times. I do it at conferences, customers sites, trade shows, etc. It's the BowlingGame. I've done this so many times I can do it in my sleep. The funny thing about it is, though, that I still make tiny little improvements. This doesn't happen very often anymore, and the improvements are not significant; but they are there.So, coding katas can be performed individually or in groups to hone our development skills. Coding dojos are places where developers meet in a fun and relaxing environment to practice together. And all of this requires that we take extra time, after our 9-to-5 to improve our development skills.