Softwerkskammer

 

Global Day of Code Retreat 2019 in Karlsruhe

In diesem Blogbeitrag sollen die wichtigsten aufgekommenen Punkte des GDCR '19 in Karlsruhe bei Fiducia & GAD IT AG zusammengefasst werden.

Einleitung

In der Einleitung wurde der Ablauf des Tages, die Programmieraufgabe (Vier Gewinnt), Four Rules of Simple Design und PairProgramming vorgestellt.

Um die Teilnehmer in die Einleitung mit einzubeziehen, ließen wir sie nach ihrer "Hauptprogrammiersprache" Gruppen bilden. Somit konnten die Teilnehmer auch sehen, mit wem man in einer der Session ein Pair bilden könnte um eine Programmiersprache auszuprobieren.

Das Finden der ersten Pairs haben wir unterstützt, indem wir alle Teilnehmer gebeten hatten, sich nach ihrer Code-Retreat-Erfahrung in eine Reihe aufzustellen. Die Reihe wurde dann zusammengeklappt, sodass diejenige Person mit der meisten Code-Retreats mit derjenige Person mit am wenigsten Code-Retreats gepaired hat, diejenige Person mit den zweit meisten mit derjenigen Person mit den zweit wenigsten, usw.

Sessions

1. Keine Maus

Diese Constraint zwingt alle Teilnehmer ihre Finger auf der Tastatur zu behalten, einzige Ausnahme, dass Auffinden des Shortcuts.

Session-Retro

Auf Grund des sehr diversen Umfelds (alle Programmiersprachen, Tastaturlayouts, IDEs und Betriebssysteme) stellte sich der Constraint als durchaus große Herausforderung dar.

Bewertung der Facilitators

Diese Constraint war zum lockeren reinkommen gedacht, verfehlte aber ihren Zweck. "Keine Maus" sollte nur angewandet werden, wenn die Pair-Teilnehmer Sprache und IDE (inkl. Tastaturlayout etc.) grundlegend behrschen. Dies war durch die initiale ("zufällige") Zusammenstellung der Pairs nicht gegeben.

2. TDD-Cycle

Beim diesem GDCR in Karlsruhe hatten wir TDD nicht mehr als verpflichtend vorgegeben sondern als eines der Werkzeuge, die man einsetzen bzw. ausprobieren kann. Zumindest in dieser Session sollte die Gruppe dieses Werkzeug aber einmal konzentriert und bewusst ausprobiert.

Session-Retro

Das Constraint wurde positiv aufgenommen. Dadurch, dass man sich in der ersten Session bereits mit der Aufgabenstellung befasst hatte, fiel das schreiben des ersten Tests leichter.

Bewertung der Facilitators

Da TDD in den letzten Jahr teilweise öfters ein kontroverses Thema war, waren wir überrascht, dass die Rückmeldung durchweg positiv war. Daher fühlen wir uns bestärkt in der Entscheidung TDD als optionales Werkzeug anzubieten aber nicht für den ganzen Tag als gesetzt vorzugeben, jedoch eine einzelnen Session zum Fokus zu machen.

3. Domainkonzepte kapseln

Dieses Constraint sollte den Fokus auf die Domäne und ihre Modellierung im Code legen. Die Vorgabe war, dass primitive Datentypen wie String, int, boolean nicht direkt verwendet werden sollten, sondern immer in einer Objekt gekapselt werden sollte, das die Bedeutung für die Domäne beschreibt. Für String also z. B. Name.

Session-Retro

Das Feedback aus der Gruppe war positiv. Ein Pair hat angemerkt, dass sie mehr über die Domäne diskutiert haben als in den Sessions davor.

Bewertung der Facilitators

Das Constraint scheint seinen Zweck erfüllt zu haben.
Beim Typen boolean gab es noch die Diskussion, ob z. B. bei einer Methode isEmpty dieser Typ nicht die Domäne schon ausreichend beschreibt, was man durchaus so sehen kann. Eine Alternative wäre ein Enum oder State-Objekt, dass z. B. die Ausprägungen Empty, PartiallyFilled und Full hat einzuführen.

4. Baby Steps

Als zweite Session nach dem Mittagessen, haben wir uns für Baby Steps entschieden, d.h. jeder Zyklus von einem grünen Commit über einen weiteren Test oder über Refactoring hin zu einem grünen Commit darf maximal zwei Minuten lang sein. Falls die Zeit überschritten wird, muss zurückgesetzt werden. Dieses Constraint fördert das kleinteilige Arbeiten im TDD-Zyklus.

Session-Retro

Ingesamt positives Feedback, der Constraint hat sein Ziel erfüllt. Die Teilnehmer konnte kurze Zyklen erleben. Allerdings gab es auch Probleme, wie z.B. die unterschiedlichen Tasturlayouts die bei einer zeitlichen Einschränkung doppelt im Weg stehen.

Bewertung der Facilitators

Der Constraint hat wieder seinen Zweck erfüllt und die Teilnehmer ein kleinteiliges Arbeiten ausprobieren lassen. Allerdings ist er gerade für Anfänger, die bereits viel neues aufnehmen müssen (GDCR, TDD, etc.), besonders herausfordernd, mit der Gefahr, dass nicht viel mitgenommen werden kann.

5. Simple Methods

Einschränkung auf eine Einrücktiefe pro Methode, sowie eine maximale Methodenlänge von drei Zeilen.

Session-Retro

Der Constraint wurde gemischt aufgenommen. Teilweise wurde mit den der drei Zeilen Beschränkung gekämpft (auch in den Tests). Andere Pairs wiederum empfanden es als einfachen Constraint. Sich daraus ergebende Vorteile wurden erkannt (übersichtliche Methoden, Single-Responsibility pro Methode, etc.).

Bewertung der Facilitators

Der Constraint war als "einfacher" Ausklang des Tages gedacht, um den Teilnehmern ein (kleines) Erfolgserlebnis mit auf den Weg zu geben. Das hat auch für ein paar Pairs ganz gut funktioniert.
Insgesamt hat sich dieses Constraint als das bessere erste Constraint erwiesen. Des Weiteren wollen wir, basierend auf dem Feedback, in Zukunft darauf achten, dass die Constraint-Schwierigkeit zum Ende hin nicht mehr zu stark sinkt.

Closing Circle

Ingesamt hat es den Teilnehmern wieder gut gefallen. Vor allen Dingen TDD und Pair-Programming ohne Leistungsdruck ausprobieren zu können ist gut angekommen. Des Weiteren konnte jeder sich neue Ideen in den verschiedenes Session einholen. Auch die neue Aufgabe (Vier Gewinnt) wurde positiv aufgenommen und hat die erhoffte Abwechslung zum sonst üblichen Game of Life gebracht.

Bewertung der Facilitators

Alles in allem wieder ein sehr erfolgreiches Event. Bis auf das zu schwere erste Constraint und das als zu leicht empfundene letzte Constraint, ging die Auswahl der Constraints sehr gut auf. Obwohl wir dieses Jahr TDD nicht als Vorgabe gesetzt haben, wurde häufig TDD praktiziert.
Wir freuen uns, dass das Event eine immer größer werdende Teilnehmergruppe anzieht. Und dadurch einen großen Pool an Erfahrungen und Erfahrungsaustausch ermöglicht.

Facilitators Lessons-Learned

Bei einem GDCR mit einer derartig großen Vielfalt war "Keine Maus" im Endeffekt doch kein Einsteiger-Constraint. Da uns diese Vielfalt wichtig ist, werden wir den Constraint überdenken.
Indem TDD nicht vorgeschrieben wurde, konnten Pairs sich selbständig dafür oder dagegen entscheiden und damit ihren individuellen Schwierigkeitsgrad bestimmen.
Der große Raum hat sich als Vor- und Nachteil erwiesen. Wir hatten das erste Mal Probleme die Constraintbeschreibung durch den Raum zu rufen. Wir wollen auf das Feedback eingehen, aber auf die vorhandenen Mikrofons wollen wir verzichten. Der klare Vorteil des großen Raums ist die geringe Lärmkulisse während die Teilnehmer in der Session sind.
Unsere Feedback-Wände wurden dieses Jahr, dank der Ankündigung direkt am Anfang, mehr genutzt. Auch die Frage nach "Wie habt ihr vom GDCR-Event erfahren" hat sich als teilweise nützlich erwiesen.

Slides

https://keybase.pub/chr1shaefn3r/slides/ka-gdcr19.pdf

Blogposts

GDCR 19: Teilnehmersicht

Abschluss

Vielen Dank an alle Teilnehmer für das konzentrierte Mitmachen und das positive Feedback. Der zweite ganz groẞe Dank geht an Peter Fichtner der uns bei der Fiducia & GAD IT AG unter optimalsten Bedingungen gehostet hat.
Logo der Fiducia & GAD IT AG