Mit aktiven Code-Reviews haben einige Entwickler in den letzten Jahren bereits verschiedenste Erfahrungen gemacht. Manche verbinden die Reviews leider damit, dass die geleistete Arbeit kritisiert werden könnte und eine weitere zeitintensive Aufgabe zum Tagesgeschäft hinzukommt.
Dabei bieten bei sauberer organisatorischer Planung und Durchführung diese Code-Reviews ein hervorragendes Instrument für Verbesserungen vieler Aspekte in Entwicklungsteams. Bei zeitsprung stehen daher die maßgeblichen Vorteile des gelebten Review-Prozesses im Vordergrund, von denen die für uns wichtigsten in diesem Artikel für den Erfahrungsaustausch zusammengestellt wurden.
Allseits bekannt wird das Code-Review als Werkzeug zur Einhaltung und Etablierung eines einheitlichen „Code-Smells“ eingesetzt. Durch gemeinsame von allen Entwicklern verabschiedete Richtlinien zum sauberen und einheitlichen Entwickeln, wird der Code gesamtheitlich harmonischer und somit mittelfristig einfacher wartbar, dadurch noch stabiler und letztlich skalierbar.
Inselwissen entsteht durch sogenannte Code-Ownerships. Diese Ownerships bezeichnen den oder die Entwickler, die maßgeblich an der Entwicklung eines Codefragments beteiligt waren. Meist können betroffene Entwickler entweder nicht ausreichend loslassen oder erhalten nicht die Chance das Wissen und das Arbeitsaufkommen bezogen auf jene Codefragmente zu verteilen. Solche Ownerships entwickeln sich ggf. über Jahre hinweg und machen es für neue Kollegen beinahe unmöglich, sich zeitnah in Programmabläufe und Abhängigkeiten einzuarbeiten. Darüber hinaus wird dadurch die Belastung von starken Codeproduzenten dauerhaft immer nur noch höher.
Ohne Code-Reviews würde keiner (oder nur wenige) der unbeteiligten Entwickler den fremden Code sehen und/oder kennenlernen. Erst im Fall einer eintretenden Vertretung oder Übernahme von Codefragmenten muss dann eine mühsame Einarbeitung der unwissenden Entwicklerkollegen erfolgen. Dies ist zeitintensiv und erhöht auch die Fehleranfälligkeit des Codes bei der Weiterentwicklung.
Abhilfe schafft die Code-Review: Sobald bei der Abgabe und der Änderung von Code dieser durch weitere Kollegen gesichtet wird, kann sich das Inselwissen mittelfristig in ein teamweites Wissen umwandeln.
Neben dem zeitintensiven und im Vergleich zu anderen Arbeitsmethoden ineffizientem Pair-Programming, bieten Code-Reviews die Möglichkeit, den Skill-Level zwischen allen Entwicklern anzugleichen und anzuheben.
Durch den Austausch und die Diskussion über Codefragmente, Abläufe, Stil und Best-Practices können die erfahrenen Kollegen dem gesamten Team hilfreiche Anstöße und Tipps zur Verbesserung des jeweils eigenen Codes geben. Ein Blick auf fremden Code fördert zudem die eigene Kreativität und veranschaulicht unterschiedliche ggf. bisher nicht bekannte oder angewendete Herangehensweisen. Dieser Mechanismus trägt sofort aktiv zur Verbesserung des Team- und damit des Unternehmensergebnisses bei.
Auch wenn der Code mittels Review einer technischen Qualitätssicherung unterzogen wird, kann und wird ein fachlicher Test nicht mittels Code-Review durchgeführt. Die fachlichen Anwendungs- und Prozesstests sind nach wie vor durch die verantwortlichen Entwickler gemeinsam mit den fachlichen Anforderern und unseren Business-Analysten durchzuführen. Die Verantwortung für die Abgabe von 100% funktionalem Code wird durch die nachgelagerte Code-Review in keiner Weise geschmälert!
Essentiell ist auch die Integration der Review-Plattform in die vorhandene Softwareinfrastruktur. So bietet unsere Review-Plattform ein Plugin zur direkten Integration in der Entwicklungsumgebung. Reviews werden direkt dort erstellt und geprüft wo der Code erzeugt wurde – etablierte Werkzeuge zur Sprachebenenprüfung inklusive. Weitere Integrationen, wie beispielsweise mit der Versionsverwaltung oder dem Ticketsystem sind essentiell und maßgeblich für den Erfolg sowie die Akzeptanz bei der Implementierung des neuen Prozesses.
Der neue Prozess zum Code-Review muss ebenfalls aus organisatorischer Sicht gut vorbereitet, koordiniert und nachbereitet werden. Mittels zufälliger Zuweisung eines Reviewers zu einer Codeprüfung ist sichergestellt, dass die Reviews gleichmäßig und gerecht auf alle Entwickler verteilt werden. Außerdem vereinfacht dies die Anlage eines Reviews für den einzelnen Entwickler auf einen einzigen Mausklick.
Angemessene Fristen zur Durchführung der einzelnen Code-Review ermöglichen es dem Entwickler flexibel nach eigener Zeitplanung seine Reviews durchzuführen. Längerfristig offene Reviews werden in die Daily-Sitzungen als Themenpunkt aufgegriffen und gemeinsam zielgerichtet besprochen und bearbeitet.
Code-Reviews tragen zu einer intensiven Diskussion und aktivem Wissenstransfer über das wichtigste Gut eines Softwareunternehmens (dem Quellcode) bei. Sie helfen den Softwareentwicklern, den gesamten Code qualitativ noch besser zu machen und das gesamte Team dauerhaft auf einen gleichmäßig steigenden Wissensstand zu bringen. Dieser Mechanismus hat unser Team nachhaltig positiv beeinflusst und ist einer der vielen etablierten Bausteine unseres Entwicklungsprozesses bei zeitsprung. Unter Anderem durch Code-Reviews wird es uns nachhaltig möglich starke Entwicklungsleistungen zu erbringen, welche unsere Kunden von uns gewohnt sind.