Coderetreat – Die Meisterübung für Softwareentwickler

Hier kannst du erfahren was ein Coderetreat ist, wie es aufgebaut ist und was man einen Tag lang dort macht. Es lohnt sich. Komm rein.
Inhalt

Das Coderetreat

Wie ich schon öfters erwähnt habe, ist Übung der beste Weg zur Meisterschaft und wir haben bereits früher über Katas und Dojos gesprochen aber ein Coderetreat ist die Meisterübung schlechthin.

Eine kurze Erklärung

Das Wort Coderetreat besteht aus Code und aus Retreat. Mit Code ist gemeint, dass es dabei ums Programmieren geht (zumindest meistens 😊). Das englische Wort Retreat bedeutet Rückzug. In der Hektik des Alltags bleibt uns öfters nicht genug Zeit, um unsere Fähigkeiten zu üben und zu schärfen, deswegen ziehen wir uns zurück, um uns die Zeit dafür zu nehmen.

Die meisten Coderetreats, an den ich teilgenommen oder moderiert habe, fanden am Samstag statt. Das ist auch eine der Gründe, die verdeutlichen sollen, dass es sich dabei um eine ganz besondere Veranstaltung handelt. Für einen Coderetreat nehmen wir uns ein ganzer Tag Zeit, denn wir wollen ja ordentlich üben und vieles dabei lernen.

Das Format wurde von Corey Haines und andere Softwareentwickler ca. 2009 geboren und erfreut sich steigende Beliebtheit. Immer mehr Menschen sehen in Coderetreats eine wertvolle Möglichkeit, Wissen auszutauschen und sich zu verbessern. Jedes Jahr findet das Global Day of Coderetreat statt, in den weltweit viele Menschen zusammentreffen, um mehr als hundert Coderetreats gleichzeitig durchzuführen. Unter Berücksichtigung der unterschiedlichen Zeitzonen erstreckt sich das Event auf etwa 32 Stunden, in den irgendwo auf der Welt gerade einen Coderetreat stattfindet, 😉

Die ewige Leier

Ich habe mal hier, mal da gehört, dass einige Menschen sich darüber beklagen freie Zeit dafür opfern zu müssen, anstatt Arbeitszeit dafür zu investieren. An diese Stelle möchte ich erwähnen und das bezieht sich nicht nur auf Coderetreats, dass als Softwareentwickler uns ein Leben des ständigen Lernens erwartet, wer es noch nicht begriffen hat, sollte sich langsam mit der Idee anfreunden. Keiner leugnet, dass die Firma davon profitiert. Letztendlich sollten wir es aber für uns selbst tun, den besser zu werden steigert unser können, unser Marktwert und unsere Chancen. Ich finde es schön, wenn Unternehmen ihre Mitarbeiter die Möglichkeit bieten sich weiter zu bilden, aber meine Meinung nach ist es unsere eigene Pflicht und wir sollten uns selbst darum kümmern. Auch, wenn dabei ein kleines Teil Freizeit geopfert werden muss.

Versteht mich nicht falsch, dass soll keineswegs bedeuten, dass wir unsere Freizeit für das Lernen und Weiterbilden aufopfern müssen. Das ist weder zweckdienlich noch gesund. Was ich damit sagen will, ist, dass ich der Meinung bin, dass es sich lohnt und dass jeder von uns bereit sein sollte ein kleines Opfer dafür zu bringen.

Nun, kommen wir auf das eigentliche Thema zurück.

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:

UhrzeitAufgabe
08:00Gemeinsames Frühstück
08:30Vorstellung und Intro
09:00Erste Session
09:45Retrospektive und Pause
10:05Zweite Session
10:50Retrospektive und Pause
11:10Dritte Session
11:55Retrospektive
12:05Gemeinsames Mittagessen
13:30Einleitung des Nachmittags
13:45Vierte Session
14:30Retrospektive und Pause
14:50Fünfte Session
15:35Retrospektive und Pause
15:55Sechste Session
16:40Retrospektive und Pause
17:00Gemeinsame Abschlussretrospektive
17:45Abschluss
Coderetreat-Ablauf

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.
  • 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.
  • Verwendung von TDD.
  • Am Ende der Session wird der gesamte Code gelöscht.

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.

Moderation

Ein Coderetreat will moderiert werden. Der Anzahl an Moderatoren richtet sich an der Anzahl der Teilnehmer. Die Moderatoren haben die Aufgabe die ganze Veranstaltung zu begleiten, für die Einhaltung der zeitlichen Vorgaben zu sorgen, mit Rat und Tat den Teilnehmer zu Seite stehen, die Sessions vorzubereiten, die Retrospektiven zu führen und noch viel mehr. Wie ihr sehen könnt, sind eine ganze Menge Aufgaben zu bewältigen, um ein hervorragender Coderetreat auf die Reihe zu bekommen. Ist das gewährleistet, kann ich nur noch Happy Coding wünschen.