What is Coding Dojo?A Coding Dojo is a meetingwhere a bunch of coders get togetherto work on a programming challenge. It is a gathering of programmers who come together to have fun and learn while coding.
Formats of Coding DojosFormats: ● Randori ● Prepared Kata ● Working in Pairs ● Invent your own style!
RandoriIn brief:● The facilitator introduces the programming kata to solve.● The facilitator invites a partner to join him at the keyboard. The facilitator writes a first test, makes sure it runs red and invites someone else from the group to take his place.● Each pair works on the problem for 5-10 minutes, the facilitator then makes sure that one person in the pair is switched out with someone in the audience.● After about 45-60 minutes of working on the problem, call a break and review what’s happened.● After the review, the group can work on another kata, try the same problem again or use another exercise form.
Prepared KataIn brief:● The other name — Parisian● Focuses on coding in front of others, most often something from scratch, in a very short amount of time (1 to 1.5 hours).● A presenter shows how to solve the challenge from scratch, using TDD and BabySteps.● While the presenter creates their code he is constantly speaking to the audience letting them know exactly what they are doing and why.● Any member of the audience is allowed to interrupt the presenter and ask them why they are coding in a certain pattern.
Working in PairsIn brief:● The group forms pairs of programmers.● Pairs can choose their own programming language and environment to craft a solution in.● All the pairs work in the fashion the group has agreed to work for 30-60 minutes or more.● After the coding session the pairs perform a short presentation on their code base, showing the progress and design they have made.● Re-mixing of pairs or of pairs members can be applied so every person will work with other pairs code or programming language.
RolesWe suggest to use following roles:● Pair● Sensei● Moderator
PairPair of two working and talking at the PC inorder to complete the Kata.Pair consists of a person who produces thecode — pilot, and a person who talks —navigator.
PairResponsibilities:● The pilot produces code.● The navigator helps the pilot to understand what has been done during previous iterations and what the pair should do now.● The navigator tells what the pair should do now.
SenseiA person who interferes and facilitates theKata by helping with advice when the pair isstuck or arguing without any progress in code.Must not speak in any other case.Responsible to facilitate attendees to producecode according to Working Agreements (WA)and the goal of the Kata.
SenseiResponsibilities:● Introduces a programming language, framework or IDE before the beginning.● Introduces a Kata.● Performs in the first iteration as a navigator.● Working code by the end of the iteration.● Some progress on fulfilling the Kata during the iteration.● ‘Green’ tests by the end of the iteration, otherwise the next iteration begins from making tests ‘green’.● Tests are written during the iteration.● Tests are good and don’t repeat the code itself just to pass.● No long discussions without the code.
ModeratorResponsibilities:● Helps attendees to form Working Agreements.● Facilitates attendees to obey the principles.● Controls the time-boxing.● Can make a break in case he or she observes some kind of misunderstanding or discomfort and ask questions in order to find out and remove any impediments.● Conducts the retrospective.
PrinciplesLets talk about the following things:● Working on Kata● Timeboxing● Switching● Respect
The Main RuleAt the Dojoone cant discuss a form without code,and one cant show code without tests.
Working on KataAt the Dojo one cant discuss a form withoutcode, and one cant show code without tests.So the person which is not on the stage cangive an idea, but can not fall into discussionwith the pair.If he or she wants to implement the ideamentioned, he or she can enter the pair at thenext iteration.
TimeboxingPair works during a fixed period of time.It can be any period of time which attendeeshave agreed to use. It can vary between 5 and15 minutes.The 10 min period seems to be optimal,because it’s enough time to briefly discussthe algorithm and to implement it.
SwitchingThe person who enters into the codingtimebox begins to act as a pilot.The person who was the pilot during theprevious iteration switches his position to thenavigator, the one who talks.The first iteration begins with the Sensei inthe position of the navigator.
SwitchingThe switching may be ordered so each of theattendees will participate, or the orderedswitching can be interrupted if an attendeewants to implement his or her idea right now.The switching principle should be definedwithin the Dojo’s Working Agreements.
RespectAttendees of the Coding Dojo respect eachother and their willingness to learn so that:● Ring tones of mobile phones are off; a person can answer a call, but he or she must leave the room to answer it.● Only the pair at the PC can talk loud.● All discussions away from the PC must be made in the way not to spoil the pair’s deep diving into the Kata.● Sensei can interfere and talk loud by his/her own decision.
RespectAttendees of the Coding Dojo respect eachother and their willingness to learn so that:● If a person wants to ask or suggest something to the pair, he or she should raise the hand and wait for the moderator to allow him or her to talk.● Only one person from the observers can talk at a time.● It’s the pair who must decide how to proceed after receiving an advise or hint from an observer.
PrerequisitesIn order to succeed you should think about:● Hardware● Software● Kata● Working agreements● Snacks and drinks
HardwareMinimum setup:● PC where the Kata should be solved.● Big screen and the projector to show the same picture that is on the PC screen.● Whiteboard or flip chart to pinpoint the Kata rules and working agreements attendees agreed to obey.
HardwareRecommended setup:● PC where the Kata should be solved.● 104-key keyboard so the pilot will not be distracted from coding with unfamiliar keyboard.● Big external monitor for the PC.● Big screen and the projector to show the same picture that is on the PC screen.● Whiteboard or flip chart to pinpoint the Kata rules and working agreements attendees agreed to obey.● Whiteboard or flip chart for the working pair to share their thoughts.Additionally it’ll be great to have a Wi-Fi network and enough seats andpower outlets available for all attendees.
SoftwareIntroduction into the tools that will be usedshould be made beforehand, so that anyattendee has a sufficient amount ofknowledge to participate in the Dojo:● Programming language — links to the language reference printed or opened in the browser on PC.● Framework — links to the framework reference printed or opened in the browser on PC.● IDE — printed version of most used keyboard shortcuts to make the work comfortable.
KataThe task that should be solved during theCoding Dojo.Must be prepared beforehand, but presentedby the Sensei just before the beginning of theDojo, but not earlier.
Working agreementsBefore the start the attendees with the helpof moderator have to decide what set of rulesto obey during the Coding Dojo.
Working agreementsExample:● Length of the timebox.● Application of unit tests.● Application of test-first approach.● Switching: by person’s will or by some order.● Sensei can change the Kata during the Dojo by adding additional tasks to complete, or he can not change the Kata.● Sensei can ask the pair to leave the PC before the time ends, or he cant.● …
Snacks and drinksAttendees are responsible to bring and sharesome food and drinks.
Tips & TricksUse them as you like:● Time-box can be visualized by a hourglass.● The moderator can allow a person to talk by using ‘The Magic Wand’. A fairy wand suits well.● When smelly code is detected the Sensei can wear a gas mask or signal the working pair about this fact in other way.● You can use any kind of the task as a Kata. For example, an open issue/bug from an OSS project can be used as a Kata. However, using the classic Katas considered to be better to the audience unfamiliar with the Coding Dojo.
Tips & TricksUse them as you like:● In order to return to the code previously deleted or changed by the other pair faster, the well-known version control system like Subversion or Git can be used.● Each iteration should be committed into some VCS so the flow of fulfilling the Kata can be tracked and analyzed in the past.● The code can be commented or a file with thoughts to be developed next can be used (ReadMe Driven Development) in order to share thoughts of the current pair to the next one.
Further Reading● Coding Dojo● Code Kata by Dave Thomas● The Coding Dojo by Joe Wright● How to start a Coding Dojo by Johannes Brodwall● Real time coding competition with Extreme Startup by Johannes Brodwall● Cyber-Dojo by Jon Jagger● We Need Realistic Coding Dojos by Zsolt Fabók
CreditsClipart for illustrations is taken from openclipart.org
Contacts Vladimir Tarasow About: http://about.me/netrat E-mail: email@example.com
This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/3.0/.