Coding Dojo

Saubere Softwareentwicklung will geübt werden. Dafür braucht es Übungsaufgaben. Im Coding Dojo sammelt die Clean Code Developer School solche Aufgaben unter der etablierten Bezeichnung “Kata”. Die Katas haben verschiedenen Umfang, um für jeden Geschmack, jedes Niveau und jedes Zeitbudget etwas zu bieten:

  • Function Katas/Code Katas sind kleine Aufgaben, deren Problemstellung ein Algorithmus ist. Ihre Lösung besteht aus einer Funktion – vorbehaltlich eventueller Refaktorisierungen.
  • Class Katas sind Aufgaben, deren Problem sich mittels einer Klasse und mehrerer Funktionen lösen lässt – wieder vorbehaltlich eventueller Refaktorisierungen. Hier geht es eher um Abstrakte Datentypen oder Adapter.
  • Library Katas stehen für Probleme, deren Lösung mehrere Klassen erfordern, die dann in einer Bibliothek zusammengefasst werden können. Das können umfangreichere Adapter oder auch kleine Prozesse sein.
  • 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 Ressourcenzugriff. 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 Implementation 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.

Was Sie mit den Katas üben können, ist unterschiedlich. Bei Functions und Classes geht es eher um TDD, die Anwendung von CCD Prinzipien und Testtechniken wie Attrappen, Gold Master usw. Bei Libraries und Applications kommen dann weitere Techniken hinzu wie Dependency Injection oder Praktiken wie Versionskontrolle. Vor allem gewinnt dann jedoch ein expliziter Entwurf Gewicht. Bei den Architecture Katas ist der dann womöglich sogar das einzige zu produzierende Ergebnis – allerdings auf einem anderen Abstraktionsniveau wie bei den Application Katas.

Für Library, Application und Architecture Kata ist auch das Vorgehen übenswürdig. Es soll nämlich inkrementell im Sinne der Agilität sein. Die Katas geben dann Hinweise, in welchen Ausbaustufen Sie vorgehen sollten. Versuchen Sie dann, sich wirklich immer nur auf die aktuelle zu konzentrieren, ohne Informationen der weiteren hinzuzuziehen.

Wenn Sie sich automatisch über neue Katas informieren lassen wollen, abonnieren Sie den RSS-Feed dieser Seite.

Function Katas

Class Katas

Library Katas

Application Katas

Architecture Katas

Refactoring Katas

Agility Katas

Achtung: Wenn Sie den vollen Spaß der Agility Katas genießen wollen, lesen Sie die Beschreibung der Anforderungen von Folgeiterationen erst nach der Implementation der vorherigen. Nur so setzen Sie sich der vollen Überraschung aus und erfahren, ob Ihr Code wirklich evolvierbar ist.

Weitere Code Kata Sammlungen

Als kleine Hilfestellung für das Herangehen an die Aufgaben mit Flow Design & Co gibt es noch eine Quick Reference: das Flow-Design Cheat Sheet.