oder: Kata und die Kunst sich weiter zu entwickeln
Wie wird man ein großartiger Musiker? Wenn man über Musiker liest, werden Fähigkeiten wie seine Einfühlungsgabe und seine Ausdrucksfähigkeiten hervorgehoben. Niemandem fällt aber ein zu denken, dass ihm in den Schoß gefallen wäre – jeder weiß, das dies erst durch jahrelange harte Arbeit und Üben elementarer Techniken möglich geworden ist. Erst die perfekte Beherrschung der Technik befreit ihn davon, im Konzert daran zu denken und gibt ihm die Möglichkeit, sich ganz auf seinen spezifischen Ausdruck zu konzentrieren. Und jeder weiß auch, dass die Meister weiter hart üben, um diesen Stand zu halten. Schirennfahrer müssen eine perfekte Fahrtechnik haben, erst auf dieser Basis (unter anderem natürlich) können sie überhaupt anfangen, über die Taktik in einem Rennen nachzudenken. Analog gilt wie für die Musiker: sie arbeiten hart an der elementaren Basis ihrer Fähigkeiten. Das geht so weit: Was machen Schirennfahrer im Sommer? Sie fahren auf den Gletscher und üben ihre Technik.
Entwickler haben ebenfalls eine kreative Tätigkeit, die auf einer Menge elementarer Kenntnisse und Fähigkeiten beruht. Aber wie üben sie? Viele denken, es sei genug, täglich zu programmieren. In letzter Zeit hat sich aber die Erkenntnis verbreitet, dass es ebenfalls unerlässlich ist, die elementaren Dinge zu üben – eben damit man in der täglichen Arbeit nicht ständig daran denken muss. Ob man dabei besser wird, ist damit nicht mehr dem Zufall überlassen, sondern man arbeitet gezielt an einzelnen Skills. Das ist bekannt geworden als Kata – anlog einer Kata aus dem Karate, die in etwa der Pflicht beim Eiskunstlauf entspricht.
Eine Karateschule hat einen Ablauf von Schritte, Techniken, Schlägen…, in denen möglichst viele der typischen Bewegungsabläufe vorkommen. Der Schüler übt diese regelmäßig, um sie perfekt zu beherrschen und sie in Fleisch und Blut übergehen zu lassen. Die typische Anwendung einer Programmier-Kata ist das Einüben von Techniken der testgetriebenen Entwicklung mit Refactoring. Eine Kata kann man sehr gut allein durchführen und beobachten, wie die notwendige Zeit für eine Aufgabe mit der Wiederholung kürzer wird.
Dann kann man anfangen zu beobachten, welche Hindernisse einer weiteren Verbesserung im Weg stehen und z.B. gezielt nach Tastenkombinationen für häufige Aktionen suchen oder einrichten. Neben der Verbesserung von TDD und Refactoring-Praktiken kann man Kata auch einsetzen
- Zum Lernen einer neuen Programmiersprache: man kann sich ganz auf die Sprachfeatures konzentrieren, ohne vom Druck abgelenkt zu werden, dass man schnell Ergebnisse vorweisen muss
- Sich in eine neue Arbeitsumgebung einzuarbeiten
- Pair Programming zu üben
- In Gruppen zu arbeiten und sich gegenseitig Tipps und Hilfestellungen zu geben. Das wird weiter unten im Abschnitt über Coding Dojos weiter konkretisiert.
Coding Dojo
Während eine Kata auch dann nützlich ist, wenn man sie allein durchführt, kann man aber noch mehr davon profitieren, wenn man sie in der Gruppe durchführt. So eine Übung heißt Coding Dojo, auch als Randori bekannt. Dojo ist die Übungshalle in den japanischen Kampfkünsten, Randori (wörtlich: das Chaos nehmen) ist eine der Übungsformen eine Kampfes in den Kampfkünsten. Im Gegensatz zu einem richtigen Wettkampf geht es nicht ums gewinnen, sondern darum, die erlernten Techniken fließend in einem simulierten Kampf anwenden zu können.
Java Coding Dojo in München
In München gibt es seit geraumer Zeit ein regelmäßiges offenes .NET Coding Dojo,das von Ilker Cetinkaya veranstaltet wird. Wir (das sind Daniel Zappold und ich, Christoph Mathis) wollen jetzt ein Coding Dojo für Java veranstalten. Der erste Termin findet am 22.02.2011 im Feringapark-Hotel in Unterföhring statt (sorry für die ÖPNV-feindliche Location). Wenn genug Interesse da ist, gibt es sicher weitere Veranstaltungen: also: meldet Euch bei der Xing Gruppe „Agile developer Skills“ an.