-
Notifications
You must be signed in to change notification settings - Fork 2
The Katas and the Coding Dojo
A dojo is a place for immersive learning. Needless to say, coding dojos are meant to eventually thoroughly master TDD using coding katas as a means. During the coding dojos, TDD practitioners get to know, apply, and practice all TDD skills, heuristics, and principles.
Moreover, during the dojos practitioners are made acquainted with various aspects of pair-programming as well as various mob-programming concepts such as randori, driver-navigator, etc.
During these sessions, we may envision practitioners going roughly speaking through a set of learning phases. Departing from an initial skilled practitioner, they gradually move up to a conscious practitioner and may finally eventually reach the skills of a so-called reflective practitioner. As such, the phases are quite comparable to the well-known randori, driver-navigator, etc. stages of learning.
During each of these learning stages, more or less the same set of topics are practiced, but gradually more and more in-depth. For example, such topics include TDD in unfriendly environments, decoupling code from surroundings, deliberately improving code in small steps, etc. This concept is elaborated in the pictures below. The original version was created together with Rob Westgeest and has been redrawn in Excalidraw.
So which background do we expect from practitioners in a dojo? First and foremost a mindset to always want to improve and learn is the most the valuable thing any participant can bring to the table!
Also, some of the most obvious questions that may come to mind are answered below.
What general programming skills are required?
These katas are intended for people who want to learn TDD. Some basic programming experience is required, such as knowing what a class is, what an object is, what a primitive is, what exception handling entails, and how to write conditionals and loops.
Although not strictly required, it will also definitely help if you are already familiar with concepts such as encapsulation and the single responsibility principle.
Is there a preferred programming language?
No, there isn't. There are cookie-cutter templates for many languages available, but even if there aren't any for your favorite programming language, you can still do many of the katas. Moreover, the programming language is kind of irrelevant for practicing the various aspects that are being addressed. I have facilitated many coding dojos where multiple participants were exposed to e.g. Python for the first time, and they managed pretty soon pretty well.
This work is licensed under a CC-BY-SA-4.0 license. Attribution: github.com/zhendrikse/tdd.