Mittwoch, 1. April 2009

Ausbildung für mehr Softwarequalität - Das Clean Code Developer Camp

Jetzt ist es endlich passiert: Das Professional Developer Camp hat die grundlegende Ausbildung in der Softwareentwicklung aufgenommen. Im Feburar und März 2009 fand das erste Clean Code Developer Camp mit Stefan Lieser und Ralf Westphal als Trainern statt.

image Clean Code ist der Titel eines erfolgreichen Buches von Robert C. Martin, das eine Lanze bricht für mehr innere Qualität von Software. Die Clean Code Developer Initiative baut darauf auf, indem sie die Botschaft des Buches in leicht verdaubare Happen zerlegt, weitere hinzufügt und das Ganze in den Dienst eines Wertesystems für bessere Software stellt.

Ein Wiki dokumentiert diese Bausteine für mehr Korrektheit, Evolvierbarkeit, Produktionseffizienz und Reflexion ausführlich und verweist auf Quellen zusätzlicher Informationen. Zudem findet in einer Google Gruppe und bei XING dazu ein Austausch der Community statt, der die Bausteine weiterentwickelt und Fragen zur Umsetzung in der Praxis erörtert. Jeder interessierte Softwareentwickler kann sofort seinen eigenen Weg zu mehr Softwarequalität beginnen.

So kann es sein und so soll es sein. Allerdings bedeutet das vielfach, eigene, womöglich jahrelang gepflegte Gewohnheiten mit viel Selbstdisziplin unter dem Sperrfeuer des Tagesgeschäftes zu verändern. image Programmierer werden also quasi zu Umprogrammierern ihrer selbst. Denn Projekte, die bisher vor allem darauf achten, unmittelbaren Kundenutzen zu generieren, programmieren ihre Entwickler auch in diesem Sinne. So entstehen Softwaresysteme, die zwar funktionieren - unter der Haube aber unter hoher innerer Entropie des Codes und einer Qualitätsschuldenlast (technical debt) leiden. Und so haben es ihre Entwickler denn auch schwer, sich dieser Programmierung (im doppelten Sinn) zu entziehen.

Schade wäre es, wenn die Veränderungen, die CCD bedeutet, der Nutzen, den CCD für die Softwareprojekte bietet, deshalb bald im Sperrfeuer des Tagesgeschäftes einknicken würden. Stefan Lieser und Ralf Westphal, die Gründer der CCD Initiative, haben die Bausteine zwar schon in Modulen zusammengefasst, die die Einarbeitung erleichtern. Dennoch bedeutet Clean Code Development teilweis erhebliche Veränderungen. Sich im Tagesgeschäft neue Gewohnheiten "draufzuschaffen" ist nicht leicht.

Aus diesem Grund bietet das Professional Developer College Hilfe bei diesen Veränderungen. Die Clean Code Developer Camps sind als Zonen des geschützten, effizienten Lernens gedacht. Sie vermitteln die Bausteine des CCD-Wertesystems in 5-Tage-Blöcken mit vielen praktischen Übungen. Alte Gewohnheiten werden abgelegt, neue Gewohnheiten werden "konditioniert". Denn nicht weniger als "Konditionierung" ist nötig, um die Prinzipien, Regeln und Praktiken von Clean Code Development im täglichen Projektkampf auch einzusetzen.

Die Trainer legen daher viel Wert auf die Arbeit an Projekten während der Camps. 75% der Zeit ist Projektarbeit - allein, im Pair Programming oder in Gruppen. Dabei geht es dann allerdings nicht um die üblichen aktuellen oder neuesten Technologien, sondern um den richtigen Umgang mit den aktuellen. Statt Technologieseminar - wie es viele gibt - ist das CCD Camp Grundlagentraining. Es vermittelt, was eigentlich schon in Ausbildungen wie zum Fachinformatiker oder Dipl. Inf. hätte vermittelt werden sollen - aber nur selten wird.

Dem CCD Camp geht es nicht um schnellere Algorithmen. Es geht ihm auch nicht um Entity Framework  statt ADO.NET. Ebenfalls nebensächlich sind Visual Studio 2010, dynamische Programmierung, WCF, WF, WPF, imageVSTO oder andere Akronyme.

Stattdessen konzentriert sich das CCD Camp in seinen Blöcken auf den Rahmen für den Einsatz von  Technologien. Technologien sind Werkzeuge, die man nicht nur unsachgemäß oder sachgemäß einsetzen kann, sondern auch kurzsichtig oder nachhaltig. Und gerade Nachhaltigkeit findet in den üblichen Ausbildungen eben kaum Beachtung. Nachhaltigkeit jedoch ist es, die den Erfolg einer Software über längere Zeit sichert.

 

  • Dazu gehört, dass sie jederzeit nachweisbar korrekt ist und auch nach Veränderungen bleibt.
  • Dazu gehört, dass sie sich neuen Anforderungen über die Zeit nicht immer schwerer anpassen lässt.
  • Dazu gehört, dass ihre Produktion so effizient wie möglich, d.h. systematisch und automatisiert ist.
  • Und schließlich gehört zur Nachhaltigkeit die Arbeit der Softwareproduzenten an sich selbst. Denn ohne solche "Selbstverbesserung" bleiben sie im Vergleich zum Technologstehen

Das erste Clean Code Developer Camp im Februar/März mit diesem "Curriculum der anderen Art" schon ernst gemacht.  10 Teilnehmer hatten sich darauf eingelassen, 2 x 5 Tage lang nicht "neuen Schnickschnack" zu lernen, sondern an ihren fundamentalen "Codiermustern" zu arbeiten.

image

Sogar eine Führungskraft hatte sich in das Camp "verirrt" - und stand am Ende der Begeisterung der "normalen" Softwareentwickler-Teilnehmer über den Nutzen von CCD in nichts nach. Das hat die Trainer Stefan Lieser (3. v.r.) und Ralf Westphal (2. v.l.) besonders gefreut. Denn Clean Code Developer kann jeder Entwickler durch Eigeninitiative werden - ganze Teams brauchen dafür jedoch die Rückendeckung des Management.

Diesem Unterschied trägt das nächste Clean Code Developer Camp insofern auch Rechnung, als dass es die CCD-Bausteine in drei Staffeln vermittelt:

  • Staffel 1: Bausteine für mehr Korrektheit und höhere Evolvierbarkeit von Software, 2 x 5 Tage ab Ende Mai 2009 [mehr Info]. Diese Staffel richtet sich an Entwickler, die zunächst eher für sich CCD betreiben müssen oder wollen.
  • Staffel 2: Bausteine für mehr Produktionseffizienz in der Softwareentwicklung, 5 Tage im Juni 2009 [mehr Info]. In dieser Staffel geht es um Pratiken und Werkzeuge, die Auswirkungen auf das ganze Team haben.
  • Staffel 3: Bausteine für die Reflexion auf allen Organisationsebenen, 5 Tage - bisher noch ohne Termin [mehr Info]. Mit der Staffel geht das Camp über die Softwaretechnik hinaus in die Kommunikation bzw. Organisation in und von Teams. Ab einem gewissen Punkt lassen sich weitere Verbesserung im Produkt nur erreichen, wenn "dem Zwischenmenschlichen" gleiche Aufmerksamkeit geschenkt wird. Die Japaner sagen: "mono tsukuri wa, hito tsukuri!", d.h. in etwa "Wie die Menschen, so ihre Produkte."

Clean Code Developer kann jeder einfach so werden. Wer jedoch schnell die Früchte von Clean Code Development ernten möchte, dem empfiehlt das Professional Developer College einen "Kickstart" durch Besuch des CCD Camp. Asmund Stensrud, ein Teilnehmer des ersten CCD Camp, fasst den Nutzen des CCD Camp so zusammen:

image Durch das CCD Camp realisieren wir sehr schnell eine Kostenersparnis im Allgemeinen und vor allem einen Imagegewinn beim Kunden, für den Qualität eine Selbstverständlichkeit ist. Wir erwarten nach Auslieferung weniger unangenehme Gespräche mit dem Kunden über Programmierfehler.
Asmund Stensrud, Entwicklungsleiter und Geschäftsführung, www.unique-solutions.eu

 

P.S.: Waum ist es eigentlich "endlich passiert" das CCD Camp? Weil das Professional Developer College mit der Idee einer ähnlichen technischen Grundlagenausbildung vor einigen Jahren gegründet worden war - seitdem sich aber vor allem auf Softskill-Trainings konzentriert hatte. Damals war der Arbeitstitel für ein längeres technisches Curriculum noch "Microsoft University". Die Kombination aus Technik+Grundlagen+Softskills war damals aber vielleicht noch etwas ihrer Zeit voraus. So war es schwer, dafür das nötige Interesse in der Community und bei Trainern zu generieren. Inzwischen hat sich die Branche jedoch verändert. Auch auf der .NET-Plattform gibt es nun Berge an altem, quasi unwartbarem Code und die Frage ist, wie die Situation verbessert werden kann. Neuentwicklungen sind oft nicht möglich. Und wenn, wie sollten die aussehen, um die Fehler der Vergangenheit nicht zu wiederholen? Grundlagen in punkto Softwarequalität sind also gefragt. Ebenfalls auf der nicht-technischen Seite ist das Interesse gestiegen. Softskills sind in aller Munde; die OOP 2009 stand zum Beispiel in ihrem Zeichen. So ist nun scheinbar die Zeit reif für eine Ausbildung "der anderen Art". Die bietet das Clean Code Developer Camp.