In den Grundlagen wurde der grobe Ablauf eines .NET Coding Dojo’s durch die drei Phasen “Negotiation”, “Production” und “Reflection” schon kurz geschildert. Doch ein .NET Coding Dojo bietet innerhalb der “Production”-Phase deutlich mehr als nur das reine Coding. Es gibt sog. “Modes”, also Variationen einer Ausführung eines .NET Coding Dojo’s. Diese Variationen haben sich im Laufe der Ausführung vieler Coding Dojo’s herauskristallisiert und sind als De-Facto-Standard etabliert. Das Anwenden der Modi ist meist gebunden an einen bestimmten Schwierigkeitsgrad, zumal manche Modi den Teilnehmer deutlich mehr fordern als andere.
Prepari
Für Einsteiger & Fortgeschrittene
Der Prepari-Modus ist der einfachste und bei öffentlichen .NET Coding Dojo’s der am häufigsten durchgeführte Modus. Bei diesem Modus wird eine Code Kata gemeinschaftlich im Team gelöst. Die Teilnehmer programmieren durch “Befehle” an den “Coder” (manchmal auch flapsig, aber freundlich “Code-Monkey” genannt). Sie geben dem Coder nach Ihrer eigenen Abstimmung und Klärung die Anweisungen, um die Tests und den Code durchzuführen. Der Coder führt diese auch exakt aus. Der Operator nimmt dabei die Rolle des Moderators ein und greift nur im äußersten “Notfall” ein, also bei Streitereien, zerfahrener Diskussion oder ähnlichem. Sowohl Operator als auch Coder dürfen dabei nicht auf die Meinungs- und Entscheidungsbildung der Teilnehmerschaft einwirken.
Randori
Für Einsteiger, Fortgeschrittene & Experten
Der Randori-Modus ist eine wesentlich aktivere und forderndere Variante des .NET Coding Dojo. Beim Randori programmiert jeder Teilnehmer. Genauer gesagt prgrammieren die Teilnehmer direkt an einem Rechner in Paaren (Pair Programming) für eine bestimmte Zeitspanne (meist zwischen 5 und 10 Minuten). Hierbei gilt ganz besonders: Der Code wird grün angenommen und grün wieder hinterlassen (also funktional korrekt). Das Randori kann in “Wave”- oder “Flow”-Form durchgeführt werden. Bei der “Wave” sind die Paare fest, d.h. sowohl Driver als auch Co-Pilot werden bei jedem Window ausgetauscht. Bei dem “Flow” wird das arbeitende Paar “fließend” gebildet, d.h. bei jedem Window verlässt der derzeitige Driver das Pair, der Co-Pilot wird zum Driver und ein neuer Co-Pilot rückt nach. Beim Randori gilt die Entscheidungsgewalt des Paares, die anderen Teilnehmer sind “Spectator” und können die weitere Vorgehensweise (ruhig, meist flüsternd) besprechen und planen, aber nicht auf das programmierende Paar einwirken.
Kumite
Für Fortgeschrittene & Experten
Der Kumite-Modus ist eine “sportlichere” Variante des .NET Coding Dojo. Beim Kumite stellen sich zwei Paare an zwei Rechner (vorzugsweise exakt gegenüber) und programmieren ein Code Kata “gegeneinander”. Sie versuchen dabei, das Code Kata so elegant wie möglich zu lösen. Es können auch zwei komplette Teams gegeneinander im Kumite antreten. Das interessante beim Kumite sind die “Kampfregeln”. Bei den meisten Kumite wird ein nach der Implementierung roter Test mit “Delete” bestraft – d.h. die rote Implementierung (inklusive aller roter Tests) wird sofort gelöscht. Bei einigen Kumite-Dojo’s gibt es auch “Red Flag”-Regeln, die während der Implementierung die Anforderungen ändern oder erweitern, um das Kumite abwechslungsreicher zu gestalten. Kumite und Randori können miteinander kombiniert werden. D.h. die gegenüberliegenden Implementierungsparteien wechseln in Windows (Zeitfenstern) die Plätze.
Bunkai
Für Fortgeschrittene & Experten
Der Bunkai-Modus ist wohl eine der herausfordernsten Varianten des .NET Coding Dojo. Im Bunkai wird das Code Kata (ähnlich wie beim Kata Bunkai) analysiert und inspiziert. Doch anders als beim Kata selbst, wird beim .NET Coding Dojo Bunkai das Code Kata im Zeitversatz “doppelt und dreifach” programmiert. D.h. es gibt mindestens zwei Rechner, an denen zwei Paare an dem gleichen Code Kata programmieren. Das Interessante dabei: Es wird am gleichen Code programmiert, nur zeitversetzt. Während das erste Paar (die “Offense”) die “Erst-Implementierung” durchführt, nimmt das zweite Paar diesen Code entgegen und arbeitet mit dieser Basis weiter. Das zweite Paar (die “Defense”) muss dabei den aktuellen Code bewerten und jeden Eingriff (also Änderung) argumentativ belegen. Während die Offense die funktionale Implementierung vorantreibt, arbeitet die Defense meist an nicht-funktionalen Werten. Der Bunkai-Modus ist eine sehr lehrreiche Erfahrung, ist aber gleichzeitig sehr schwer in der Umsetzung und im Teamplay.