Bild von Stefan Lieser
Stefan Lieser

Clean oder schnell?

Update 14.02.2024: Dieser Beitrag ist leicht überarbeitet worden.

Über die kurzsichtige Entscheidung, schnell statt sauber zu entwickeln.

Wer sich mit den Prinzipien und Praktiken der Clean Code Developer Initiative beschäftigt wird feststellen, dass es Zeit kostet, die Bausteine alle anzuwenden. Es sind Bausteine dabei, die einem Entwickler schnell zur guten Gewohnheit werden. Das mag für den einen die Einhaltung von Code Konventionen sein, für den anderen die konsequente Verwendung einer Versionskontrolle. Doch bei diesen beiden Bausteinen gibt es eben auch Entwickler, die sich damit schwer tun.

Schnell steht dann die Frage im Raum, warum es so wichtig sein solle, täglich mehrfach seinen Code in die Versionskontrolle zu committen. Oder ob es nicht Prinzipienreiterei sei, auf die Einhaltung von Code Konventionen zu bestehen. Spätestens aber, wenn wir zu den Prinzipien kommen, mit denen man sich zunächst intensiver befassen muss, bevor sie in die tägliche Praxis eingehen, kommt häufig die Frage auf: muss das sein? Muss ich wirklich diese vielen Prinzipien beachten und all die Praktiken einführen? Das nimmt doch elendig viel Zeit in Anspruch, in der ich das Feature längst kodiert habe. Clean oder schnell?

001 Das Problem mit Kurven clean oder schnell

Clean Code – ein Widerspruch?

Es scheint ein Widerspruch zu sein: wenn Software sauber nach den Regeln der Kunst entwickelt werden soll, dauert es länger. Was habe ich also davon, wenn ich die Clean Code Developer Bausteine regelmäßig umsetze? Die Kollegen, die darauf pfeifen, liefern schneller. Warum also „Clean“, wenn das länger dauert? Eine Antwort finden Sie in der nebenstehenden Abbildung.

Anstieg der Kosten

Das Diagramm stellt dar, wie sich die Kosten für ein Feature im Zeitverlauf entwickeln. Wird ein Feature sehr früh realisiert, geht es schnell von der Hand und kostet somit weniger, als zu einem späteren Zeitpunkt. Das liegt zum einen an der Größe der Codebasis. Natürlich ist es einfacher, in einer Codebasis mit ein paar Hundert Zeilen Code eine Ergänzung vorzunehmen, als in einer Codebasis mit ein paar Millionen Zeilen Code. Dennoch bleibt das Ziel, den Anstieg der Kosten zu linearisieren.

Den gewünschten Verlauf der Kosten zeigt die grüne Kurve. Der Anstieg findet weiterhin statt, aber eben nur linear. Es ist für Softwareprojekte und -produkte gleichermaßen erforderlich, den exponentiellen Anstieg der Kosten zu verhindern. Ist der Aufwand in einem Projekt erst einmal auf dem steilen Pfad nach oben, hat das Team ein massives Problem. Neue Anforderungen umzusetzen und Bugs zu fixen dauert immer länger und länger, die Kosten laufen davon. Irgendwann laufen dann auch die Kunden davon. Es droht also der Verlust von Einnahmen und somit letztlich die Insolvenz. Nun geht nicht jedes Unternehmen in die Insolvenz, weil ein Projekt immer mehr Ressourcen benötigt. Und dennoch stellt dies für Unternehmen ein riesiges Problem dar.

Es gibt nichts Gutes, außer man tut es

Nun könnte der Artikel hier enden, denn die Abbildung zeigt offensichtlich die Notwendigkeit, sauber zu arbeiten. In der Betrachtung macht die zeitliche Perspektive den Unterschied. Betrachte ich ein Projekt kurzfristig, bin ich schneller unterwegs, wenn ich manche Prinzipien und Praktiken ignoriere. Sehr beliebt ist das Weglassen von automatisierten Tests. Betrachte ich das Projekt langfristig, wird mich diese Unterlassung jedoch einholen. Es kommt der Zeitpunkt, an dem ich den Code nicht mehr verstehe, einen Fehler einbaue und mir wünsche, ich hätte Tests geschrieben. Diese dann zu ergänzen ist zeitaufwendig. Häufig sind die Strukturen dann bereits so angelegt, dass Tests nur schwer zu ergänzen sind.

Vielleicht hilft eine Analogie zur Gesundheit. Was passiert, wenn ich diese Woche keinen Sport mache? Ich gewinne Zeit für anderes. Cool! Daraus den Schluss zu ziehen, dass Sport überbewertet sei, ist sicher falsch. Auf lange Sicht wird meine Fitness leiden, ultimativ meine Gesundheit. Also muss ich mich jede Woche motivieren, Sport zu machen. Dies ist einer der wichtigsten Beiträge, um auf lange Sicht gesund zu bleibe. Ist regelmäßiger Sport eine Garantie für Gesundheit? Nein. Ähnlich verhält es sich mit den Clean Code Developer Bausteinen. Liefern diese eine Garantie, dass Projekte flüssig verlaufen? Nein. Aber daraus lässt sich nicht der Schluss ziehen, dass ich auf „Clean“ verzichten kann und damit schneller vorankomme. Kurzfristig ja, langfristig nein.

Was kann unterstützen?

An diesem Punkt stellt sich die Frage, was ein Team tun kann, um regelmäßig dran zu bleiben. Die Clean Code Developer Bausteine sind wichtig. Ich habe extrem selten Entwickler kennengelernt, die den Sinn der Prinzipien und Praktiken ernsthaft in Frage stellen. Und dennoch fällt es schwer, sie in der täglichen Praxis anzuwenden. Was könnte helfen? Als CCD Akademie haben wir dazu einiges im Angebot:

CCD Postkarten

Clean Code Developer Postkartenset. Gibt’s hier in unserem Shop.

CCD Spielkartenset

Clean Code Developer Spielkarten. Gibt’s hier in unserem Shop.

Clean Code Developer Poster

Das Clean Code Developer Poster gibt es hier zum Download.

Diese Hilfsmittel können Sie für kleines Geld erwerben. Liegen die Postkarten erstmal auf meinem Schreibtisch, erinnern sie mich immer wieder daran, die Prinzipien zu beachten und die Praktiken anzuwenden. Das Poster an der Wand erinnert ebenfalls an das Thema. Und nicht zuletzt sind die Spielkarten ein gutes Nachschlagewerk, um damit bspw. im Code Review oder der Retrospektive das passende Argument zu finden.

Darüberhinaus können wir mit unseren Trainings helfen. Nimmt das gesamte Team über einen Zeitraum von einem halben Jahr an einem Training teil, wird sich dadurch in der Arbeitsweise einiges verbessern. Dazu verteilen wir die Trainingstage auf den Zeitraum und treffen uns bspw. alle 3-4 Wochen online zu einem einzelnen Trainingstag. Auf diese Weise entfaltet eine Trainingsmaßnahme eine größere Wirkung als beim klassischen 3-tägigen Seminar „en bloc“.

Erhalte einen Auszug aus dem Buch „Mit Flow Design zu Clean Code“.

Mit Flow Design zu Clean Code

Fazit

Mal eben husch husch noch ein Feature raushauen macht vielleicht den Chef glücklich. Aber der wird ebenso unglücklich sein, wenn sich nach einiger Zeit herausstellt, dass das Kartenhaus zusammenbricht, das da auf die Schnelle aufgebaut wurde. Es hilft also nichts. Wie beim Sport – am regelmäßigen Clean Code geht kein Weg vorbei.

Wie beantworten Sie die Frage: Clean oder schnell?

Unsere Seminare

course
Clean Code Developer Basics

Prinzipien und Tests – Das Seminar wendet sich an Softwareentwickler, die gerade beginnen, sich mit dem Thema Softwarequalität auseinanderzusetzen. Es werden die wichtigsten Prinzipien und Praktiken der Clean Code Developer Initiative vermittelt.

zum Seminar »
course
Clean Code Developer Advanced

Mit Flow Design von den Anforderungen zum Clean Code – Lernen Sie mit Flow Design einen Softwareentwicklungsprozess kennen, der Sie flüssig von den Anforderungen zum Clean Code führt.

zum Seminar »
course
Clean Code Developer Trainer

Seminare als Trainer durchführen – Dieses Seminar wendet sich an Softwareentwickler, die ihr Wissen über die Clean Code Developer Prinzipien und Praktiken bzw. über Flow Design als Trainer an andere weitergeben möchten.

zum Seminar »
course
Clean Code Developer CoWorking

Online CoWorking inkl. Coaching –
Wir werden häufig gefragt, was man als Entwickler tun könne, um kontinuierlich dran zu bleiben am Thema Clean Code Developer. Unsere Antwort: Treffen Sie sich regelmäßig wöchentlich online mit anderen Clean Code Developern.

zum Seminar »

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

de_DEGerman
Mit Flow Design zu Clean Code

Mit Flow Design zu Clean Code

Inhaltsverzeichnis und erstes Kapitel als PDF

Trage hier Deinen Namen und Deine Emailadresse ein, dann mailen wir Dir den Auszug aus dem Buch als PDF.

Eine Abmeldung vom Newsletter ist jederzeit möglich.