Das Clean Code Developer Camp bringt unserem
ganzen Entwickler-Team durch sein
einheitliches Methoden-Training mehr Effizienz
und eine Kostenersparnis durch weniger Fehler
im Code.
Asmund Stensrud, Entwicklungsleiter & Geschäftsführung, www.unique-solutions.eu
Mit vielen praktischen Übungen haben die beiden
äußerst kompetenten und leidenschaftlichen Trainer
mir ein Wertesystem vermittelt, das es mir
in Zukunft ermöglichen wird, noch professioneller zu arbeiten.
Ronny Leger, Softwareentwickler, www.runtime.de
Das Clean Code Developer Wertesystem ist in so genannte Grade eingeteilt, die es erleichtern, sich die Gesamtheit seiner Bausteine anzueignen. Sie ordnen die Prinzipien, Regeln und Praktiken so, dass sie zunächst nur den einzelnen Entwickler betreffen und dann schrittweise über ihn hinaus reichen.
Ein soziales System wie es ein Team oder ein ganzes Unternehmen ist, kann kaum das CCD-Wertesystem "auf einen Schlag" als Grundlage für seine Arbeit einführen. Es ist illusorisch anzunehmen, die Bausteine könnten "einfach so verordnet" werden.
Stattdessen ist eine "Umgewöhnung" in kleinen Schritte ausgehend von der kleinsten Einheit der Organisation, dem Entwickler, notwendig. Dass jeder für sich die "innere Qualität" des Codes, an dem er arbeitet, ständig verbessert, bedarf einfach keiner teuren und schwierigen Veränderung einer ganzen Organisation.
Das Clean Code Developer Camp - Single bietet intensives Training, um den Übergang vom bisherigen "so haben wir es schon immer gemacht" zum zukünftigen "clean code" so einfach und schnell wie möglich zu vollziehen.
Eingefahrene Gewohnheiten und überkommene Vorgehensweisen werden abgelegt. Systematisches Denken und Vorgehen in Bezug auf Code Qualität, scharfer Blick für Technical Debt und pragmatische Werkzeuge in Form von Prinzipien, Regeln und Praktiken zur nachhaltigen Verbesserung der Softwarequalität werden erworben.
Die Teilnehmer lernen, Code systematisch und automatisiert zu testen. Solche Tests sind neben der konsequenten Nutzung eines Versionsverwaltungswerkzeugs das Fundament jeder Veränderung an einer Codebasis. Ohne sie kann nicht garantiert werden, dass Verbesserungen nicht in Wirklichkeit "Verschlimmbesserungen" sind. Was dem Bauingenieur die statischen Berechnungen, das sind dem Softwareentwickler die automatisierten Tests. Am Anfang aller Hebung der Softwarequalität steht daher die jederzeit auf Knopfdruck gewinnbare Kenntnis über die Korrektheit des Codes. Erst durch systematische automatisierte Tests kann überhaupt nachvollziehbar und überprüfbar gemacht werden, ob Code wirklich den funktionalen und nicht funktionalen Anforderungen des Kunden entspricht.
Auszug aus dem Lernstoff:
- Unit Tests
- interne Strukturen testen
- private Strukturen testen
- Test Patterns
- Testen mit Attrappen
- Akzeptanztests
- Semantische Kontrakte
- Testen mit BDD
- Testen mit Fit
- Crash Tests
- Integrationstests
- Test Coverage Analyse
- Grundlagen der Versionsverwaltung mit Subversion
Sobald Code auf einem soliden Fundament von automatischen Tests steht, kann mit seiner Veränderung hin zu mehr "innerer Qualität" begonnen werden. Dann geht es um Strukturen, die flexibel wie auch verständlich sind und sich weiterentwickeln lassen. Kurz: dann kann es mit der Arbeit an der Evolvierbarkeit los gehen.
Evolvierbarkeit ist eine innere Eigenschaft von Code, die sich Kunden kaum explizit wünschen. Sie setzen sie einfach voraus. Leider ergibt sie sich jedoch nicht von selbst, weil Software immateriell ist. Im Gegenteil! Evolvierbarkeit herzustellen und zu erhalten ist harte Arbeit, die nicht nebenbei stattfinden darf. Evolvierbarkeit ist genauso zu planen wie Funktionalität und Performance.
Deshalb lernen die Teilnehmer in Block II Prinzipien, Regeln und Praktiken kennen, die zu evolvierbarem Code führen. Sie lernen schlechten Code zu erkennen - unabhängig davon, ob er funktioniert oder nicht - und Wege, um seine Qualität zu verbessern. Und sie lernen, schlechten Code von vornherein zu vermeiden durch systematischen Softwareentwurf.
Auszug aus dem Lernstoff:
- Prinzipien und Regeln
- DRY
- YAGNI
- Single Responsibility
- Single Level of Abstraction
- Separation of Concerns
- Law of Demeter
- Inversion of Control
- Pfadfinderregel
...
- Refaktorisierungsmuster
- Rename
- Extract Method
- Extract Interface
...
- Codeanalyse
- Statische Analyse (Metriken, Abhängigkeiten)
- Dynamische Analyse (Performance, Speicherverbrauch)
- Systemorientierte Programmierung
- Strukturelemente von Softwarearchitekturen
- Systematischer Softwareentwurf von der Anforderung bis zum Visual Studio Projekt
- Contract-first Design
Der Unterricht wird im Team-Teaching Verfahren durchgeführt: 2 Trainer sind die ganze Zeit anwesend und betreuen die Teilnehmer intensiv. Der Praxisanteil liegt bei 75% wobei sich Stillarbeit, Pair Programming und Gruppenarbeit abwechseln.
Das didaktische Konzept des Trainings stellt die Selbsterfahrung, d.h. das Lernen durch eigenes Tun in den Mittelpunkt. Feedback durch zwei Trainer sowie die anderen Teilnehmer verkürzen die Lernschleifen auf ein Minimum.
Darüber hinaus profitieren die Teilnehmer von den unterschiedlichen Perspektiven zweier Trainer, die Inhalte verstärken oder konstrastieren helfen. Beides befördert den Lernfortschritt und die Bildung einer eigenen Meinung. Denn die ist nötig, weil das Training "nur" Hilfe zur Selbsthilfe sein will.
Dazu gehört auch die Dauer des Trainings von 2 x 5 = 10 Tagen. Denn nur wenn in einer intensiven und geschützten Umgebung die neuen "CCD-Gewohnheiten" über eine ausreichende Zeit kontrolliert eingeübt werden, besteht eine realistische Chance auf ihre Übertragung in den Projektalltag, in dem der Teilnehmer wieder auf sich gestellt ist.
Allerdings: Zu jedem Training gehört auch ein Diskussionsforum im Internet, indem sich die Teilnehmer zwischendurch und auch anschließend untereinander oder mit den Trainern austauschen können. Das Training beschränkt sich also nicht nur auf die Dauer der Trainingsblöcke, sondern geht weiter...
Die Teilnehmer sollten soviel Erfahrung mit dem .NET Framework haben, dass sie Visual Studio und eine .NET Sprache flüssig beherrschen. Die Kenntnis objektorientierter Grundlagen wie Klasse, Instanz, Interface ist Voraussetzung. Unterrichtssprache ist C# - die Übungen kann jeder für sich aber auch in Visual Basic .NET durchführen.
Die Teilnehmer bringen ihre eigenen Laptops inkl. WLAN-Karte mit, auf denen Visual Studio 2008 (ab Std Edition) und mindestens SQL Server Express 2005 installiert ist.
Jeder Teilnehmer sollte ausreichende Rechte auf seinem Laptop für die Installation weiterer Werkzeuge während des Trainings haben, z.B. ReSharper, VisualSVN, Tortoise, Source Monitor, NDepend, dotTrace...
Für einige kostenpflichtige Tools bietet das CCD Camp Rabatte bis zu 30%. Alle Tools sind für die Dauer des Trainings in jedem Fall aber zumindest als Eval-Versionen verfügbar.
Trainigszeiten jeden Tag mindestens von 8:30h bis 17:30h inkl. 45min Mittagspause. Getränke sind im Trainingspreis enthalten.
Achtung: Das Training bietet kein "Vorlesungsskript". Unterstützende Literatur ja - darin finden sich die Darstellungen der Trainer jedoch nicht unbedingt und schon gar nicht 1:1 wieder. Im Sinne des Selbstlernens (s.o. Trainingskonzept) setzt das Training vielmehr auf aktive Aneignung des Gesagten durch Notizen, die sich jeder Teilnehmer in der für ihn eigenen Art macht. Erst so wird aus den "Daten", die die Trainer "senden", Information und dann Wissen.
Vor Beginn von Block I erhalten die Teilnehmer eine Hausaufgabe, deren Lösung sie zum Trainingsbeginn mitbringen sollen. Das Training baut darauf auf. Für die Realisierung der Hausaufgabe sind min. 10 Stunden einzuplanen.
Zwischen Block I und II bekommen die Teilnehmer wiederum eine Hausaufgabe, deren Lösung sie zum Beginn von Block II mitbringen sollen. Das Training baut darauf auf. Für die Realisierung dieser Hausaufgabe sind min. 15 Stunden einzuplanen.
Das Clean Code Developer Camp - Single findet in 2 Blöcken von je 5 Tagen statt. 2 Trainer bieten 10 Tage intensive Einführung in die Praxis des CCD-Wertesystems.
Kosten des CCD Camp Single: 4.500,00 EUR zzgl. MwSt. pro Teilnehmer.
Frühbucher erhalten 5% Early-Bird Rabatt auf diesen Preis. Nimmt mehr als 1 Teilnehmer aus einer Organisation teil, sinkt der Preis pro Teilnehmer dieser Organisation ebenfalls um 5% Gruppenrabatt.
Preis pro Tag: 405,00 EUR zzgl. MwSt (nach Abzug aller Rabatte)
Preis pro Trainer-Tag: 202,50 EUR zzgl. MwSt (nach Abzug aller Rabatte)
Trainer: Stefan Lieser und Ralf Westphal
Die aktuellen Termine und Anmeldeinformationen für alle unsere Trainings finden Sie auf der Terminseite.