Kennst du die Gedanken «Ach, eigentlich könnte ich den Code viel cleaner schreiben aber die Zeit reicht leider nicht? Ich müsste zu viel anpassen.»
Wenn dir diese Frage bekannt vorkommt, dann bist du hier genau richtig. Wenn nicht, dann ist dieser Blogbeitrag ein super Einstieg, um sich mit Clean Code auseinanderzusetzen.
Wieso denn überhaupt Clean Code – mein Code funktioniert doch?
Clean Code ist ein Konzept der Softwareentwicklung. Es zielt darauf ab, den Code so zu gestalten, dass er nicht nur funktioniert, sondern auch leicht verständlich, wartbar und erweiterbar ist. Der Begriff wurde hauptsächlich von Robert C. Martin geprägt, einem Softwareentwickler und Autor, der auch als «Uncle Bob» bekannt ist. Hierfür möchte ich dir eines seiner Bücher empfehlen «Clean Code: A Handbook of Agile Software Craftsmanship».
Tiefer möchte ich gar nicht darauf eingehen, was Clean Code alles umfasst, denn dazu gibt es bereits viele gute Beiträge. Hier findest du viele spannende Bücher wie auch empfehlenswerte Artikel. Wichtig zu wissen ist, dass ein funktionierender Code nicht gleich ein guter Code ist. Entwicklerinnen und Entwickler, die zu einem späteren Zeitpunkt in euer Projekt einsteigen, werden es euch danken, versprochen ;).
«It is not enough for code to work. » – Robert C. Martin
Nun kommen wir zum Kernpunkt: «Die fehlende Zeit für deinen Clean Code».
Wie komme ich zu meinen fehlenden zeitlichen Ressourcen?
Die Herausforderung beim Clean Coding ist nach meiner Erfahrung nicht, dass man es nicht machen möchte. Welche Entwicklerin oder Entwickler hat schon nicht Bock einen richtig grossartigen Code zu schreiben? Das schwierige daran ist es aber den Mehrwert an den Kunden zu verkaufen beziehungsweise die Zeit dafür bezahlt zu bekommen. Es steht ausser Frage, dass zu Beginn erheblicher Aufwand erforderlich ist. Vor allem die sorgfältige Ausarbeitung der Architektur dauert seine Zeit. Zusätzlich muss man die Clean Code Rules und deren Prinzipien verstehen. Im Team ist ein klares Verständnis von allen Mitgliedern äusserst wichtig. Und wenn ich von Team spreche, dann gehören hier nicht nur die Programmiererinnen und Programmierer dazu. Auch Product Ownerinnen und Product Owner sowie Projektleiterinnen und Projektleiter sollen den Sinn dahinter verstehen.
Überlege dir deine Argumente also gut, so dass in erster Linie dein Team und auch die Kundschaft in qualitativ hochwertigen Code investieren will.
Erkläre es dem Kunden auf Grund von konkreten Beispielen:
- «Kürzlich habe ich einen Unit-Test erstellt und dabei einen Fehler im Code entdeckt, diesen konnte ich direkt beheben. Das verdeutlicht, dass je mehr Tests wir schreiben, desto stabiler wird das Produkt.»
- «Derzeit verfügen wir über keinerlei automatisierte Tests. Bei jeder Änderung die ich vornehme, besteht die ständige Sorge etwas zu beschädigen. Leider bewahrheitet sich diese Befürchtung häufig.»
- «In gewissen Bereichen des Codes gibt es sehr viele Unklarheiten. Würden wir den Code refactoren, wären zukünftige Änderungen viel schneller und somit kostengünstiger umzusetzen.»
- «Wir haben für dieses überaus wichtige Feature lediglich eine Person, die den Code versteht. Wenn diese Person ausfällt, stehen wir vor einer grossen Herausforderung. Ich würde ein Refactoring empfehlen: Der Code soll so geschrieben werden, dass er durch jede andere Person angepasst oder erweitert werden kann.»
- «Wenn wir jetzt nicht in einen sauberen Code investieren, haben wir bei allen nachfolgenden Änderungen viel länger. Dies steigert die Kosten für nachfolgende Erweiterungen.»
Indem du die Wichtigkeit von hochwertigem Code betonst und deine Bereitschaft zur Investition zeigst, unterstreichst du gegenüber dem Kunden deine Professionalität als Coderin und Coder.
Zeit aufgebraucht – An diese Clean Code Prinzipien kannst du dich trotzdem immer halten
Every Comment Is A Failure
Schreibe die Methoden und die Variablen möglichst so, dass es keinen Kommentar für den Code braucht.
YAGNI – You Ain’t Gonna Need It
Es kann schnell vorkommen, dass man mehr umsetzt als tatsächlich notwendig ist. Oder dein Feature wurde noch nicht bis in das letzte Detail beschrieben. Um möglichst effizient zu sein, versuche nur das zu realisieren, was im Moment wirklich erforderlich ist.
Source Code Conventions
Halte dich an eure im Team definierten Conventions. Wurden diese noch nicht definiert, dann wird es höchste Zeit.
Boy-Scout Rule
Hinterlasse den Code sauberer, als wie du ihn vorgefunden hast. Wenn du dich sowieso an die obenstehenden Regeln hältst, ist es damit oft bereits erledigt.
Die Liste wächst automatisch, je mehr Clean Code in dein Team integriert wird und du deine Fähigkeiten weiterentwickelst.
Kontinuierliche Optimierung
Damit das Wissen im Team einheitlich ist und stetig verbessert wird, sollte ein regelmässiger Austausch stattfinden. Teilt gemeinsam eure Herausforderungen und Erfahrungen. Code-Reviews sind sowieso klar, zusätzlich kann auch ein Pair-Programming helfen damit du neue Inputs erhältst. Verwendet ein Cheat-Sheet für das gemeinsame Verständnis von Clean Code. Ein Beispiel dafür findest du hier: bbv cheat-sheet.
Fazit
Mit einer klugen Argumentation, Priorisierung als Coderin und Coder, effizienten Code-Reviews, zusätzlichem Pair-Programming und einer teamweiten Sensibilisierung für Clean Code ist es möglich, selbst unter begrenzten zeitlichen Ressourcen die Code-Qualität zu verbessern. Es geht darum, kontinuierlich an der Optimierung des Codes zu arbeiten. Verzichtet man darauf kann es gut sein, dass deine Software in kürzester Zeit überholt wird und Kunden abspringen, weil es zu viele Fehler aufweist. Zudem bist du als Coderin und Coder öfters damit beschäftig Bugs zu beheben anstatt neue Features zu erstellen. Das will definitiv niemand. Merke dir also: ein sauberer Code ist wichtig, da darf Zeitmangel nicht als Ausrede dienen.