Coding Dojo Berlin
Monday, August 9th, 2010Letzte Woche waren Ralf und ich zu Gast bei der Berliner Dojo Gruppe. Mike Bild und Marco Rasp haben das Dojo organisiert, ihnen dafür ein großes Dankeschön!
Obschon wir am Tag zuvor unseren ersten Probelauf für den prio.walk absolviert haben, waren wir in Berlin wieder gut auf den Beinen. Vom Alex ging es gut 3km zu Fuß zum Veranstaltungsort. Dort erwartete uns eine Gruppe von 15 Entwicklern. Wir haben vorgeschlagen, die Kata BankOCR zu lösen. Da die Gruppe diese Kata noch nicht bearbeitet hatte, wurde der Vorschlag angenommen. Anschließend haben wir kurz erläutert, dass wir den weiteren Verlauf des Dojos in drei Phasen aufteilen möchten:
- In der ersten Phase geht es um das Verstehen der Anforderungen sowie den Entwurf einer Lösung.
- Die zweite Phase befasst sich mit der Implementierung nach TDD.
- In der dritten Phase reflektiert die Gruppe über den Abend.
Dabei sehen wir in der ersten und letzten Phase den Schwerpunkt auf echter Gruppenarbeit, also alle arbeiten gemeinsam. In der mittleren Phase wollten wir den Schwerpunkt eher auf die Arbeit eines einzelnen legen.
Los ging es mit den Anforderungen. Am Flipchart wurden Beispiele für die Ziffern angeschrieben und die Gruppe fragte nach, bis alle Unklarheiten beseitigt waren. Dabei zeigte sich schon, dass manchmal die Begriffe durcheinander gingen. Zahl und Ziffer auseinander zu halten ist nicht wirklich schwer, aber im Eifer des Gefechts geht da schon mal etwas Präzision verloren. Daher haben wir vorgeschlagen, die Begriffe der Domäne “BankOCR” zu sammeln und in Beziehung zu setzen. So kamen Begriffe wie OCRZiffer, OCRZahl, Textzeile, OCRZeile und weitere zusammen. Durch diese Diskussion wurde das Verständnis der Gruppe für die Problemstellung vertieft. Vor allem wurde aber eine gemeinsame Sprache, die sogenannte ubiquitous language) geschaffen, in der die Gruppe sich nun viel präziser unterhalten konnte. Die Gefahr von Missverständnissen und aneinander-vorbei-Reden wurde dadurch reduziert.
Letzter Schritt der ersten Phase war dann der Entwurf. Wir erachten es für notwendig, vor dem Kodieren einen Entwurf zu erstellen. In größeren Kontexten mag es dabei um Komponenten gehen, in kleineren Aufgabenstellungen, so wie bei dieser, eher um Klassen und Methoden. Die Gruppe machte unterschiedliche Vorschläge zur Notation eines Entwurfs am Flipchart. Dabei wurden nicht nur grafische Entwürfe diskutiert, sondern auch versucht, rein textuell zu arbeiten. Es ergab sich eine lebhafte und sehr fruchtbare Diskussion über die Art und Weise des Softwareentwurfs. Das hat uns sehr gefreut, denn wir haben zu keinem Zeitpunkt den Eindruck gehabt, dass die Gruppe lieber mit TDD losgelegt hätte. Wir hatten uns im Vorfeld gefragt, ob die Gruppe sich darauf einlassen würde, vor der Implementierung zu planen. Erfreulicherweise stand das nicht wirklich in Frage.
Tja und dann? Kritiker werden uns nun vielleicht vorhalten, wir hätten gar kein Coding Dojo veranstaltet. Denn die Zeit war uns davon gelaufen, wir haben keine einzige Zeile Code geschrieben. Die Gruppe hat dies in der nachfolgenden Reflexion jedoch nicht bemängelt. Im Gegenteil. Alle haben zum Ausdruck gebracht, an diesem Abend etwas gelernt zu haben. Und Spaß hat es auch gemacht. Ob man den Abend nun Coding Dojo oder Workshop oder bunten Abend nennt… mir ist es fast egal. Wichtig ist festzuhalten, dass wir zu keiner Zeit die Absicht hatten, das Kodieren unter den Tisch fallen zu lassen. Dann hätten wir dies im Vorfeld kommuniziert und nicht mehr von einem Coding Dojo gesprochen. Es hat sich so entwickelt und die Gruppe war zufrieden. Ich gestehe aber, wir haben im Vorfeld überlegt, ob wir nicht mal ein Architektur Dojo anbieten sollen. Dass es in Berlin ungewollt zur Premiere kam ist vielleicht eine Bestätigung dafür, dass es nicht immer ums Kodieren gehen muss.
Dass der Entwurf so lange gedauert hat, war vor allem der Tatsache geschuldet, dass die Gruppe noch keine gemeinsame Entwurfssprache gefunden hatte. Wenn die Gruppe solche Entwurfsphasen in ihren Dojos häufiger gemacht hat, wird konsent darüber entstehen, wie Entwürfe am Flipchart notiert werden. In unseren Seminaren führen Ralf und ich die Gruppen in dieser Phase sehr stark. Hier im Dojo haben wir nicht versucht, der Gruppe “unsere” Notation aufzudrängen, wir haben sie nicht einmal vorgeschlagen. Dadurch konnte die Vielfältigkeit innerhalb der Gruppe zum Vorschein kommen. Auch das haben die Teilnehmer als sehr angenehm und lehrreich empfunden.
Nach dem Dojo haben wir den Abend noch beim Bierchen ausklingen lassen. Und dann stand noch eine kleiner Fußmarsch zurück zum Alex an. Mir taten hinterher ordentlich die Füße weh
erkennen. Der liegt nämlich nicht nur in einer verbesserten Korrektheit, sondern vor allem in einer besseren Evolvierbarkeit. Das liegt daran, dass TDD einen starken Einfluss darauf hat, wie man seinen Code strukturiert. Denn es entsteht, oft wird behauptet ganz von alleine, gut testbarer Code. Meiner Erfahrung nach verbessert sich die Qualität des Codes zwar nicht so ganz von alleine, aber ich bestreite nicht, dass schon allein die Reihenfolge, erst Test, dann Implementierung einen positiven Einfluss auf die Codequalität hat. Deutlich besser wird die Qualität durch einen vorgelagerten Planungsschritt. Damit rede ich nicht dem “Big Design Upfront” das Wort, sondern ich meine, als Entwickler müssen wir uns die Zeit nehmen, vor dem Codieren ein paar Skizzen auf Papier zu machen.
weiß, dass ich nicht für Marketingvorträge zur Verfügung stehe. Wenn ein Produkt gut ist, sage ich es. Und wenn es nix taugt, sage ich das auch 



