jeudi 23 février 2012

What is a coding Dojo ?

Taken from http://codingdojo.org/cgi-bin/wiki.pl?WhatIsCodingDojo

A Coding Dojo is a meeting where a bunch of coders get together to work on a programming challenge. They are there have fun and to engage in DeliberatePractice in order to improve their skills.

The ParisDojo focuses on coding in front of others, most often something from scratch, in a very short amount of time (1 to 1.5 hours). They use various languages, various tools, various exercise formats. They consider the outcome of an exercise successful when it is completed within allocated time AND audience can repeat the exercise at home by themselves.

Maybe the CodingDojoPrinciples help to understand what the CodingDojo is about.

Premises

  • Acquiring coding skills should be a continuous process

Characteristics

  • Non-competitive, collaborative, fun environment
  • All skill levels are welcome
  • Safe to try new ideas

Requirements

  • Meeting room with enough seats (typical attendance varies between 5 and 20 ?)
  • At least one PC or laptop
  • A digital projector ('beamer')

Process

  • 2 minutes: decide on date for next session
  • 25-30 minutes: quick retrospective of the previous session; what went well, what was interesting, what was frustrating
  • 10 minutes: decide on a topic for this session 
  • (we call these first three items the "next, prev, this" protocol)
  • 40 minutes or so: code!
  • 5-10 minutes: mid-session break to discuss how things are going 
  • 40 minutes: code some more

Types of Meeting

PreparedKata

  • A presenter shows how to solve the challenge from scratch, using TDD and BabySteps.
  • Someone has done some preparation before the meeting and comes ready to present a full solution to the Kata in question.
  • Set a time limit
  • start from scratch
  • use TDD and BabySteps
  • Each step must be explained so everyone present can follow.
  • People should interrupt only if they don't understand what is going on.
  • Everyone is there to learn including the presenter.

RandoriKata

  • The challenge is solved by the coding pair (driver and copilot).
  • Everyone present is invited to help at. 
  • Each pair has a small (5 or 7 minutes) timebox to advance, using TDD and BabySteps.
  • At the end of the timebox, the driver goes back to the audience, the copilot becomes driver and one of the audience step up to be copilot. 
By some means the group decides on a Kata to work on, perhaps the DojoOrganizer suggests one. No-one need have prepared anything much before the meeting.
  • Some mechanism for regular switching of the driver and copilot is chosen (eg TimeBoxPingPongMicroPairingNTestsShoutLouder, )
  • Two people step up to the keyboard and begin solving the Kata in hand
  • start from scratch
  • use TDD? and BabySteps 
  • remember to switch the pair at the keyboard according to the mechanism chosen
  • Everyone present is expected to follow what is going on, and make helpful suggestions.
  • The pair at the keyboard should explain what they are doing so everyone can follow.
  • The audience should give advice/suggest refactorings At other times the pair at the keyboard may ask not to be interrupted.