Wie kann man schrittweise Code-Reviews einführen?

26

Ich leite ein Team mit einem halben Dutzend leitender Ingenieure. Ich bin der festen Überzeugung, dass es für uns von großem Vorteil ist, aus allen gängigen Gründen Code-Reviews durchzuführen. Nicht unbedingt jede Änderung, aber immer wieder Hintergrundberichte. Die Leute sehen also zumindest die Veränderungen anderer und fangen an, über sie zu sprechen.

Gibt es eine gute Möglichkeit, Rezensionen einzuführen? Ich spüre eine große Zurückhaltung im Team, weil es nur noch eine Sache zu tun gibt und Gespräche schmerzhaft werden können. Ich habe das Gefühl, dass die Überprüfung jeder Änderung ein Nichtstarter ist, zumindest als erster Schritt. Ich möchte, dass die Leute sich in den Rhythmus einarbeiten und üben, zuerst mit einer niedrigen Frequenz zu rezensieren, bevor sie die Menge erhöhen.

Hat jemand erfolgreich Codeüberprüfungen nach und nach eingeführt? Wie? Ich habe über das Erfordernis von Bewertungen für "heiße" Dateien oder Bibliotheken nachgedacht. Oder willkürlich pflücken. Oder ich wähle "Wahl" muss Änderungen überprüfen. Oder ist es der einzige Weg, den Sprung zu wagen und jede Veränderung vorzunehmen?

Philip
quelle
Ich habe es in der Frage nicht genug betont, aber "allmählich" war hier das Schlüsselelement. Ich halte es überhaupt nicht für möglich, 100% der Änderungen zu überprüfen. Wenn Sie jedoch nur eine Portion prüfen, wie wählt man dann die Portion aus? Wählen Sie einfach "Lieblingsänderungen"? Etwas Zufälliges? Plektren? Die Antworten hier sind großartig, haben mich aber nicht wirklich auf den "graduellen" Teil gebracht.
Philip

Antworten:

16

Dies ist kein Werkzeug- oder Prozessproblem. Es geht um Kultur. Sie beschreiben ein Team, das sich aus Menschen zusammensetzt, die kritisch sind und ihre eigene Arbeit schützen. Es ist sehr, sehr verbreitet. Aber es ist nicht professionell.

Mein Rat ist, mit gutem Beispiel voranzugehen. Bieten Sie Ihre Commits zur Überprüfung an. Seien Sie offen, wenn Sie darum bitten, dass Personen die Probleme in Ihrem Ansatz hervorheben. Seien Sie offen für Rückmeldungen. Sei nicht defensiv, sondern erkunde die Gründe für das Feedback und stimme Aktionen als Team zu. Fördern Sie eine Atmosphäre des offenen Dialogs. Finden Sie einen oder zwei Champions in Ihrem Team, die auch dazu bereit sind.

Es ist harte Arbeit.

Synesso
quelle
38

Der erste Schritt wäre, auf jemanden zuzugehen und zu sagen "Hey, würdest du meinen Code überprüfen?". Seien Sie die Veränderung, die Sie in Ihrer Organisation sehen möchten. Wenn Sie keine einzige Person finden, die dazu bereit ist, können Sie nicht das gesamte Team überzeugen. Wenn Sie beide Erfolg haben, melden Sie sich beim Team.

Wenn Sie jemanden gefunden haben, der Ihren Code überprüft, fragen Sie ihn, ob es Ihnen etwas ausmacht, wenn Sie einen Teil seines Codes überprüfen . Formulieren Sie es als Lernmöglichkeit für Sie und nicht als Gelegenheit für sie , ihren Code zu verbessern.

Bryan Oakley
quelle
10
"Hey, ich bin nicht glücklich mit diesem Design, kann ich ein zweites Set Augäpfel bekommen?" Ist ein toller erster Schritt. ++
RubberDuck
4

Als Teamleiter ist der größte Nutzen, den ich aus dem Code-Überprüfungsprozess ziehen kann, das Bewusstsein dafür, was vor sich geht. Ich möchte die Möglichkeit haben, jeden Änderungssatz zu sehen, auch wenn ich keine Änderungen oder Vorschläge für den Entwickler habe. Ich nenne diese "Bewusstseinsüberprüfungen". Ich kann sie in weniger als 30 Minuten umdrehen, sodass es keinen Engpass gibt.

Ich würde vorschlagen, dass Sie mit diesen anfangen. Definieren Sie den Codeüberprüfungs-Übermittlungsprozess (er ist ziemlich einfach, wenn Sie TFS verwenden) und lassen Sie alle Beteiligten ihre Änderungssätze an Sie (und nur Sie) übermitteln, bevor Sie einchecken. Sagen Sie ihnen, es ist nur zur Information gedacht und niemand wird ihren Code kritisieren.

Laden Sie nach ein oder zwei Wiederholungen der Bewusstseinsüberprüfungen andere Mitglieder des Teams ein, den Code der jeweils anderen zu überprüfen. Ob Sie es glauben oder nicht, dies allein kann für den Zusammenhalt des Teams und die Einheitlichkeit des Codes hilfreich sein.

Sobald Sie das gesamte Team beschäftigt haben, werden Sie wahrscheinlich feststellen, dass Ihre Entwickler einfach nicht anders können, als Vorschläge für den Code des jeweils anderen zu machen. Dies geschieht auf natürliche und organische Weise (Ingenieure können sich nicht selbst helfen!). Lassen Sie das Team zusammentreffen, um dies zu besprechen und Richtlinien für ein konstruktives gegenseitiges Feedback zu erstellen. Stellen Sie sie dann darauf ein. Herzlichen Glückwunsch, Sie befinden sich jetzt im vollständigen Code-Überprüfungsmodus!

John Wu
quelle
1
Ich mag den Begriff "Awareness Reviews" sehr interessantes Konzept. Für einen Lead scheint es natürlich, dass Sie sich darüber im Klaren sind, was andere tun. Aber ich denke, Sie können sich für alle im Team einsetzen. Wir müssen uns darüber im Klaren sein, was andere für uns selbst und für sie tun. Ansonsten sind wir nicht einmal in einem Team, wir arbeiten nur parallel.
Philip
4

Gibt es eine gute Möglichkeit, Rezensionen einzuführen?

Es gibt wahrscheinlich mehrere gute Möglichkeiten, abhängig von Ihrem Team und den Vorteilen, die Sie von den Bewertungen erwarten, aber jeder Ansatz hat einige Gemeinsamkeiten:

  • Erklären Sie, was Sie erwarten: Dies ist ein neuer Prozess für Ihr Team oder zumindest eine Änderung des bestehenden Prozesses. Es ist daher nur fair, dem Team mitzuteilen, warum Sie die Änderung einleiten, wie Sie erwarten, dass das Team davon profitiert, und wie Sie wissen, ob es funktioniert.

  • Definieren Sie den Prozess: Führen Sie die Mitarbeiter durch den Prozess, dem sie folgen sollen, um den Code zu überprüfen, Änderungen zu besprechen usw., damit jeder im Team weiß, wie es weitergeht.

  • Definieren Sie die Kriterien: Legen Sie die Arten von Änderungen fest, die Menschen als verbesserungsbedürftig bezeichnen sollten und nicht. Zum Beispiel sind Fehler und signifikante Leistungsverbesserungen zu erwähnen. Codierungsstandards, Lesbarkeit und Wartungsprobleme sollten beachtet, aber nicht besprochen werden. Fragen des persönlichen Geschmacks oder Stils sollten in Ruhe gelassen werden.

  • Verhalten besprechen: Weisen Sie darauf hin, dass das Ziel darin besteht, den Code zu verbessern und ein gemeinsames Verständnis zu fördern, das dem Team dabei hilft, besseren Code auf breiter Front zu schreiben, niemanden in Verlegenheit zu bringen, Punkte abzurechnen usw. Kritik sollte objektiv und konstruktiv sein, niemals persönlich. Die Festlegung einiger Grundregeln kann dazu beitragen, Bedenken hinsichtlich der Überprüfung von Code auszuräumen.

  • Versetzen Sie sich zuerst in die heiße Phase: Unabhängig davon, ob Sie Einzel- oder Gruppenbewertungen planen, ist es wahrscheinlich eine gute Idee, die ersten paar als Gruppe durchzugehen. Bei der ersten Überprüfung sollte es sich um Ihren eigenen Code handeln, damit andere Teammitglieder erkennen können, dass der Prozess nicht so schlecht ist und Sie bereit sind, ihn selbst durchzuarbeiten.

Führen Sie zunächst ein Kickoff-Meeting durch, um alle oben genannten Punkte zu erläutern und die Bedenken der Teammitglieder auszuräumen. Schreiben Sie anschließend eine E-Mail, die den Vorgang dokumentiert.

Ich spüre eine große Zurückhaltung im Team, weil es nur noch eine Sache zu tun gibt und Gespräche schmerzhaft werden können.

Das sind zwei unterschiedliche Bedenken. Wenn Sie der Meinung sind, dass Überprüfungen hilfreich sind, müssen Sie Zeit in den Zeitplan einbauen, um sie durchzuführen. Vergewissern Sie sich, dass die Teammitglieder verstehen, dass das Überprüfen wie jede andere Aufgabe funktioniert, und nicht zusätzlich, dass sie weiterhin andere Aufgaben mit der gleichen Geschwindigkeit ausführen müssen.

Besprechungen zur Gruppenüberprüfung sollten von einem Moderator geleitet werden, der die Diskussion am Laufen hält, die Besprechungsdauer begrenzt und die Dinge konstruktiv hält. Das sollte dazu beitragen, schmerzhafte Gespräche zu vermeiden. Wenn Sie bereit sind, einzelne Überprüfungen durchzuführen, hat das Team hoffentlich Verhaltensweisen übernommen, die es ihnen ermöglichen, die Dinge konstruktiv zu halten.

Sie sollten den Überprüfungsprozess auch von Zeit zu Zeit überprüfen. Bringen Sie das Team von Zeit zu Zeit zusammen, um den Prozess zu besprechen: Wie gut funktioniert es, wie könnte es verbessert werden, welche Praktiken sollten aufgegeben werden usw. Geben Sie dem Team die Eigenverantwortung für den Prozess und die Freiheit, neue Dinge auszuprobieren.

Caleb
quelle
-2

Eine Möglichkeit besteht darin, nach jedem Sprint Code-Überprüfungssitzungen durchzuführen und alle Änderungen durchzugehen, bei denen Code auf einen großen Bildschirm projiziert wird, sodass jeder im Team teilnehmen kann. Eventuelle Verbesserungen können als technische Verschuldung dem Auftragsbestand hinzugefügt werden.

Dieser Ansatz funktioniert, ist aber nicht perfekt.

Das ultimative Ziel wäre es, Pull-Anforderungen zu verwenden, um Code wieder in den Master zusammenzuführen oder einen Zweig zu entwickeln, in dem jede Codezeile überprüft werden muss.

Tieffliegender Pelikan
quelle
3
Stundenlanges Sitzen, um den gesamten Code zu überprüfen, der während einer Iteration generiert wurde, nachdem er vorbei ist (und zu spät), klingt nach einer wundervollen Möglichkeit, die Idee der Codeüberprüfung zu hassen.
RubberDuck
Nun, wenn es Stunden dauert, um den Code zu überprüfen, der in einem Sprint generiert wurde, dann machen Sie es falsch. Entweder ist der Sprint 6 Monate lang, oder Sie arbeiten mit 50 Leuten zusammen, oder die Entwickler tun nichts gegen das Codieren oder bewährte Methoden. Da die Codierung nach der Iteration nicht endet, ist es nie zu spät, und der Code ändert sich immer, und die technische Verschuldung kann in nachfolgenden Iterationen behoben werden. Wenn Sie Code-Reviews auf diese Weise durchführen, können Entwickler, die dies noch nie getan haben, nachsehen, worauf zu achten ist, und so weiter. Sobald es so gestartet ist, kann es schrittweise in Richtung Pull-Requests verschoben werden
Low Flying Pelican
Mein 7-köpfiges Team fügt alle zwei Wochen mehrere tausend Codezeilen mit über drei Dutzend Commits hinzu / entfernt / ändert sie. Eine Qualitätsüberprüfung eines PR dauert ca. 15-60 Minuten. Die durchschnittliche PR beträgt 3-4 Commits. Also ja. Wenn wir als Team alles auf einmal erledigen würden, bräuchten wir 8 Stunden X 7 Entwickler anstatt 8 Stunden, die über das Team verteilt sind. Ich ärgere mich über Ihre Unterstellung, dass wir etwas falsch machen. Wir gehen mehrmals in der Woche zum Stöbern . Machst du?
RubberDuck
Wir treiben jede Iteration einmal an
Low Flying Pelican