Bessere Produkte durch standardisierte Code-Qualität
20. Februar 2018 | Jens Hassler
Bessere Produkte durch standardisierte Code-Qualität
Haben Sie schon mal einen Text gelesen und anhand der verwendeten Worte, des Schreibstils und anderer individueller Besonderheiten erkannt, wer diesen geschrieben hat? Oder ein Bild betrachtet und anhand der Pinselführung, den Farben und Geometrien den Künstler gesehen?
Wie Autoren und Maler sind auch Programmierer Künstler, die ein gelerntes Handwerk anwenden, um am Ende ein individuelles Produkt zu schaffen, das ohne Zweifel ihre persönliche Handschrift trägt. Was für den Maler die Farbe und für den Autor die Worte sind, ist für den Programmierer der Programmcode. Es gibt unendlich viele Wege, zum gewünschten Ziel zu kommen. Und selbst wenn man diese Handschrift an der Oberfläche nicht mehr erkennt, so sind diese im Verborgenen liegenden Zeilen die grundlegenden Bausteine des fertigen Produkts.
Wenn ein Programmierer ein Produkt für sich alleine erschafft und nur er selbst daran entwickelt, spielt diese Individualität keine grosse Rolle. Arbeitet er jedoch in einem Team, sieht es anders aus. Hier muss jeder Entwickler in der Lage sein, sich schnell in jedes Produkt einarbeiten zu können, um daran weiterentwickeln zu können. Kollegen kommen und gehen, die Produkte aber bleiben und müssen weiter betrieben werden.
Die Struktur entscheidet
Wer ein Haus bauen will, kann auf bewährte Prinzipien zurückgreifen, wie Häuser zu bauen sind. Die meisten gebauten Häuser folgen diesen Prinzipien, und jeder Architekt und Bauarbeiter weiss, wie diese aussehen, sodass sie sich auf allen Baustellen schnell zurechtfinden können.
Wir bei der IWF Web Solutions haben auf Basis von bewährten Standards und eigenen Erfahrungen aus vielen Jahren der Software-Entwicklung Strukturen geschaffen, an denen sich jedes neu entwickelte Produkt orientiert. Intern sind die Produkte gleich aufgebaut. Die verschiedenen Bestandteile der Software kommunizieren auf die gleiche Weise miteinander, die Bausteine liegen an fest definierten Orten, und jeder Entwickler kann sich darauf verlassen, dass diese Bausteine einem gemeinsam definierten Standard folgen. Es ist nur noch nötig, die projektspezifischen Besonderheiten und das Herz der Software (die "Business Logik") zu verstehen, um mitarbeiten zu können.
Solange Programmierer nicht durch Roboter ersetzt werden, die nach fixen Regeln immer auf die gleiche Weise arbeiten, gehört jedoch eine gewisse Rest-Individualität zu jeder Software dazu. Diese Individualität kann und darf nicht restlos vernichtet und in Standards gepresst werden.
Standards halten und messen
Doch wie bringt man die Entwickler dazu, ihre persönlichen Präferenzen im Zaum zu halten, sich an den gesetzten Team-Standards zu orientieren, um letztlich Programmcode zu schreiben, der leicht verständlich, sicher, schnell und möglichst fehlerfrei ist?
Die Antwort beinhaltet eine grosse Bandbreite unterschiedlicher Massnahmen: Interne Schulungen sind wichtig, um neue Entwickler gut in die eigenen Standards einzuarbeiten. Techniken wie Code Reviews (ein anderer Entwickler schaut nochmal drüber), Pair Programming (zwei Entwickler arbeiten gemeinsam an der gleichen Funktion) und regelmässige Feedbacks innerhalb des Teams helfen, diese gemeinsame Basis zu festigen und weiterzuentwickeln. Und letztlich gibt es Tools, die ganz objektiv messen, wie "gut" der Programmcode ist, der produziert wird.
Jedes bei der IWF Web Solutions entwickelte Produkt durchläuft nächtlich einen vollständigen Test (sog. "Statische Code-Analyse"), der ein Rating produziert, das Aussagen über die Zuverlässigkeit, Sicherheit und Wartbarkeit der Software macht. Die Entwickler werden gewarnt, wenn sie offensichtliche Fehler einbauen, die gesetzten Standards nicht befolgen, wenn automatisierte Tests fehlschlagen oder die Komplexität ihrer Funktionen gewisse Schwellenwerte überschreitet. Software-Versionen, die kein "AAA"-Rating erhalten, werden nicht veröffentlicht, sie verhindern die Auslieferung.
Unser Test-Management prüft vor jedem neuen Release, ob die neuen Funktionen fehlerfrei nach Spezifikation funktionieren und keine Seiteneffekte mit dem restlichen Produkt auftreten. Sind noch betriebsverhindernde Fehler im Produkt vorhanden, wird die neue Version ebenfalls nicht ausgeliefert. Unsere interne Governance stellt sicher, dass zwischen Test-Management und Projekt-/ Produkt-Entwicklung eine Gewaltentrennung herrscht und ohne das verbindliche Einverständnis beider Parteien die Software nicht ausgeliefert wird. Diese Trennung stellt sicher, dass der Kunde ein bestmögliches Produkte (Webseite, Web-Applikation) ausgeliefert erhält.
Für Sie als Kunde
Warum also sollte es Ihnen als Kunde wichtig sein, wie der Code beschaffen ist, wenn Sie doch nur daran interessiert sind, dass das Produkt so aussieht und funktioniert, wie Sie es sich vorgestellt haben?
Ihre Software ist kein Möbelstück, das einmalig produziert wird und dann ohne Änderung jahrzehntelang an seinem Platz steht. Software ist dynamisch. Sie muss regelmässig gepflegt werden, um nicht zu veralten. Sie muss weiterentwickelt werden, weil sich Ihre Welt und die Welt um Sie herum ständig verändert. Entwickler müssen auch nach Jahren noch in der Lage sein, den Code des Produkts zu verstehen, auch wenn keiner der ursprünglichen Kollegen mehr verfügbar ist oder wenn die Firma, die das Produkt entwickelt hat, unter Umständen gar nicht mehr existiert.
Dieses grosse Risiko, dass Ihre Software nicht mehr ordentlich weiter entwickelt werden kann, weil zu viel Individualität einzelner, evtl. auch unerfahrener Entwickler eingeflossen ist, können Sie eindämmen, indem Sie eine Firma engagieren, die bereits langjährig auf dem Markt ist, deren Entwicklungsteam bewährten Standards folgt und diese auch überprüft und offen legt.
Das nächste Mal, wenn Sie eine Firma mit der Entwicklung eines Produkts beauftragen: Fragen Sie nach, wie sichergestellt wird, dass Standards eingehalten werden, wie die Weiterentwicklung über die nächsten Jahre gewährleistet wird. Seien Sie kritisch und lassen Sie sich zeigen, wie diese Standards aussehen und wie deren Einhaltung überprüft wird. Ein seriöses Unternehmen gibt Ihnen darüber jederzeit gerne Auskunft.
Auch wenn Sie aus anderen Gründen daran interessiert sind, wie wir bei der Web Solutions mit dieser Herausforderung umgehen: Zögern Sie nicht und sprechen Sie uns darauf an!