About the Book
Please note that there is also a print version of this book available for purchase, for example on lulu.
As a professional programmer, how do you learn new skills like Test Driven Development? Pair Programming? Design principles?
Do you work on a team where not everyone is enthusiastic about good design and writing automated tests? How can you promote good practices amongst your colleagues?
I've worked as a programmer for many years, and these kinds of questions have come up again and again. This handbook is a collection of concrete ideas for how you can get started with a coding dojo where you (and your team) can focus on improving your practical coding skills. In my experience, it’s a fun and rewarding activity for any bunch of coders.
Learning new skills inevitably takes time and involves making mistakes. In your daily work environment where the focus is on delivering working production code, it can be hard to justify experimenting with new techniques or to persuade others to try them. When I attended my first "Coding Dojo" with Laurent Bossavit and Emmanuel Gaillot in 2005, I could see these kinds of meetings could be a fun way to effect change.
When you step into the coding dojo, you leave your daily coding environment, with all the associated complexities and problems, and enter a safe environment where you can try stuff out, make mistakes and learn with others. It's a breathing space where the focus is not on delivering solutions, but rather on being aware of what you actually do when you produce code, and how to improve that process. The benefits multiply if you can arrange to bring your whole team with you into the dojo. Through discussion and practicing on exercises, you can make a lasting impact on the way you work together.
Following the dojo I attended in 2005, I brought Laurent to my (then) workplace to show us all how it was done, and from there I began to facilitate coding dojos in various other settings. I've done them with my immediate colleagues, user groups, at conferences, and and more recently as a paid consultant brought in to do training with teams. Inspired by Corey Haines, I've also led "Code Retreat" days, which is a kind of scaled up coding dojo. All these events have been good fun - coders enjoy coding! We've had excellent discussions, learnt from each other, and written a significant amount of clean code and tests. It seems to me that acquiring skills like TDD, Refactoring and pair programming is a long process - it takes years - and it is a lot more fun and rewarding if you can get a like minded group of people to join you on that journey.
This handbook is a collection of practical advice drawn from my experience, with concrete ideas for how you can get started with your own coding dojo. There is a catalogue of "Kata" coding exercises that you can try, and advice about how to choose one for your particular situation. There are many useful resources on the internet which you can use to augment your dojo, and some are reviewed here.
Kent Beck once said "I'm not a great programmer, I'm just a good programmer with great habits" . What are you doing to improve your coding habits? This is the book with the advice and encouragement you need: get together with some like minded people and hold a coding dojo! It's fun!
 page 97 of "Refactoring" by Martin Fowler
Table of Contents
- How to Read This Book
- What is a Coding Dojo?
Section 1: Collaborative Games for Programmers
- Randori Variants
- Prepared Kata
- Code Retreat
- Playing with Constraints
- Tools for the Dojo
- Using Production code in the dojo
Section 2: Organizing a Coding Dojo
- Dojo Theory
- Finding Or Founding A Coding Dojo
- What happens at a Coding Dojo?
- Facilitating A Dojo meeting
- Handling Critical Voices
Section 3: Teaching & Learning In the Dojo
- Dojo Principles
- Using Code Katas to learn TDD
- TDD in terms of States and Moves
- Principles for Agile Automated Test Design
Section 4: Kata Catalogue
- Kata: Args
- Kata: Bank OCR
- Kata: Bowling Game
- Kata: FizzBuzz
- Kata: Game Of Life
- Kata: Gilded Rose
- Kata: Leap Years
- Kata: Medicine Clash
- Kata: Minesweeper
- Kata: Monty Hall
- Kata: Phone Numbers
- Kata: Poker Hands
- Kata: Potter
- Kata: Prime Factors
- Four Katas on a Racing-Car Theme
- Kata: Reversi
- Kata: Roman Numerals
- Kata: String Calculator
- Kata: Tennis
- Kata: Train Reservation
- Kata: Trivia
- Kata: Yatzy
- Further Reading