CCD School Retreat Juni 2017 in Au

Einen Einstieg in die Funktionale Programmierung mit F# in Verbindung mit Moutainbiking bietet dieser CCD School Retreat im Bregenzerwald.

Unterrichtsthema: Funktionale Programmierung mit F#

CCD School RetreatFunktionale Programmierung (FP) ist die Zukunft der Softwareentwicklung. Das zeigt die Einwanderung von Elementen der FP in Programmiersprachen wie C# und Java: Lambda-Ausdrücke, Closures, Linq/Streams – und demnächst noch immutability und patter matching zumindest in C# 7.

Und der Grund für diese Veränderung der Aushängeschilder objektorientierter Softwareentwicklung ist: Clean Code. Mit FP steigt die Produktivität, mit FP sind bessere Mittel zur Hand, um die Wandlungsfähigkeit zu erhöhen.

In diesem Retreat geht es darum zu verstehen und in der eigenen Implementation zu erfahren, warum das so ist. Ziel ist, den Teilnehmern eine solide Kenntnis des Mittel einer modernen funktionalen Programmiersprache wie F# zu vermitteln. Sie sollen eine Woche lang das „funktionale Denken“ üben und sich einlassen auf Lösungen, in denen nicht Objekte im Vordergrund stehen.

Das wirkt horizonterweiternd, das wirkt befreiend – und das lässt die Mittel der Programmiersprache des Alltags nochmal in ganz anderem Licht erscheinen. Es geht also nicht darum, für den Umstieg auf F# zu werben. Vielmehr soll mit F# herausgearbeitet werden, was nützlich für produktive und nachhaltige Softwareentwicklung ist.

Der Unterricht wird deshalb auch von zwei Trainern durchgeführt. F#-Expertise und Clean-Code-Expertise sind verteilt, um den Teilnehmern nicht nur maximale Tiefe zu bieten, sondern auch einen lebendigen Dialog zweier Ansätze. Das Konzeptionelle von Clean Code wird so vor den Augen der Teilnehmer immer wieder aktiv verzahnt mit den konkreten Mitteln von F#. Visuelle Lösungsansätze werden überführt in textuelle Lösungen. Und textuelle Lösungen finden visuellen Ausdruck für die Diskussion im Team.

Retreat-Themen in Stichworten:

  • F#
    • First class functions
    • Type inference, programmieren ohne Null („When it compiles it’s correct.“)
    • Purity und immutability
    • Partial Application
    • Tuples und Records
    • Listen, Sequences
    • Union Types und Pattern Matching
    • Active Patterns
    • Units of Measure
    • Datenzugriff mit Type Providers
    • Computation Expressions
    • F# Code automatisiert testen, eigenschaftbasierte Tests
  • Clean Code Development
    • Funktionale Programmierung als Wurzel ursprünglicher Objektorientierung
    • Integration Operation Segregation Principle
    • Principle of Mutual Oblivion
    • Verhaltensmodellierung: Funktionalen Code visualisieren mit Datenflüssen
    • Datenflüsse übersetzen mit den Mitteln der Funktionalen Programmierung
    • Datenmodellierung: Domänendatenmodelle lückenlos beschreiben mit den Mitteln der Funktionalen Programmierung („Make illegal states unrepresentable.“)

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 20. Juni bis 24. Juni 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.

Carsten KönigF# Trainer ist Carsten König, ein langjähriger F#-Enthusiast und deutschlandweit bekannter F#-Promotor als Autor und Sprecher auf Entwicklerkonferenzen.
Guido KarpClean Code Development Trainer ist Ralf Westphal aus dem CCD-School Kollegium.

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.

Logo Adler    

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. Darüber hinaus ist ein Git-Client wie der von GitHub oder Bitbucket vorteilhaft. Beide sind kostenlos.
    Mit F# kann in Visual Studio, VSCode und Xamarin Studio entwickelt werden. Sogar kostenlose Editionen reichen aus. Teilnehmer sollten die Entwicklungsumgebung ihrer Wahl vor Trainingsbeginn bereits installiert haben.
  • 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.