Evolvierbarkeit, Korrektheit, Produktionseffizienz und Reflexion – diese vier Begriffe spielen seit gut einem halben Jahr eine wichtige Rolle in der Softwareentwicklung der SYNAXON AG. Zu verdanken haben wir dies Robert C. Martin (Uncle Bob), der mit seinem Buch „Clean Code“ die Grundlage, für die von Ralf Westphal und Stefan Lieser erdachte Clean Code Developer Initiative bildet. Aufgrund eines Artikels im Javamagazin haben wir uns Anfang des Jahres im Rahmen unserer regelmäßigen Entwicklermeetings erstmalig mit der Clean Code Developer Initiative beschäftigt. Schnell wurde uns klar, dass wir hier ein geeignetes Mittel vor uns hatten, um unsere Arbeit als Softwareentwickler weiter zu professionalisieren. Westphal und Lieser definieren Professionalität wie folgt:
Professionalität = Bewusstheit + Prinzipien
- Ein professioneller Softwareentwickler setzt sich mit dem Metier bewusst auseinander. D.h. er reflektiert über sein Produkt, seine Arbeitsweise, seine Materialien und Werkzeuge. Ein professioneller Softwareentwickler ist nicht einfach zufrieden, wenn sein Chef oder Kunde zufrieden ist. Er ist auch nicht einfach mit dem zufrieden, was ein Hersteller ihm empfiehlt. Stattdessen beobachtet und prüft er ständig seine Ergebnisse und bemüht sich um die Weiterentwicklung seiner selbst wie auch des Metiers.
- Ein professioneller Softwareentwickler hat ein inneres Wertesystem.
Gegen dieses Wertesystem prüft er seine Ergebnisse und Handlungen. Nur, wenn seine Arbeit diesem Wertesystem entspricht, empfindet er sie als gut getan, als professionell. Sein Streben ist es daher, auch unter widrigen Umständen, unter Druck von Kunden oder Herstellern, diesem Wertesystem treu zu sein.
Die Prinzipien und Werte die ein Clean Code Developer beachten sollte, sind größtenteils aus dem oben genannten Buch von Uncle Bob entnommen. Um sich aber nicht in der Vielzahl der hilfreichen Anregungen aus dem Buch zu verlieren, werden bei der CCD-Initiative bestimmte Prinzipien, Regeln und Praktiken strukturiert und in Blöcke zusammengefasst. Dadurch hat man ein System geschaffen, in denen es verschiedene Grade gibt, welche durch unterschiedliche Farben symbolisiert werden. Man durchläuft die verschiedene Grade in frei wählbaren Zeitintervallen und kann sich in seiner täglichen Arbeit auf die Prinzipien und Praktiken des jeweiligen Grades fokussieren. Diese Strukturierung ist sehr hilfreich und lässt sich wunderbar einfach anwenden. Man merkt an vielen kleinen Beispielen, wie simpel es sein kann, die Prinzipien in seiner Arbeit und der Programmierung einfließen zu lassen und den entwickelten Code damit qualitativ besser werden zu lassen.
Um für die anderen Teammitglieder nach außen hin sichtbar zu machen in welchem Grad man sich aktuell befindet und damit einen Austausch unter Entwicklern, die sich im selben Grad befinden zu forcieren, schlägt die CCD-Initiative vor farbige Armbändchen zu tragen. Natürlich ist das kein sklavischer Zwang und so haben sich auch nicht alle Entwickler der SYNAXON AG diese Armbändchen gekauft. Ich für meinen Teil habe jedoch derzeit ein schmuckes, orangenes Bändchen um mein linkes Handgelenk. So schlimm sieht es auch gar nicht aus.
Wichtig zu erwähnen ist zudem, dass die verschiedenen Grade keine hierarchische Wertigkeit haben. Wer am blauen Grad arbeitet ist nicht “besser” oder “weiter” als jemand, der am orangen Grad arbeitet. Die Grade sind nur ein didaktisches Hilfsmittel, um die Gesamtheit des Wertesystems “einfacher verdaubar” zu machen. Die vielen Bausteine lassen sich schlicht in kleinen Happen besser aneignen, als in einem Anlauf. So ist man nach dem letzten Grad auch nicht am Ende, sondern man beginnt wieder mit dem ersten Grad. Die Teilnahme an der CCD-Initiative ist also ein fortlaufender Lernprozess genau wie die Softwareentwicklung ein ständiges Lernen ist. In diesem Sinne sehe ich den noch kommenden und den wiederkehrenden Graden mit gespannter Erwartung entgegen.
Und wenn sie demnächst einen Menschen mit einem blauen, roten, grünen oder gelben Armbändchen gegenüber stehen, haben sie möglicherweise einen Clean Code Developer der SYNAXON AG vor sich.