Interview mit Thorsten Maier

„Code Reviews sollten nicht zur ungeliebten Pflichtaufgabe werden“

Redaktion JAXenter

Thorsten Maier

Welche technischen und organisatorischen Herausforderungen sind für den Einsatz effektiver Code Reviews notwendig? Welche Tools sind für die nahtlose Einbindung dieser Reviews besonders geeignet? Diese Fragen wird Thorsten Maier nächste Woche in seiner Session auf der W-JAX 2015 diskutieren. Wir haben ihn vorab schon mal um erste Antworten gebeten und außerdem gefragt, welche Rolle Code Reviews im Zusammenhang mit DevOps spielen.

JAXenter: Was würdest du jemandem antworten, der sagt: „Code Reviews? Dafür haben wir keine Zeit!“

Thorsten Maier: Es ist ein offenes Geheimnis, dass ein Bug umso günstiger behoben werden kann, je früher er gefunden wird. Ist ein Bug erst einmal in der Produktionsumgebung, kann es richtig teuer werden. Code Reviews gehören zu den Qualitätssicherungsmaßnahmen, mit denen wir bereits sehr früh im Entwicklungsprozess möglichst viele Fehler entdecken können. Somit können wir mit dieser Maßnahme auch die Gesamtkosten und ebenfalls den zeitlichen Gesamtaufwand langfristig verringern. Wer sich heute keine Zeit für die Pflege seiner Codebasis nimmt, erkauft sich diese Zeit mit deutlich höheren Wartungsaufwänden in der Zukunft. Ich kenne nicht wenige Projekte, die praktisch nur noch mit der Wartung der Produktionsumgebung und der Behebung von Fehlern beschäftigt sind. Ist es erst einmal so weit gekommen, scheint tatsächlich keine Zeit mehr für Code Reviews zu bleiben. Die Ursache dafür liegt allerdings nur allzu oft in der schlechten Code-Qualität der Software. Und genau diese können wir durch den kontinuierlichen Einsatz von Code Reviews verbessern. Es ist nicht einfach, aus diesem Teufelskreis auszubrechen, die Anstrengung lohnt sich nach meiner Erfahrung aber bereits nach einigen Wochen.

JAXenter: Code Reviews müssen einerseits organisiert werden, andererseits mit den richtigen Tools durchgeführt werden. Bleiben wir zunächst bei der Methode: Wie können effektive Code Reviews organisiert werden?

Thorsten Maier: Code Reviews sollten vor allem nicht zur ungeliebten Pflichtaufgabe werden. Vielmehr sollte man sie als Chance begreifen, voneinander zu lernen und gemeinsam die Codebasis zu verbessern, um so langfristig aus dem bereits beschriebenen Teufelskreis auszubrechen. Eine positive Grundeinstellung ist somit die wichtigste Voraussetzung, ohne die wir uns die weitere Mühe ersparen können. Ist diese Voraussetzung vorhanden, sollten wir Code Reviews als selbstverständliches Element in unseren normalen Entwicklungsprozess einbinden. Die notwendige Zeit (etwa 15% der Zeit für die Implementierung) sollten wir als eine Teilaufgabe der Entwicklung frühzeitig einplanen. Da ich Code Reviews vor allem als Plattform für die Wissensverteilung innerhalb des Entwicklungsteams sehe, halte ich es für wichtig, dass der Code-Autor möglichst immer gemeinsam mit dem Reviewer über den Code schaut. Jeder Entwickler sollte wechselweise sowohl die Aufgabe des Autor als auch die des Reviewers übernehmen, da so das Wissen am besten im Team verteilt werden kann. Eine vorbereitete Checkliste mit den wichtigsten Review-Kriterien sollte sowohl dem Autor als auch dem Reviewer vorliegen. Diese hilft allen Beteiligten, an die wichtigsten Punkte zu denken.

JAXenter: Welche Tools können helfen?

Thorsten Maier: Wenn es an den Einsatz von Tools zur Unterstützung von Code Reviews geht, ist weniger meistens mehr. Alle notwendigen Tools für ein Code Review sind in der Regel bereits im Einsatz. So kann man mit der hoffentlich vorhandenen Versionsverwaltung und einem Diff-Tool direkt loslegen. Man sollte zu Beginn nicht den Fehler machen, sich in der Evaluation verschiedener Tools zu verlieren. Nach der ersten Eingewöhnung kann das Tooling dann nach und nach verbessert werden. Dabei sollte vor allem darauf Wert gelegt werden, dass die Tools optimal in den bestehenden Entwicklungsprozess eingebunden werden.
Die Wunschwelt kann man sich etwa wie folgt vorstellen: In der Aufgabenverwaltung markiert der Entwickler eine Aufgabe als abgeschlossen. Dies führt automatisch dazu, dass eine Code Review durch einen Kollegen im Code Review Tool in Auftrag gegeben wird. Erst nach dem erfolgreichen Abschluss dieses Reviews wird der betroffene Code automatisch wieder in den Hauptentwicklungszweig (z.B. Master) überführt. Mit welchen Tools ein solcher Prozess umgesetzt wird, würde ich immer von der bereits bestehenden Tool-Infrastruktur abhängig machen. Bei OIO setzen wir meist auf einen Atlassian Tool-Stack, bestehend aus der Aufgabenverwaltung Jira, dem CI-Server Bamboo und der Repository-Verwaltung Bitbucket Server (ehemals Stash). Letztere eignet sich sehr gut für die Umsetzung eines Code-Review-Prozesses mit Pull Request, wie man ihn beispielsweise auch im Open-Source-Umfeld häufig antrifft.

JAXenter: Welche Rolle spielen Code Reviews im Zusammenhang mit der DevOps-Bewegung?

Thorsten Maier: Im Zuge der DevOps-Bewegung hat das Konzept „Infrastructure as Code“ mittlerweile eine weitere Verbreitung erreicht. Bei diesem Ansatz wird der Aufbau der gesamten Infrastruktur, wie beispielsweise die Installation des Betriebssystems, die Einrichtung der Datenbank oder der Konfiguration des Application-Servers in Skripten hinterlegt, so dass die Infrastruktur jederzeit auf Knopfdruck vervielfältigt werden kann. Diese Skripte sollten mit mindestens der gleichen Sorgfalt wie der eigentliche Programmcode gepflegt werden und deshalb bietet sich auch hier der Einsatz von Code Reviews als Qualitätssicherungsmaßnahme an.

Thorsten Maier arbeitet bei der OiO – Orientation in Objects GmbH in Mannheim. Er erschließt kontinuierlich bessere Wege, Software zu entwickeln, indem er selbst als leidenschaftlicher Java-Softwareentwickler unterwegs ist und anderen als Berater, Trainer, Autor sowie Speaker dabei hilft. Trotz seiner Begeisterung für Neues sind ihm Menschen stets wichtiger als Technologien. Sein Hauptaugenmerk liegt daher auf der Frage, wie sich modernste Technologien in gewachsene Umgebungen einbinden lassen und wann man besser auf Bestehendes zurückgreifen sollte.

Geschrieben von
Kommentare
  1. JAXenter Interview: Thorsten Maier zu Code Reviews | OIO Braintime - Atlassian und SAFe Partner2015-11-03 10:07:39

    […] Interview mit Thorsten Maier: „Code Reviews sollten nicht zur ungeliebten Pflichtaufgabe werde… […]

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.