Drei Fragen zu Clean Code
Ein Gespräch mit Stefan Lieser über Clean Code, die Einführung in Unternehmen und die Anwendung in Zeiten von KI
Wie lässt sich Software effizient und gleichzeitig nachhaltig entwickeln? Und was können Unternehmen tun, um die Lesbarkeit des Codes zu verbessern, Fehler zu reduzieren und die langfristige Wartbarbarkeit zu vereinfachen? Eine Antwort auf diese Fragen lautet: Clean Code.
Stefan Lieser ist Experte für Clean Code und Flow Design und hat Ende 2008 die Clean Code Developer Initiative mitbegründet. Er arbeitet als Trainer und Berater zu den Themen Clean Code Developer, Entwurf mit Flow Design sowie Softwarearchitektur. In seinem Buch “Mit Flow Design zu Clean Code” beschreibt der Geschäftsführer der CCD Akademie GmbH einen Softwareentwicklungsprozess, bei dem das systematische Zerlegen der Anforderungen sowie der Entwurf im Vordergrund stehen. Somit ist er der richtige Ansprechpartner für die folgenden drei Fragen:
Was ist Clean Code?
Stefan Lieser: Die Bezeichnung geht zurück auf das gleichnamige Buch von Bob C. Martin, das Ende 2008 erschienen ist. [1] Er beschreibt darin diverse Prinzipien, die zu leicht verständlichem und gut testbarem Code führen. Mein Kollege Ralf Westphal und ich haben das Buch zum Anlass genommen, die Clean Code Developer Initiative ins Leben zu rufen. [2] Wir haben dort 45 Prinzipien und Praktiken zusammengetragen. Diese tragen jeweils bei zu den vier Werten Korrektheit, Wandelbarkeit, Produktionseffizienz und Kontinuierlicher Verbesserung.
Im Kern geht es bei Clean Code darum, den Code so zu erstellen, dass die Kosten über die gesamte Lebensdauer der Software minimiert werden. Will man das erreichen, muss sich der Code leicht lesen und verstehen lassen, andernfalls wird es teuer, ihn zu erweitern. Ferner sind automatisierte Tests zwingend notwendig, weil ansonsten die Kosten für den Aspekt Korrektheit zu hoch wären.
Für mich persönlich ist Clean Code das, was wir in unserer Initiative zusammengetragen haben. Das Ziel sind die vier genannten Werte. Erreichen können wir diese, in dem wir Prinzipien beachten und Praktiken einführen und anwenden.
Wie kann man Clean Code im Team einführen und am Leben halten?
Stefan Lieser: Dafür empfehle ich diverse Maßnahmen. Für viele Teams ist es hilfreich, mit einem Training zu beginnen. Dadurch erhalten sie das notwendige Know how. Ferner führt dies zu einem gemeinsamen Verständnis und einer gemeinsamen Sprache innerhalb des Teams. Leider ist es ja so, dass der Prophet im eigenen Haus oft nicht gehört wird. Auch da kann ein Training durch die Außensicht des Trainers helfen, Widerstände zu überwinden.
Im Anschluss sollte ein regelmäßiges “Clean Code Meeting” vereinbart werden, welches wöchentlich durchgeführt wird. Ein weiteres Meeting zu empfehlen, birgt natürlich ein Risiko. Um nicht die Effizienz zu gefährden, sollte das Meeting nicht länger als 30 Minuten dauern. Es bietet Raum für alle Fragen rund um Clean Code. Ein festes Meeting dafür einzuplanen, bietet den Vorteil, dass das Thema auf diese Weise wirklich ernst genommen wird. Jeder im Team weiß dann, dass es einen festen Termin gibt, an dem er seine Fragen und Herausforderungen thematisieren kann. In diesem Meeting sollten die Themen allerdings nicht vollständig in aller Tiefe ausdiskutiert werden. Das kann im Nachgang im kleineren Rahmen von 2-3 Entwicklern passieren, um kosteneffizient zu arbeiten.
Eine weitere Empfehlung sind regelmäßige Code Reviews im ganzen Team. So lange nicht regelmäßig gemeinsam auf den Code geschaut wird, macht letztlich jeder sein Ding. Es ist aber gemeinsame Kommunikation erforderlich, um sich Standards zu setzen und sicherzustellen, dass diese auch eingehalten werden. Diese Code Reviews haben ein anderes Ziel als Reviews unter vier Augen, die häufig asynchron durchgeführt werden. Diese können ein Quality Gate sein und mögen für manche Teams sinnvoll sein. Doch da findet nicht die Kommunikation im gesamten Team statt, die ich meine.
Als dritte Maßnahme kann ein monatliches Pizza und Bier Treffen vereinbart werden, bei dem reihum jeder Entwickler kleine Kurzvorträge vorbereitet. Es fördert die Kommunikation im Team und fordert die Fähigkeit heraus, auch komplexe Zusammenhänge aufzubereiten und zu präsentieren. So lange Clean Code sich im Unternehmen nur in den Köpfen der Entwickler abspielt, wird es keinen dauerhaften Bestand haben. Es muss sichtbar werden und dazu brauchen wir diese gemeinsamen regelmäßigen Termine. Apropos Sichtbarkeit: unser Clean Code Developer Poster, die Postkarten und Spielkarten tragen ebenfalls zur Sichtbarkeit des Themas bei. [3]
Und ich habe noch einen Bonustipp: Bei aller Selbstorganisation hilft es, wenn ein Team Lead das Thema voranbringt. Und auch die Unternehmensführung muss an Bord sein. Ist das Unternehmen ausreichend groß, kann auch ein Clean Code Advisors Team helfen, den Kollegen zur Seite zu stehen.
Ist Clean Code in Zeiten von KI noch erforderlich?
Stefan Lieser: Solange die KI uns “nur” Codeteile bereitstellt, ist es zwingend, dass Entwickler weiterhin dafür sorgen, dass der Code eine hohe Qualität hat. Vielleicht kommen wir dahin, dass wir die KI mit den Anforderungen füttern und der komplette Code hinten raus purzelt. Das würde dann eher die Product Owner in die Pflicht nehmen, ihre Anforderungen präzise zu formulieren. An diesem Punkt sind wir aber noch nicht.
Bislang ist die KI ein Werkzeug, das uns bei der täglichen Codierung unterstützt. Wir werden damit deutlich produktiver. Gleichzeitig ist es aber nach wie vor unsere Verantwortung, den von der KI generierten Code zu testen und für gute Lesbarkeit zu sorgen. Die KI wirft halt auch mal unsauberen Code raus. Das dürfte daran liegen, dass die KI nur das produziert, was sie an Mustern aus Bestandscode ableiten kann. Und da findet sich natürlich auch sehr viel unsauberer Code von minderer Qualität. Es bleibt spannend zu beobachten, wie sich die Tools weiterentwickeln werden.
Eine andere Herausforderung wird bislang ebenfalls noch nicht durch die KI gelöst: Software braucht eine Struktur. Bei aller Liebe zu den Prinzipien genügt es nicht, nur auf der Ebene von Methoden und Klassen zu arbeiten. Irgendwer muss auch über die Struktur nachdenken und das bedeutet vor allem, sich mit den Abhängigkeiten der Bestandteile auseinanderzusetzen. Clean Architecture ist das Stichwort. Dazu ist es notwendig, einen Entwurf zu erstellen. Weil man nur mit den Prinzipien allein an eine Grenze gerät, habe ich das Buch “Mit Flow Design zu Clean Code” geschrieben. Darin geht es um die Frage, wie man Software im agilen Rahmen entwerfen kann. Und dies ist nach wie vor eine Aufgabe, welche die KI nicht unterstützt. Insofern bleiben Clean Code und Clean Architecture relevante Themen für alle Entwickler und Entwicklerinnen.
Stefan Lieser bietet mit seiner CCD Akademie verschiedene Trainings, in denen den Teilnehmenden in vielen praktischen Übungen grundlegende Fähigkeiten vermittelt werden, um im Alltag Clean Code schreiben zu können.
[1] Robert C. Martin: Clean Code: A Handbook of Agile Software Craftsmanship
[2] CCD Initiative
[3] CCD Poster sowie Postkarten und Spielkarten
Hier finden Sie Informationen zum Thema Flow Design.
Wenn Ihnen der Beitrag gefällt oder Sie darüber diskutieren wollen, teilen Sie ihn gerne in Ihrem Netzwerk.
Es gibt weitere Beiträge aus der t2informatik Blogserie “Drei Fragen …”:
Michael Schenkel
Leiter Marketing, t2informatik GmbH