Effektive Code Reviews für Data-Science-Projekte
Die Inhalte dieses Artikels beruhen auf dem Vortrag A Data Scientist’s Guide to Code Reviews, dessen Aufzeichung von der PyCon 2022 Interessierte hier ansehen können.
Der Begriff Code Review ruft bei verschiedenen Menschen wahrscheinlich unterschiedliche Reaktionen hervor. Für einige ist es ein notwendiger und wertvoller Teil des Softwareentwicklungsprozesses. Für andere eine zeitraubende und lästige Pflicht, die den Arbeitsfluss unterbricht. Und für andere wiederum ist es etwas, das in ihrem Team oder ihrer Organisation nicht gemacht wird. Aber wozu genau dienen Code Reviews? Warum sind sie auch für Data-Science-Projekte relevant und sinnvoll? Und wie können Data Scientists Code Reviews effektiv gestalten?
Diese und weitere Fragen sollen im Folgenden beantwortet werden. Zusätzlich erhalten Leser:innen einige Tipps zur Durchführung von Code Reviews.
Code Reviews sind eine wichtige Komponente in der Softwareentwicklung
Ein Code Review ist ein Prozess, bei dem Code von einem Reviewer dahingehend überprüft wird, dass er bestimmte Qualitätsstandards erfüllt. Code Reviews können dabei helfen, die Qualität und die Lesbarkeit des Codes zu verbessern sowie potenzielle Probleme und Fehler zu identifizieren. Darüberhinaus sind sie eine wirksame Methode, um Wissen innerhalb des Teams zu teilen.
Genau diese Eigenschaften machen Code Reviews auch für Datenteams relevant. Jedoch haben viele Teams Schwierigkeiten, Code Reviews zu etablieren. Das liegt vor allem daran, dass es deutliche Unterschiede zwischen den Tätigkeiten in den ersten Phasen des Data-Science-Zyklus und den Aufgaben der Softwareentwicklung gibt. Die experimentelle Natur von Datenexploration, Modellentwicklung und -Validierung unterscheidet sich fundamental von den meist klar strukturierten Aufgaben der Softwareentwicklung. Dies bedeutet, dass der Begriff des Code Reviews nicht eins zu eins auf diese Phasen übertragen werden kann.
Wichtig an dieser Stelle ist hervorzuheben, dass dies nur für Tätigkeiten mit einem explorativen Charakter wie die eben genannten zutrifft. Aufgaben, bei denen dahingegen Entwickler:innen überwiegend den typischen Praktiken der Softwareentwicklung folgen, ist ein Code Review in seiner ursprünglichen Form anwendbar. Diese Aufgaben umfassen beispielsweise die Extraktion und Weiterverarbeitung von Daten oder die Umsetzung eines erprobten Modells mit der dazugehörenden Trainings- und Vorhersagepipeline in einer produktiven Umgebung.
Code Reviews müssen für die ersten Phasen des Data-Science-Zyklus angepasst werden
Während die ursprüngliche Definition von Code Reviews auf die Qualitätssicherung und die Identifizierung von Fehlern und Design-Konflikten abzielt, stehen bei Data-Science-Projekten die korrekte Verwendung der Daten sowie die aus ihnen gewonnenen Erkenntnisse im Vordergrund. Eine qualitativ hochwertige Implementierung, die alle Coding Guidelines erfüllt, ist der Wahl eines passenden Modells und nachvollziehbare Ergebnissen in der Regel nachgestellt, da es sich hier um experimentelle, nicht in Produktivsystemen eingesetzte Code-Artefakte handelt. Fragen, die sich ein Reviewer bei einem solchen Code Review stellen sollte, umfassen:
- Ist der gewählte Ansatz nachvollziehbar und klar?
- Wurden die Besonderheiten der Daten berücksichtigt?
- Sind die Ergebnisse plausibel?
- Kann ich diese Ergebnisse reproduzieren?
- Kann ich als Reviewer selbst das Konzept (grob) erklären?
Das Ziel sollte sein, nach Abschluss eines Code Reviews all diese Fragen mit „ja“ beantworten zu können.
Aufgrund dieser Abänderung lassen sich Parallelen zum Peer Review ziehen, das bei der Bewertung akademischer Einreichungen Anwendung findet. Die Funktion des Peer Reviews besteht darin, eine unabhängige und fachkundige Person zu finden, die das Werk beurteilt und Kommentare zu seinem Inhalt und seiner Durchführung gibt. Genau dieser Punkt muss auch bei Code Reviews im Data-Science-Kontext berücksichtigt werden: Ein erfolgreiches Code Review bedeutet nicht unbedingt, dass die Software in einem optimalen Zustand ist. Vielmehr muss sichergestellt werden, dass der Code verständlich ist und die Entwickler:innen den im Code nachgebildeten Ansatz nachvollziehen können.
Die Berücksichtigung vereinbarter Qualitätskriterien erleichtert den Prozess
Nichtsdestotrotz sollten auch bei experimentellen Aufgaben die Einhaltung von Coding Guidelines und anderen Qualitätskriterien nicht gänzlich außer Acht gelassen werden. Qualitativ hochwertiger Code und Lesbarkeit sowie Verständlichkeit gehen meist einher und vereinfachen das Code Review für einen Reviewer ungemein. Wer den eigenen Kolleg:innen die Arbeit erleichtern möchte, sollte als Autor:in vor dem Einfordern von Feedback einen Blick in die gemeinsamen Coding Guidelines werfen und diese im eigenen Code umsetzen.
Weitere Tipps & Fazit
Wer über diesen Artikel hinaus allgemeine Tipps zu Code Reviews sucht, dem sei der Blog von Matt Lynch nahegelegt. Der Artikel How to Do Code Reviews Like a Human hat die Autorin dieses Artikels und ihre Code Review Praxis nachdrücklich geprägt.
Abschließend lässt sich festhalten, dass Code Reviews mit den richtigen Anpassungen nicht nur in Softwareentwicklungsschritten sondern in allen Entwicklungsschritten von Data-Science-Projekten Anwendung finden können. Diese Anpassungen beruhen auf den veränderten Schwerpunkten der experimentellen Tätigkeiten, die ein wichtiger Bestandteil dieser Projekte sind. Code Reviews ähneln somit Peer Reviews, was jedoch nicht ihre Bedeutungsamkeit als Teil des Entwicklungsprozesses einschränkt.
Zur Wahl der richtigen Form kann folgende Faustregel als Orientierung dienen: Hat die Verwendung der Software einen produktiv(ähnlich)en Hintergrund, ist das bekannte Code Review angebracht, handelt es sich um explorative Arbeit, eignet sich ein Peer Review.
Für diejenigen, die die Inhalte dieses Artikels vertiefen möchten, bieten wir unsere Data Science Trainings für echte Projekte an. Neben dem Training Software Engineering für Data Scientists finden Interessierte dort einen Überblick über weitere Trainings zu verschiedenen Aspekten von Data-Science-Projekten.
Alexandra Wörner
Data Scientist
Planen auch Sie ein Daten-Projekt oder haben Interesse an einer initialen Beratung rund um mögliche Anwendungsfälle von Datenanalyse in Ihrem Unternehmen?
Gerne berät Sie unser Director of Data Science
Dr. Lars Perchalla
in einem unverbindlichen Erstgespräch.
Ihre Anfrage