Seit mittlerweile fast 2 Jahren findet regelmäßig das Conciso Coding Dojo Dortmund statt. Ziel ist es, Programmierung in Form von Testgetriebener Entwicklung zu trainieren und außerhalb des normalen Projektgeschäfts anzuwenden. Zu diesem Zweck führen wir Übungen durch, sogenannte Code-Katas, in denen wir einfache Aufgaben mit den dazugehörigen Techniken bearbeiten. Auf diese Weise wird die notwendige Routine entwickelt, dies auch im normalen Berufsalltag ohne größere Mühen zu tun. Beim letzten Dojo haben wir zum ersten Mal eine Refactoring Kata durchgeführt, über dessen Verlauf ich hier kurz berichten möchte.
Die Aufgabe
Die Aufgabe war die klassische Tennis Refactoring Kata. Diese ist von Emily Bache in ihrem GitHub-Repository abrufbar und auch in ihrem Buch beschrieben. Da wir die Java-Variante verwenden wollten, habe ich diese in unser Firmen-Repository kopiert und auf JUnit 5 aktualisiert. Anschließend konnten wir uns der 1. Variante widmen.
Durchführung
An der Kata haben an diesem Abend 7 Entwickler teilgenommen, die alle im Raum Dortmund tätig sind. Die Entwicklung erfolgte mit Hilfe der IntelliJ Entwicklungsumgebung, welche die meisten Anwesenden in der täglichen Arbeit verwenden.

Wir sind damit gestartet, erst einmal eine gemeinsame Basis zu definieren. Dazu haben wir festgelegt, was eigentlich guten Code ausmacht und worauf wir achten wollen. Dabei haben wir folgende Aspekte definiert:
- Guter Code sollte lesbar sein, auch ohne Kommentare
- Es soll keinen nicht erreichbaren (Dead Code) oder auskommentierten Code geben
- DRY-Prinzip
- SOLID-Prinzip
Dies sind bei weitem zwar nicht alle Aspekte, die guten Code ausmachen, aber für die Session war es ausreichend.
Anschließend starteten wir die Kata in Form eines Mob-Programmings. Das bedeutete, dass ein Teilnehmer die Tastatur bedient hat und auf Anweisungen der anderen Änderungen am Quelltext durchgeführt. Ohne Anweisung durfte er aber nichts ändern.
Ein anderer Teilnehmer war Moderator und hat bei Unstimmigkeiten bestimmt, was zu tun ist. Ansonsten haben alle diskutiert und beschlossen, welche Änderungen durchzuführen sind . Diese Rollen wechselten regelmäßig alle 5 Minuten, so dass jeder mehrmals die jede Aufgabe innehatte. Ich war lediglich als Coach tätig und habe auf die Zeit und ggf. auf Einhaltung der zuvor beschlossenen Prinzipien geachtet, sowie an manchen Stellen kritische Fragen gestellt.
Fazit
Nach Ablauf von ca. 1 Stunden endete die Kata dann mit einer Retro. Folgende Ergebnisse haben wir für uns mitgenommen:
- Die Refactoring Kata war spannend.
- Die Gruppe und deren Wissen war für das Thema genau richtig.
- Die Abwechslung zu den normalen TDD-Katas war gut.
- Die Wechselzeit kann ggf. erhöht werden.
Der entstandene Code kann hier gefunden werden.
Anschließend haben wir das Thema der nächsten Kata festgelegt. Dort bearbeiten wir wieder eine Aufgabe mit Hilfe von TDD, allerdings diesmal mit ein paar zusätzlichen Randbedingungen. Mehr dazu hier: https://www.meetup.com/CCDD-Conciso-Coding-Dojo-Dortmund/events/259842665/
Zusätzlich haben wir beschlossen, eine weitere Refactoring Kata durchzuführen, dessen Termin ebenfalls feststeht: https://www.meetup.com/CCDD-Conciso-Coding-Dojo-Dortmund/events/259842683/
Ich bedanke mich noch einmal herzlich bei allen Teilnehmern und hoffe, alle beim nächsten Mal wieder zu sehen. Neue Teilnehmer sind selbstverständlich auch immer gerne willkommen.