en
de

Coding Dojo – jenseits von Test-Driven Development

24 Juni 2016
| |
Lesezeit: 3 Minutes

Die Idee, Konzepte aus dem Kampfsport auf das Einüben von Programmierfertigkeiten anzuwenden, wurde vor etwa 10 Jahren von Dave Thomas, einem der Autoren von „The Pragmatic Programmer“ erstmals propagiert. Sein Gedanke: so wie Kampfsportler sich in Trainingsräumen (japanisch dojo, auf Deutsch „Ort des Weges“) zusammenfinden und bestimmte Übungen (japanisch kata, auf Deutsch „Form“ oder „Muster“) immer wieder wiederholen bis sie instinktiv richtig beherrscht werden, sollen auch Programmierer ihre Fähigkeiten durch gezieltes Üben steigern.

Diese Idee hat mittlerweile viele Anhänger und auch bei Zühlke sind „Coding Dojos“ mittlerweile eine gern genutzte Art, die Ausbildungszeit zu investieren. In einer Gruppe von Kollegen können wir einmal ohne Zeitdruck so sauber programmieren, wie wir es in Büchern lesen und eigentlich immer tun sollen und wollen, aber aufgrund von Projektzwängen oft nicht schaffen.

Doch nachdem man das einige Male gemacht hat, kann sich eine gewisse Langweile einstellen: wir haben ein paar einfache. aber nicht ganz triviale Sachen programmiert (FizzBuzz, Römische Zahlen, Bowlingregeln…) und dabei brav testgetriebene Entwicklung eingeübt. Nicht schlecht, aber TDD (Test-Driven Development) beherrschen wir doch inzwischen – da muss es doch noch anderes geben, was man üben oder lernen kann – und es sind nicht neue Technologien gemeint.

Refactoring

Statt neuen Code zu schreiben, der eine klar definierte Aufgabe löst (ein angenehmes aber unrealistisches Szenario), nehmen wir uns funktionierenden, aber grauenvollen Code vor und verbesseren ihn durch Refactoring. Und um sicherzustellen, dass noch alles funktioniert, müssen wir natürlich Tests schreiben – doch schlechter Code ist meist nicht einfach zu testen! Dies ist eine sehr interessante Übung, aber anders als die meisten Katas muss hier schon Code existieren. Im Netz finden sich zum Glück einige fertige Beispiele, die man verwenden kann. Auch in der Zühlke Academy kann man diese nützlichen Fertigkeiten lernen:

Architekturkata

Ausnahmsweise schreiben wir gar keinen Code, sodern entwerfen zu einer gegebenen Systembeschreibung (d.h. Anforderungen) eine ganze Architektur, wobei UML aber auch Freiform-Diagramme genutzt werden können. Wir müssen sowohl eine Technologieauswahl treffen, als auch Systemkomponenten und deren Interaktion entwerfen. Das Ziel ist nicht nur eine sinnvolle Architektur, sondern auch eine verständliche Dokumentation derselbigen. Auch hier gibt es Beispielaufgaben im Netz, aber bei Zühlke finden sich meist Kollegen aus verschiedenen Kundenprojekten zusammen, und es ist sehr interessant einmal zu den Anforderungen an ein schon längst existerendes System ganz unvoreingenommen eine neue Architektur zu erdenken. Einen ähnlichen Inhalt hat der Kurs Excellence in Software Design der Zühlke Academy.

Zeig mir deinen Code, ich zeig dir meinen

Die Teilnehmer präsentieren abwechselnd Code aus aktuellen oder vergangenen Projekten – Code, auf den sie stolz sind, oder der ihnen Kopfschmerzen bereitet. Gemeinsam wird dann ein Code Review gemacht; wir überlegen, was daran gut ist und was besser gemacht werden kann (und wie).

Performanceoptimierung

Wir schnappen uns etwas Code, der für eine bestimmten Aspekt, etwas zu lange braucht (wieder aus aktuellen oder vergangenen Projekten, vielleicht auch die Lösung eines vorhergehenden Coding Dojos) und einen Profiler und finden heraus, was genau der Flaschenhals ist und wie man ihn beheben kann. Besonders gut geeignet ist Code, der Daten verarbeitet, die man in ihrer Menge hochskalieren kann.

Anforderungsanalyse

Einer der Teilnehmer wird zum Stakeholder eines zu entwickelnden Systems in einem Bereich, in dem er sich fachlich auskennt, (Hobbys sind hier ideal). Vielleicht gibt es schon ein ähnliches System, welches aber Schwächen hat, oder der Anwendungsfall ist zu speziell, dass es einen wirklichen Markt gäbe (oder wir sitzen grade auf einer heißen Startup-Idee!). Zusammen arbeiten wir dann die Anforderungen aus: welche Wünsche und Erwartungen gibt es, welche funktionalen und nichtfunktionalen Anforderungen ergeben sich daraus? Vielleicht erstellen wir auch ein Domänenmodell oder zeichnen ein UI-Mockup. Auch hier gibt es ein passendes Angebot der Zühlke Academy: Requirements in der agilen Softwareentwicklung.

Man sieht, es gibt viele Möglichkeiten, unsere Fähigkeiten zu trainieren – Abwechslung ist gut für die Aufmerksamkeit, und man kann dabei auch Spaß haben! Auch das ist sicher einer der Gründe, warum Zühlke von den Mitarbeitern zu einem der besten Arbeitgeber Deutschlands gewählt wird

Kommentare (0)

×

Updates

Schreiben Sie sich jetzt ein für unsere zwei-wöchentlichen Updates per E-Mail.

This field is required
This field is required
This field is required

Mich interessiert

Select at least one category
You were signed up successfully.

Erhalten Sie regelmäßige Updates zu neuen Blogartikeln

Jetzt anmelden

Oder möchten Sie eine Projektanfrage mit uns besprechen? Kontakt aufnehmen »