Wie funktioniert ein Coderetreat?
Als Erstes möchte ich erwähnen, dass es verschiedene Arten von Coderetreat gibt, die wohl meist bekannten Varianten davon sind das klassischer Coderetreat und das Legacy Coderetreat. Beide Varianten ähneln sich, haben jedoch unterschiedliche Lernziele. Ich erkläre euch hier, wie ein klassisches Coderetreat läuft und Legacy Coderetreats werde ich vielleicht in einen zukünftigen Artikel behandeln.
Klassiches Coderetreat
Ein klassisches Coderetreat hat ein fest definiertes und erprobtes Format. Eine mögliche Agenda des Tages könnte so aussehen:
Uhrzeit | Aufgabe |
08:00 | Gemeinsames Frühstück |
08:30 | Vorstellung und Intro |
09:00 | Erste Session |
09:45 | Retrospektive und Pause |
10:05 | Zweite Session |
10:50 | Retrospektive und Pause |
11:10 | Dritte Session |
11:55 | Retrospektive |
12:05 | Mittagspause |
13:30 | Einleitung des Nachmittags |
13:45 | Vierte Session |
14:30 | Retrospektive und Pause |
14:50 | Fünfte Session |
15:35 | Retrospektive und Pause |
15:55 | Sechste Session |
16:40 | Retrospektive und Pause |
17:00 | Gemeinsame Abschlussretrospektive |
17:45 | Abschluss |
Wie ihr sehen könnt, strukturiert sich der Tag in verschiedene Sessions (üblicherweise fünf oder sechs), mit anschließenden Retrospektive und eine kurze Pause. Gemeinsam zur jeder Session sind:
- Das Problem, welche wir zu lösen versuchen, nämlich Conway’s Game of Life,
- Die Four Rules of Simple Design,
- Pair-Programming, um der Wissensaustausch zu maximieren,
- Verwendung von TDD,
- Am Ende der Session wird der gesamte Code gelöscht.
Nach jeder Session bilden wir neue Paare. Damit erreichen wir, dass man die Gelegenheit bekommt, im Laufe des Tages mit fünf oder sechs verschiedenen Menschen zusammenzuarbeiten.
Man hat freie Wahl bezüglich Programmiersprache und Entwicklungstools. Die einzige Einschränkung ist, dass es ein Test-Framework dafür geben muss.
Constraints
Bei jeder Session verwendet man unterschiedliche, sogenannten Constraints. Damit die Aufgabe nicht langweilig wird und um der Schwierigkeitsgrad zu verändern. Es gibt viele davon. Für ein normales Coderetreat nutze ich die erste Session, um anzukommen. In diesem Fall ziehe ich es vor, ein einfaches Constraint zu nehmen. Im Laufe des Vormittags ziehe ich gerne die Daumenschrauben fest, um es dann am Nachmittag wieder etwas entspannter weitergehen zu lassen. Wie sich das Ganze gestaltet, ist davon abhängig, ob wir fünf oder sechs Sessions machen und natürlich auch davon, wie erfahren die Teilnehmer sind.
Jede Session steht unter ein anderes Motto und so sind auch die verschiedenen Constraints zu wählen. Oder anders gesagt, die Wahl des Constraints setzt der Akzent. Unterschiedliche Constraints helfen uns unterschiedliche Fähigkeiten zu üben, zwingen uns anders zu arbeiten, werfen uns aus der Komfortzone. Dadurch wird ein maximaler Lerneffekt gewährleistet.
Wie bereits erwähnt, gibt es eine ganze Menge an Constraints, welche bei den Sessions verwendet werden können. Als Beispiel sei Ping-Pong genannt. Bei dieser Variante nimmt jeder Entwickler des Paares eine Rolle. Ein Teilnehmer schreibt die Tests, der andere schreibt die nötige Implementierung, damit der Test erfüllt wird, beide dürfen Refaktorisieren nach Bedarf. Ziel der Übung ist das TDD Zyklus zu üben und zu lernen ihn besser zu beherrschen. Es ist üblich, die Rollen zu wechseln nach einer gewissen Zeit, um Austausch und Lerneffekt zu verbessern. Diese Methode eignet sich gut für die erste Session und wenn die Teilnehmer, weniger Erfahrung mit TDD mitbringen.
Retrospektiven
Nach jeder Session machen wir eine kurze Retrospektive, in der erörtert wird, wie die Session verlaufen ist. Am Ende des Tages gibt es eine gemeinsame Abschlussretrospektive, um den Tag als Ganzes zu betrachten.
So läuft ein Code Retreat ab!