Training · Cross-cuttingMoveprovenverified

Coding Dojo

also known as code kata, code dojo, programming dojo, kata session

Tags: katadojosoftware-craftsmanshippair-programmingdave-thomasbossavit

A Coding Dojo is a recurring group session in which developers practice programming craft on a small, self-contained problem (a kata). The environment is safe: mistakes carry no production consequence. The session is explicitly about the how — the process, design choices, and clean-code habits — not about delivering a feature. Paired with code kata (a solo variant coined by Dave Thomas), the dojo is the social container that makes deliberate coding practice a team habit rather than a private discipline.

How the learner advances

Intent. Build programming craft and shared team norms through recurring, low-stakes group practice on self-contained problems.

When to apply. Apply when a development team has basic competence but inconsistent craft habits, or when the team is learning a new language, paradigm, or design pattern. Run as a regular recurring event (weekly or fortnightly) rather than a one-off workshop. Works best when the problem is deliberately small enough to be solved in one sitting, leaving time for discussion of process.

Threshold — earns the next step. The team can explain not just how they solved the kata but why they made each design choice, and can articulate one craft principle they will carry into production work.

Masterpiece — the artifact that proves it. A team retrospective artifact — written notes, a shared wiki page, or a team charter entry — that records the craft principles the team agreed on across a series of dojo sessions. The masterpiece is collective, not individual.

Facets

  • Containerdojo
  • Modegrouppair-programmingrandoriprepared-kata
  • Reachteam
  • Personadevelopercraftsperson
  • Craft (AI Fluency)delegationdiligence
  • Learnerhuman
  • Trainerhuman

Inputs

  • Kata problemA small, self-contained programming problem with a clear success criterion — neither trivially easy nor so large it cannot be finished in the session. The problem should have multiple valid approaches so design discussion is possible.
  • Development environmentA shared screen or projector setup where one pair codes while others observe, or individual workstations for a mob/randori format. Tests are the verification mechanism.
  • Facilitated retrospective timeFifteen to twenty minutes at the end of the session reserved for the group to discuss what they noticed about design, process, and craft — not just whether the problem was solved.
  • Regular schedule commitmentA standing time slot protected from feature work; a dojo that competes with sprint pressure will always lose.

Outputs

  • More capable learnerDevelopers who have practiced a specific technique or pattern in a no-consequence environment and can bring that muscle memory to production code.
  • Shared craft vocabularyA team that has argued about design trade-offs together and arrived at shared language for concepts like cohesion, naming, and test granularity.
  • Completed kata solutionThe code produced during the session — not a deliverable, but a concrete artifact for the retrospective discussion.

Steps (4)

  1. Choose the kata

    Select or rotate responsibility for choosing a problem appropriate to the team's current learning edge. Classic examples include FizzBuzz (for TDD rhythm), Roman Numerals (for incremental design), and Game of Life (for emergent complexity). The facilitator describes the problem and clarifies the rules before coding starts.

    producessession problem statement

  2. Code in pairs (prepared kata or randori)

    In a prepared-kata format, one person has solved the problem beforehand and walks the group through their solution step by step. In randori format, pairs take turns at the keyboard (typically 5–7 minutes each). The rest of the group observes silently and notes design decisions. The driver writes code; the observer guides; the audience watches without interrupting.

    produceskata solutionobserved design decisions

  3. Run tests continuously

    Tests are the ground truth for whether each step works. The session drives toward the smallest passing increment at each step. Test-driven development rhythm is intrinsic to the kata format.

    producespassing test suite

  4. Hold a retrospective

    After the problem is solved or time runs out, the group discusses: What design decisions were made? What alternatives were available? What would they do differently? The facilitator ensures the discussion addresses the how and why, not just the what.

    producescraft insightsteam norms

Principles

  • The goal is learning, not delivery: finishing the kata matters less than the process discussion it generates.
  • Safety is the container: no production consequence means no ego defence — mistakes are data, not failures.
  • Repetition builds muscle memory: the same kata solved a second time with a constraint (no conditionals, no loops) reveals more than solving two different problems once each.

Known uses (3)

Known failure modes (3)

Related trainings (3)

Sources (3)

Provenance

  • Added to catalog:
  • Last updated:
  • Verification status: verified