Code Katas für Mr. Miyagi

Code Katas für Mr. Miyagi

http://clumsyboy.deviantart.com/art/Aikido-Dojo-96502494
Quelle

Ist Karate was für Dich? Was hat Mr. Miyagi eigentlich mit Programmieren zu tun? Programmieren ist ein Handwerk und eine Kunst in einem. Nur durch Übung und tägliches Coden kann man besser werden. Aber welche Übungen sollte man machen, um besser zu werden? Ist es überhaupt möglich bestimmte Übungen zu machen, um seine Technik zu verbessern? Mit diesem Beitrag hoffe ich euch Code Katas näher zu bringen. Das Ziel der Katas ist nicht die Erstellung von lauffähigem Code an sich, sondern Techniken zu erlernen, um effizienter Code zu erstellen.

In der Clean Code Bewegung wird Programmieren als eine Fertigkeit betrachtet, die erlernbar ist und dabei Hilft Technische Schulden gar nicht erst entstehen zu lassen.

Code Katas und Kata Arten

Katas sind Übungen, die kein bestimmtes Ziel verfolgen, als die Übung selbst. Es geht nicht darum am Ende fertige Software herzustellen, sondern immer und immer wieder eine Übung durchzuführen und dabei Schritt für Schritt immer besser zu werden, bis man zum „Meister“ wird. Wo gibt es Katas, um besser zu werden? Welche Tools kann man benutzen, um die Katas aufzuzeichnen und mit anderen zu teilen.

Katas können dabei in verschiedene Kategorien eingeteilt werden. Es gibt die klassischen Code Katas auch Function Katas genannt, die kleinere Aufgaben darstellen und nicht größer als eine Funktion sind.

Die nächst größere Kategorie ist die Class Katas, bei denen man mindestens eine Klasse und mehrere Funktionen benötigt. Library Katas stehen für größere Problemstellungen, bei der mehrere Klassen benötigt werden und zusammen in eine Bibliothek gepackt werden.

Eine größere Herausforderung stellen die Application Katas dar, bei der tatsächliche Programme samt Zugriff auf Schnittstellen und Ressourcen darstellen. Für Architekten die ultimative Herausforderung, die Architecture Katas, deren Ziel die Implementierung von verteilten Systemen ist. Wobei die Aufgabe so groß sein kann, dass die Erstellung nicht das Ziel darstellt, sondern dessen Entwurf.

Eine Variante der Application Katas stellt die Agility Kata dar. Hierbei liegt der Focus, wie z.B. bei SCRUM auf die inkremmetelle bzw. iterative Entwicklung.

Training im Coding Dojo

In der Gemeinschaft der dort Übenden, was Dojo im übertragenem Sinne bedeutet, werden verschiedene japanische Kampfkünste geübt.

Bei einem Coding Dojo geht es natürlich nicht um Kampfkunst sondern darum seine eigene Fähigkeiten als Softwareentwickler zu verbessern. Dies erfolgt dadurch, dass eine Aufgabe oder Kata vorgegeben und in der Gruppe bearbeitet wird. Wichtig auch hier ist, dass es nicht darum geht, fertigen Code zu erzeugen, sondern auf dem Weg dahin Fehler zu machen und aus diesen zu lernen.

Voraussetzung bei einem Dojo ist ein Sensei oder Meister, der den Ablauf des Dojos leitet. Die Leitung geschieht aber nicht dadurch, dass dieser alle Lösungen vorgeben kann, sondern darauf achtet, dass die Regeln eingehalten werden und dabei untertützen kann den richtigen Pfad zu finden.

Normalerweise sollten 8-16 Entwickler an so einem Event teilnehmen, also nicht zu wenig aber auch nicht zu viele Teilnehmer. Neben dem Sensei gibt es die Rollen des Drivers und des Copiloten. Der Driver entwickelt den Code, wohingegen der Copilot beratend eingreifen kann, aber selber nicht coded. Nach ca. 5-8 Minuten, je nach Regeln, wandert der Driver zurück ins Publikum und der Copilot wird selbst zum Driver. Dies wird solange wiederholt, bis jeder aus dem Publikum einmal beide Rollen eingenommen hat.

Nach der Übungseinheit bzw. evtl. auch nach mehreren Runden sollte es ein Review geben, um Feedback zum gelernten zu liefern und auch damit, dass ein Austausch zwischen den Teilnehmern stattfindet. Je nach Aufgabe oder Kata können die Regeln für eine Übungseinheit abweichen.

Damit das Publikum mitfiebern und mitdenken kann, was der Driver und der Copilot machen, ist es sinnvoll einen Beamer aufzustellen und den erzeugten Code live zeigen zu können. Neben dem Beamer sollten auf einem Flipchart die Regeln und Ziele der momentanen Übungseinheit erklärt werden, damit alle Teilnehmer den Focus nicht verlieren.

Kritik an Code Katas

Soweit ich die Kritik von John Somnez verstanden habe, ist es ihm wichtig herauszuheben, wann man als Entwickler besser wird. Laut Ihm wird man als Entwickler nur dann besser, wenn neue Herausforderungen und Ideen in unbekannten Gewässern umgesetzt werden und nicht wenn ein und die selbe Übung wieder und wieder durchgekaut wird. Nur dadurch, dass man jeden Tag viele Schritte geht wird man nicht zum Meister Geher oder wenn man jeden Tag zur Arbeit fährt zum Super Formel 1 Fahrer. Er betont, dass nur durch neue Herausforderungen und durch Verschiebung der eigenen Grenzen die eigenen Kenntnisse verbessert werden.

Welche Erfahrungen hast Du mit Coding Dojos oder Katas in letzter Zeit gemacht? Können diese Erfahrungen anderen Entwicklern helfen. Bitte hinterlasse hier Anmerkungen und Kommentare, Du bist herzlich eingeladen Deine Meinung zu hinterlassen.

Quellen

Was sind CodeKatas
Was bedeutet Kata im klassischen Sinne
Was ist ein Coding Dojo
Kata Katalog
Kata (Programmiereung)
Kritik an Code Katas (John Somnez)
Technische Schulden

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.