Einstieg in die Entwicklung von Clean Code ausgehend von nur einem Prinzip in Verbindung mit Moutainbiking bietet dieser CCD School Retreat im Bregenzerwald.
Unterrichtsthema: Bottom-up Clean Code Development
Dieser Retreat beginnt die Entwicklung von Clean Code in der letzten Phase der Softwareproduktion: Implementation. Ausgehend von testgetriebener Codierung werden Kriterien für Verständlichkeit und Wandelbarkeit von Code vermittelt. Am Anfang steht dabei sogar nur ein Prinzip: das Integration Operation Segregation Principle (IOSP).
Das IOSP dient als Leitstern für die Strukturierung von Code zieht schrittweise andere Prinzipien wie SRP, OCP, ISP nach sich.
Testgetriebene Codierung wird jedoch nicht einfach nach üblicher TDD-Manier betrieben, sondern in einer Weise, bei der das Refactoring entweder unnötig oder unvermeidbar ist. Mit Informed TDD und TDD as if you meant it kommt mehr Zug in die TDD-Praxis. Und gleichzeitig werden Rätsel um Integrationstests vs Unit Tests und spröde Tests gelöst.
Anschließend wendet sich der Retreat der vorgelagerten Phase der Softwareproduktion zu: Entwurf. Denn Clean Code beginnt schon vor der Codierung. Clean Code ist das Ergebnis eines systematischen Nachdenkens über Lösungen vor und unabhängig von Code.
Der Weg zu Clean Code führt dabei über eine radikale Objektorientierung, die sich rückbesinnt auf das, was der Vater des Begriffs, Alan Kay, usprünglich im Sinn hatte. Mit seinen eigenen Worten: „The big idea is messaging.“
Die Teilnehmer üben die deklarative Modellierung von Lösungsansätzen zunächst auf funktionaler Ebene, um danach höhere Modulebenen mit einzubeziehen (Klassen, Komponenten usw.).
Ziel ist, im Team leichter ein gemeinsames Verständnis für Lösungen zu bekommen und systematisch Vorgaben für eine saubere Codierung zu erarbeiten. Leitsterne sind hierbei das DDD-Konzept der ubiquitous language sowie das Principle of Mutual Oblivion (PoMO). Weitere Prinzipien aus den Graden der Clean Code Developer Initiative finden natürlich ebenfalls nach Bedarf Berücksichtigung.
Am Ende haben die Teilnehmer aber nicht nur eine klarere Vorstellung davon, was es heißt, konsequent Clean Code zu produzieren, sondern auch ein aktualisiertes Verständnis der altehrwürdigen Disziplin Objektorientierung.
Retreat-Themen in Stichworten:
- TDD 2.0 – Mit sauberem Code ein Sicherheitsnetz spannen
- Integration Operation Segregation Principle
- Informed TDD
- TDD as if you meant it
- Gerüsttests
- Bessere Aufwandsabschätzungen durch Differenzierung von Arbeitsweisen
- Radikale Objektorientierung – Sauberen Code sauber vordenken
- Die Anforderung-Logik-Lücke
- Die ursprüngliche Definition der Objektorientierung
- Principle of Mutual Oblivion
- Verhaltensmodellierung mittels Datenflüssen
- Übersetzung von Datenflüssen mit den Mitteln funktionaler Programmierung
- Die Modulhierarchie
- Die Kommunikation im Team mit einer visuellen Sprache verbessern
Zusätzlicher Lernkontext: Mountainbiking
Clean Code ist nicht nur eine Sache von Codestrukturen. Clean Code beginnt vielmehr beim Softwareentwicklungsprozess. Nur ein sauberer Prozess führt zu sauberem Code.
Besonders herausfordernd ist für diesen Softwareentwicklungsprozess die Unschärfte und Variabilität der Anforderungen. Flüssige Produktion soll trotz hoher Unsicherheit und ständiger Überraschungen erreicht werden. Wie kann das funktionieren?
Impulse für eine flüssige Softwareproduktion kann das Mountainbiking liefern. Es ist eine Aktivität, bei der auch mit unterschiedlichen Unsicherheitshorizonten umgegangen werden muss – und trotzdem verlässlicher Fortschritt erzielt werden soll: sowohl bergauf wie bergab.
Statt dies jedoch in einem Seminarraum zu vermitteln, werden die Teilnehmer zu diesem Zweck körperlich aktiv. Sie sollen im wahrsten Sinn des Wortes Prinzipien flüssiger Produktion erfahren.
Durch den Wechsel der Methode von geistiger zu körperlicher Betätigung wird erstens der Geist zwischen den Unterrichtseinheiten im Seminarraum entlastet und zweitens die Verinnerlichung gesteigert. Es kommen Empfindungen und Emotionen ins Spiel, mit denen der Blick über den Tellerrand der Gewohnheiten leichter fällt.
Welche Erkenntnisse die Teilnehmer beim Mountainbiking gewinnen, wird im Anschluss an die Aktivität jeweils in einer Retrospektive gehoben.
Format
Die Retreat-Tage haben eine fixe Gliederung:
- 08:30 bis 12:00: Unterricht
- 13:00 bis 16:00/17:00: Mountainbiking (oder andere Aktivität je nach Wetterlage)
- 19:30 bis 22:00: Unterricht
Jeden Tag stehen 6 Stunden Unterricht in Sachen Softwareentwicklung und zusätzlich 3-4 Stunden Aktivität in einem anderen Kontext auf dem Programm.
Termin
Der Retreat ist ein 5-tätiges Training vom 16. Mai bis 20. Mai 2017.
Anreise sollte am Vortag stattfinden. Die Abreise kann am letzten Tag ab 17h erfolgen.
Die maximale Teilnehmerzahl ist begrenzt auf 6, um ein intensives Erlebnis zu garantieren. Eine minimale Teilnehmerzahl gibt es nicht. Der Retreat findet in jedem Fall statt.
Clean Code Development Trainer ist Ralf Westphal.
Veranstaltungsort
Der Unterricht in Sachen Clean Code Development erfolgt im Hotel Rössle in Au, Österreich. Von dort aus starten auch die Mountainbike-Touren mit der ortsansässigen Bike Schule.
Anreise
Die Anreise nach Au auch mit öffentlichen Verkehrsmitteln ist gar nicht schwierig. Mit dem Flugzeug bis nach Zürich, dann mit der Bahn nach Bregenz, von dort mit dem Landbus nach Au. Oder mit dem Zug nach Lindau oder Dornbirn und dann den Landbus nehmen. Das Landbus-Netz ist in Österreich wunderbar ausgebaut.
Preis
Der Preis für intensive 5 Tage Training inkl. Mountainbike-Aktivitäten beträgt 950,00€ zzgl. 19% MwSt pro Teilnehmer (1.130,50€ inkl. MwSt).
Die Anmeldung muss spätestens bis 2 Wochen vor dem ersten Trainingstag erfolgen. Frühere Anmeldungen können bis 2 Wochen vor dem ersten Trainingstag kostenlos storniert werden. Nach diesem Zeitpunkt wird der volle Trainingspreis auch bei Nichterscheinen fällig.
Achtung: Nicht enthalten im Trainingspreis sind Unterkunft und Verpflegung und Kosten für die Ausrüstung rund ums Mountainbiking (z.B. Leihgebühren für Bike und Helm). Alle Teilnehmer müssen sich auch selbst um Übernachtungsmöglichkeiten kümmern. Die Buchung eines Halbpension-Angebotes ist sinnvoll. Empfehlenswerte und nahegelegene Hotels sind:
Anmeldung
Organisatorisches
- Unterrichtsthema: Alle Teilnehmer benötigen einen Laptop mit Entwicklungsumgebung. Es wird viel codiert während des Unterrichts. Außerdem sollten sie vertraut sein mit einem Testframework wie JUnit/Nunit/MSTest, der ebenfalls installiert ist. Darüber hinaus ist ein Git-Client wie der von GitHub oder Bitbucket vorteilhaft. Beide sind kostenlos.
Der Retreat bevorzugt keine Programmierplattform/-sprache. Allerdings sind Sprachen mit Elementen der Funktionalen Programmierung wie Lambda-Ausdrücke/Closures im Vorteil. (Teilnehmer, die in Java entwickeln, sollten vorher auf Version 8 upgraden.) - Mountainbiking: Für das Mountainbiking gibt es keine speziellen Voraussetzungen außer Interesse und einer gewissen Grundfitness. Teilnehmer, die noch keine Erfahrung mit dem Mountainbiking haben, werden am ersten Tag an einem Grundkurs teilnehmen. Anschließend werden die Touren auf die Gruppe angepasst.
Bitte mitbringen: Sportsachen für gutes, aber auch weniger gutes Wetter. Für die Füße bitte festes Schuhwerk! Fahrradhandschuhe sind vorteilhaft. Helm und Bike können vor Ort geliehen werden.