Code Katas

Code Katas

Avatar von Helen Sedlmeier

Katas sind eine hervorragende Möglichkeit, seinen eigenen Horizont zu erweitern und sich stetig zu verbessern. Sei es im Sport, wenn es darum geht, Sprachen zu lernen oder – mit Code Katas – in der Softwareentwicklung. Grund genug, sich etwas ausführlicher damit zu beschäftigen; auch unter dem Gesichtspunkt, warum ein Code Kata auch für einen Product Owner einen Mehrwert bietet.

A Kata a day keeps the debugger away. 

Es ist nicht bekannt, wer die Idee der Code Katas erfunden hat. Eine recherchierbare Quelle jedoch ist das Buch von David Thomas und Andrew Hunt. Jene haben Code Katas im Buch „The Pragmatic Programmer“ im Jahr 1999 genannt.

Die Haltung der „Software Craftsmanship“ und die „Clean-Code-Bewegung“ betrachten Programmierung als Fertigkeit/Handwerk, welche geübt werden soll. Hierbei helfen Code Katas. 

Eine Kata ist eine Wiederholung der Grundübung beim Karate. Beim Karate werden die grundlegenden Handgriffe, Bewegungen und Techniken immer wieder geübt (und geübt), bis sie in Fleisch & Blut übergehen. 

Eine Code Kata ist also eine Programmieraufgabe, die der Entwickler viele Male hintereinander löst. Er versucht bei jedem Durchlauf einen besseren Weg zu finden.

Dabei geht es nicht um die am Ende stehende Lösung, sondern darum, den Weg dorthin zu perfektionieren. Wie bei der Karate Kata soll durch die Wiederholung der Code Kata bestimmte Muster in Fleisch und Blut übergehen, sodass man ein besserer Entwickler wird.

Warum Code Katas?

Programmieren ist eine sehr praktische Angelegenheit, also warum soll man das denn noch weiter üben?

Code Katas sind aus mehreren Gründen wertvoll. Sie können dabei helfen, gute Programmierpraktiken zu verstehen und zu verinnerlichen. Sie helfen, das Verständnis für bestimmte Konzepte und Technologien zu vertiefen und zu erweitern. Die Kreativität und Problemlösungsfähigkeit wird gesteigert, was zu innovativeren und effektiven Lösungen für komplexe Herausforderungen beitragen kann.

Last but not least: Kollaborative Code Katas (sogenannte Coding Dojos) können dabei helfen, die Kommunikation, das Zusammengehörigkeitsgefühl und die Zusammenarbeit innerhalb eines Teams zu fördern und zu verbessern.  

Welche Arten von Code Katas gibt es? 

Code Katas sind eine flexible Übungsform, von denen es viele Arten gibt, die sich an den Bedürfnissen und Zielen einzelner Programmierer oder Teams orientieren können. Typische Beispiele sind:

  • Function Katas/Code Katas sind kleine Aufgaben, deren Problemstellung ein Algorithmus ist. Ihre Lösung besteht aus einer Funktion.
  • Class Katas sind Aufgaben, deren Problem sich mittels einer Klasse und mehrerer Funktionen lösen lässt. 
  • Library Katas stehen für Probleme, deren Lösung mehrere Klassen erfordern, die dann in einer Bibliothek zusammengefasst werden können. 
  • Application Katas stellen als Aufgabe die Entwicklung einer kompletten Anwendung. D. h. es geht nicht nur um irgendeine Logik, sondern um alles, von der Benutzerschnittstelle über die Domäne bis zum Ressourcen-Zugriff. Die Herausforderung liegt hier jedoch weniger beim Technologieeinsatz, sondern im Zusammenspiel der Aspekte.
  • Architecture Katas sind größere Application Katas. Sie erfordern eine verteilte Implementation oder sind sogar so groß, dass eine Implementierung unrealistisch ist. Dann geht es um den Architekturentwurf.
  • Agility Katas sind Application Katas, bei denen der Fokus auf inkrementeller-iterativer Entwicklung liegt. Jede Kata wird daher in mehreren Teilen geliefert.

Wie geht das? 

Code Katas können alleine oder in einer Gruppe durchgeführt werden. Einige bevorzugen es, alleine zu üben, um sich auf ihre Arbeit zu konzentrieren, während andere es bevorzugen, in einer Gruppe zu üben, um von anderen zu lernen und Feedback zu erhalten. Beides ist gut. Allen Code Katas ist dabei folgender Ablauf gemein:

  1. Auswahl eines Problems: Zu Beginn wählt man ein Problem oder eine Herausforderung, die gelöst werden soll. 
  2. Übung: Code schreiben. 
  3. Reflektion: Nach Abschluss der Übung sollte man sich Zeit nehmen, um über den Code und das Problem nachzudenken und zu reflektieren, was man gelernt hat und wie man beim nächsten Mal besser vorgehen kann. Es wird oft mehrere Iterationen geben, bei denen man den Code verbessert und optimiert.
  4. Wiederholung: Es wird empfohlen, Code Katas regelmäßig zu wiederholen, um die Fähigkeiten und das Verständnis zu verbessern.

Wenn man in einer Gruppe eine Code Kata löst, spricht man auch vom Coding Dojo. In einem Coding Dojo – Dojo bedeutet Trainingsraum – finden sich mehrere Entwickler zusammen, um gemeinsam eine Code Kata durchzuführen und so voneinander zu lernen. Es arbeiten mindestens zwei Entwickler als Pair an einem Rechner an der Aufgabe; die restlichen Teilnehmer verfolgen das Geschehen über den Beamer. In einem festen Rhythmus (z. B. alle acht Minuten) rotiert ein Entwickler aus dem Programmier-Paar heraus und ein anderer Teilnehmer nimmt seinen Platz ein. Im Coding Dojo gibt es einen unterstützenden und kollaborativen Umgang, um das Verständnis von Programmierern gemeinsam zu verbessern.

Wo finde ich Code Katas? 

Es gibt einige Seiten zu Code Katas, die abhängig von der Sprache, Stil und dem Anspruch sind. Hier mal eine kleine Auswahl: 

Ergänzt bitte eure Tipps in den Kommentaren!

Wie kann ich Code Katas als Product Owner nutzen? 

Dass Code Katas eine großartige Sache für Entwickler sind, ist klar. Wie profitiert man aber als Product Owner von Code Katas? Ganz einfach: Ihr könnt Code Katas auch für eure eigenen Herausforderungen nutzen!

Stellt euch vor, ihr, baut ein völlig neues Produkt oder eine wesentliche Erweiterung eines bestehenden Produkts. Dann können euch Code Katas helfen, verschiedene Applikations- und/oder Architektur-Szenarien zu entwickeln und deren Vor- und Nachteile zu explorieren. Dies ist deutlich kollaborativer, intensiver und ergebnisoffener als ein Spike, Proof-of-Concept oder eine Investigation für ein bis drei Developer mit einer Timebox. Das kann auch im Rahmen eines ATAM-Workshops integriert werden. 

Darüber hinaus könnt ihr diese Code Katas auch nutzen, um einen kritischen (Rück-)Blick im Sinne eines Soll-Ist-Abgleichs oder eines Soll-Soll-Abgleichs zu tätigen. Wie würde aus heutiger Sicht, mit den hinzugewonnen Informationen und neuesten technischen Entwicklungen eine Lösung aussehen? Was können wir daraus lernen bzw. ableiten (Stichwörter: Refactoring, Tech Debt, Re-Architecturing oder House Keeping). 

Oder es gibt ein Feature, welches demnächst implementiert werden soll? Dann können Code Katas genutzt werden, um die besten Implementierungsvorgehen zu finden. Dies wird vielleicht eine der engagiertesten Refinement-Sessions mit deinen Entwicklern, die du je erlebt hast.

Zu viel „Dev“?

Klingt immer noch zu Dev-lastig? Nochmal konkreter zu den Vorteilen: Neben dem Upskilling und dem Impact auf die Codequality – was wahrscheinlich auch zu einer besseren Lieferfähigkeit führt – gibt es vier weitere Vorteile:

  1. Besseres Verständnis der Technologie: Durch die Teilnahme an Code Katas kann ein Product Owner ein tieferes Verständnis der Technologie erlangen, was ihm dabei hilft, bessere Entscheidungen im Hinblick auf Möglichkeiten und Grenzen von Features bzw. Systemgrenzen (,Architectural Runway‘) zu treffen und diese ggf. auch proaktiv zu adressieren. 
  2. Verbesserte Kommunikation: Wenn ein Product Owner ein tieferes Verständnis der Technologie hat, kann er besser mit Entwicklerteams kommunizieren.
  3. Einblick in die Entwicklerperspektive: Durch die Teilnahme an Code Katas kann ein Product Owner einen Einblick in die Herangehensweise von Entwicklern erhalten und helfen, Trade-offs zu Entscheidungskriterien gemeinsam zu erkennen und gemeinsam zu diskutieren. So können Optionen, die in der Zukunft wünschenswert, aber noch nicht jetzt relevant sind, trotzdem berücksichtigt werden.   
  4. Förderung der Kollaboration: Code Katas können Product Owner und Entwicklerteams dabei helfen, enger zusammenzuarbeiten und ein besseres Verständnis füreinander zu entwickeln, was die Zusammenarbeit verbessert. 

Zur Unterstützung, Vorbereitung und Moderation kannst du deinen Scrum Master einbinden. Du wirst sicherlich offene Türen einrennen. 

Probiert es doch einmal aus. In diesem Sinne: Keep calm and Code Kata on! 

Neues aus der Agilen Community

Avatar von Helen Sedlmeier

Kommentare

Schreibe einen Kommentar

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


Für das Handling unseres Newsletters nutzen wir den Dienst HubSpot. Mehr Informationen, insbesondere auch zu Deinem Widerrufsrecht, kannst Du jederzeit unserer Datenschutzerklärung entnehmen.