Code Katas

Der Begriff Kata stammt aus dem Bereich der Kampfkünste bezeichnet dort komplexe Bewegungsabläufe und deren, erreicht durch ständige Wiederholungen, Auswendiglernen und Perfektionieren. Der Begriff wurde im Laufe der Zeit auch in anderen Bereichen verwendet, u.a. auch im Kontext der Softwareentwicklung. Dort bezeichnet er kurze, abgeschlossene Problemstellungen, die von Programmieren und Programmiererinnen zur Verbesserung der eigene Implementierungsfähigkeiten, speziell der Codierfähigkeiten, verwendet werden.

Die Ursprünge der Code Kata-Idee finden sich im Umfeld der Software craftsmanship-Bewegung. Diese betont die Notwendigkeit eines ständigen Selbstlernprozesses für professionelle Entwickler und Entwicklerinnen und ist eine Fortführung der Agile-Bewegung1 und deren Fokussierung auf Individuen, nicht auf Prozesse (Vgl. Wikipedia, Software craftsmanship). Das Prinzip kleinteiliger, repetitiver Programmieraufgaben wird u.a. bei Hunt und Thomas2 beschrieben, denen auch die Verbreitung des Begriffs Code Kata zugeschrieben wird.

Idee

Kata beziehen sich auf sehr kleinteilige, abgeschlossene Problemstellung. Themen können z.B. Schleifenkonstrukte, Strategien zum Filtern von Datenstrukturen oder die Verwendung konkreter API-Methoden sein. Im besten Fall bildet ein Kata im Kern ein Problem ab, das häufig im Programmieralttag auftritt. Durch das wiederholte Lösen solcher Aufgaben verfestigen sich die implementierten Lösungsansätze und können anschließend mit geringem mentalem Aufwand reproduziert werden. Dadurch kann sich der Programmierenden beim Implementieren realer Problemstellungen auf die konzeptionellen Zusammenhänge und größeren Abläufe innerhalb der Software konzentrieren, während einfache Routineaufgaben schnell und ohne Nachdenken gelöst werden können.

Das Kata-Prinzip kann unabhängig der eigenen Programmiererfahrung verwendet werden. Konzentrieren Sie am Anfang auch die elementarsten Bestandteile einer Sprache und Trainieren Sie z.B. die Implementierung von Schleifen oder die Modellierung von Objekten. Versuchen Sie später komplexere Probleme auf Basis dieser Grundlagen zu lösen. Einfache Kata sind programmiersprachenunabhängig. Daher unterstützen sie auch beim Wechsel zu einer neuen Programmiersprache. Durch das Lösen bekannter Problemstellung mit Hilfe der neuen Programmiersprache können Sie sich deren syntaktische Besonderheiten schnell aneignen.

Kata-Sammlungen

Online finden sich verschiedene Sammlungen von Kata. Eine Übersicht über einige diese Zusammenstellungen können Sie diesem Github-Repository entnehmen.


  1. Das Konzept der agilen Softwareentwicklung hat seine Ursprünge im Manifesto for Agile Software Development, das 2001 in Snowbird (Utah) von einer Reihe führender Softwareentwickler formuliert wurde. 

  2. Andrew Hunt, David Thomas, The Pragmatic Programmer, Addison Wesley, 1999 (Aus dem Uni-Netz als Volltext verfügbar