So geben Sie nach dem Codeüberprüfungsprozess Feedback

10

Ich überprüfe derzeit einen Teil des Codes von Junior-Entwicklern, die gerade meinem Team beigetreten sind. Ich frage mich, wie ich die Ergebnisse dieser Überprüfung liefern soll:

  1. Soll ich den Code selbst reparieren?

  2. Sollte ich ihnen Feedback zum Überprüfungsprozess geben und sie die Korrekturen gemäß meinen Anweisungen durchführen lassen? Und wenn ja, wie gebe ich dieses Feedback, fülle ich ein bestimmtes Vorlagendokument aus und sende es an sie, oder gibt es eine Software, mit der ich Probleme mit Problemen in den Codedateien markieren kann, die später überprüft werden können? (Ich benutze Visual Studio).

Nachdem ich den Code überprüft und die Korrekturen durchgeführt habe, ist einige Zeit vergangen und einige Teile des Codes, den ich in der Vergangenheit überprüft habe, haben sich geändert. Wie führe ich den Überprüfungsprozess durch? Sollte ich den gesamten Code noch einmal überprüfen? Oder überprüfe ich nur die Teile, die sich geändert haben? Und wenn ja, wie verfolge ich die Teile, die sich geändert haben, um eine doppelte Überprüfung des Codes zu vermeiden?

Sisyphus
quelle

Antworten:

14

Kurze Antwort

Soll ich den Code selbst reparieren?

Nein.

Sollte ich ihnen Feedback zum Überprüfungsprozess geben und sie die Korrekturen gemäß meinen Anweisungen durchführen lassen?

Ja. Nach Ihren Vorschlägen keine Anweisungen . Anweisungen klingen zu maßgeblich.

Und wenn ja, wie gebe ich dieses Feedback, fülle ich ein bestimmtes Vorlagendokument aus und sende es an sie, oder gibt es eine Software, mit der ich Probleme mit Problemen in den Codedateien markieren kann, die später überprüft werden können? (Ich benutze Visual Studio).

Verwenden Sie ein Tool, um das Feedback zu geben. Sie können Visual Studio verwenden.

Lange Antwort

Früher habe ich Visual Studio verwendet, aber ich musste ständig andere Entwickler fragen: "Hey, können Sie mir Ihre Arbeit schicken, damit ich sie überprüfen kann?" Das hat mir nicht gefallen und es hat nie wirklich gut geklappt. Jetzt verwende ich den Überprüfungsassistenten, da ich eine Überprüfung starten kann, indem ich mir die Checkins ansehe. Ich muss mich nicht darauf verlassen, dass ein anderer Entwickler mir Arbeiten zur Überprüfung sendet. Es hilft mir auch, Elemente als Fehler zu markieren oder einfach Elemente zu markieren, die vom Autor betrachtet werden sollen. Dies funktioniert für unser Team, da es nach dem Start einer Überprüfung direkt im Überprüfungsgremium verbleibt und nicht in der Übersetzung verloren geht. Dies ist in Visual Studio integriert. Wie bereits erwähnt, hat Visual Studio auch einen nativen Überprüfungsprozess, aber ich finde, dass er Einschränkungen aufweist und der Prozess nicht natürlich ist. Daher verwende ich den Überprüfungsassistenten.

Dieses Tool hilft auch beim Hin- und Her-Prozess, bei Diskussionen usw.

Der Prozess ist mehr oder weniger wie folgt:

Ich überprüfe etwas und sende es dann an den Autor (in Ihrem Fall Junior Dev). Sie nehmen Änderungen vor und senden sie dann zurück. Ich schaue mir die Änderungen an und gebe Feedback. Wenn ich mit den Änderungen gut bin, schließe ich die Überprüfung. Ansonsten geht es hin und her. Manchmal, wenn es zu viel hin und her gibt, gehe ich einfach zu ihrem Schreibtisch und benutze ein Whiteboard - das beschleunigt den Prozess wirklich.

Codeüberprüfungen sind ein sensibler Bereich. Seien Sie daher bei der Wahl des Wortlauts sehr vorsichtig. Ich erzähle es niemandem

Schlechte Wortwahl

Ich habe Ihren Code überprüft und es gibt einige Elemente, die Sie ändern müssen.

Ich sage stattdessen Folgendes:

Bessere Wortwahl

Ich habe mir Ihren Code angesehen und brauche Hilfe. Können Sie bitte die Artikel überprüfen, die ich Ihnen gesendet habe, und prüfen, ob Sie einige meiner Fragen klären können?

Dies lässt den Autor denken:

  1. Ich brauche Hilfe, damit sie nicht in einen defensiven Modus wechseln.
  2. Es hört sich so an, als wären sie der Rezensent, nicht ich. Technisch gesehen sind sie, da ich sie auffordere, einen anderen Blick darauf zu werfen und einige Dinge zu ändern, wie der Rezensent.

Diese einfachen Wortwahlen haben mir enorm geholfen.

Ich unterschätze nie Junior-Entwickler. Ich habe mit einigen erfahrenen Entwicklern zusammengearbeitet (über 10 Jahre Erfahrung) und dort war der Code schlechter als bei einem Junior-Koop-Studenten. Nur weil sie älter oder jünger sind, ist das gar nicht so wichtig. Ihre Arbeit spricht wirklich mehr als jahrelange Erfahrung.

Um Junior-Entwickler zu ermutigen und sie dazu zu bringen, an Reviews teilzunehmen, schicke ich ihnen oft etwas, das sie für mich rezensieren können: etwas, das sie herausfinden können, etwas, das sie herausfordernd finden, aber nicht völlig darüber hinaus. Ich kann es wie folgt ausdrücken:

Können Sie bitte einen Code für mich überprüfen, da ich ihn nicht herausfinden kann?

Das hilft mir wieder sehr. Dies hilft, weil es deutlich zeigt, dass ich nicht der einzige bin, der Bewertungen abgibt, aber sie führen auch Bewertungen durch und sie sind auch Teil des Prozesses. Es zeigt, dass die ganze Idee darin besteht, guten, sauberen Code zu erstellen und bei Bedarf um Hilfe zu bitten. Der Überprüfungsprozess ist eine Kultur, daher müssen wir wirklich daran arbeiten.

Jetzt können einige Leute befürchten, dass die Junior-Entwickler den Respekt verlieren, wenn sie das oben Genannte tun, weil sie einfach etwas getan haben, was Sie nicht tun konnten. Aber das ist weit von der Wahrheit entfernt: Um Hilfe zu bitten, zeigt Demut. Außerdem gibt es viele Situationen, in denen Sie glänzen können. Wenn das Ihre Angst ist, haben Sie Probleme mit dem Selbstwertgefühl. Schließlich weiß ich es vielleicht wirklich nicht: Ich meine, einige dieser Entwickler haben Algorithmen im Kopf, weil sie sie erst vor einem Monat studiert haben.

Wie auch immer, zurück zu Junioren und Bewertungen. Sie sollten den Ausdruck auf ihren Gesichtern sehen, wenn sie es herausfinden und mir eine Antwort senden. Ich kann ihnen dann sagen: "OK, lassen Sie mich die Änderungen vornehmen, und wenn Sie damit zufrieden sind, schließen Sie das Problem."

Sie fühlen sich großartig, wenn sie die Möglichkeit haben, sich meine Arbeit anzusehen und zu sagen: "Ja, Ihre Änderungen sind gut. Ich habe das Problem geschlossen."

Ich habe den Code jedoch nie selbst repariert, weil:

  1. Der Autor wird daraus nicht lernen.
  2. Es ist, als würde ich sagen: "Gehen Sie zur Seite, lassen Sie mich Ihnen zeigen, wie es gemacht wird. Mein Code ist besser als Ihrer."
  3. Warum sollte ich? Das ist mehr Arbeit für mich.

Aber ich werde in meinen Kommentaren Ideen und Code-Schnipsel vorschlagen, um dem Autor zu helfen. Bitte beachten Sie, dass meine Bewertungen manchmal einfach den Autor fragen, dass ich ihren Code nicht verstehe. Möglicherweise ist an ihrem Code nichts auszusetzen. Möglicherweise müssen sie Variablennamen ändern, Kommentare hinzufügen usw. Daher weiß ich nicht einmal, was ich in diesem Fall ändern soll. nur sie werden.

Wenn Sie weiterhin Überprüfungen durchführen, haben Sie früher oder später eine wirklich gute Vorstellung vom Wissensstand jedes Entwicklers im Team. Das zu wissen ist wirklich nützlich und Sie müssen es nutzen und entfesseln. So geht's: Wenn ich Code überprüfe und offensichtliche Verbesserungsmöglichkeiten sehe und weiß, dass ein anderer Entwickler sie möglicherweise auch abfängt, werde ich sie stattdessen dazu bringen, ihn zu überprüfen. Etwas wie "Hey, ich sehe einige Bereiche, die verbessert werden können. Können Sie es bitte genauer überprüfen und Ihre Kommentare an den Autor senden?" Das funktioniert auch super, weil ich jetzt 2 andere Entwickler habe, die miteinander arbeiten.

Wenn ich einige Arbeiten überprüfe und etwas bemerke, von dem das gesamte Team profitieren kann, erstelle ich ein hypothetisches Szenario und erkläre das Problem in einer Besprechung. Ich werde zunächst das Szenario erläutern und alle fragen, ob sie das Problem finden oder sehen können, und sie einbeziehen. Lassen Sie alle Fragen stellen. Dann endlich einen besseren Ansatz präsentieren. Wenn jemand anderes einen besseren Ansatz hat, danke ich ihm und bestätige vor dem Team, dass sein Ansatz besser ist. Dies zeigt, dass ich keine Persönlichkeit vom Typ "Mein Weg oder die Autobahn" bin. Außerdem öffne ich NIEMALS jemandes Arbeit und beginne, in einer Besprechung auf die Probleme hinzuweisen. Der Autor wird es nicht zu schätzen wissen - unabhängig davon, wie nett und harmlos ich denke, dass ich bin.

Wenn ich Überprüfungen durchführe, suche ich nicht nur nach gutem, sauberem Code, sondern auch nach dem, was der Code tut. Wenn die Geschäftsanforderung lautet: Wenn ein Mitarbeiter länger als 10 Jahre im Unternehmen ist, erhöhen Sie ihn um 5%. Ansonsten 2,5% . Das erste, was ich überprüfe, ist, ob es das tatsächlich tut. Dann überprüfe ich, ob es sauber, konsistent und performant ist.

Wenn ich eine Überprüfung durchführe, stelle ich sicher, dass ich sie weiterverfolge, da sonst niemand die Bewertungen ernst nimmt.

Ich habe vor Jahren mit jemandem zusammengearbeitet, der eine Überprüfung durchführte und den Entwickler-Manager und den QS-Manager leitete, aber beide Manager hatten einen geschäftlichen Hintergrund oder hatten wenig Entwicklungserfahrung. Er tat dies nur, um sie zu beeindrucken. Niemand mochte es und dann sagte ich mir, ich würde diesen Fehler niemals machen.

Das andere, was er früher gemacht hat, ist die Auswahl des Programmierstils und er war überzeugt, dass sein Stil der beste ist ("Mein Kung Fu ist viel besser als dein Affenstil ..."). Das war eine weitere Lektion für mich: Es gibt immer mehr als einen Weg, ein Problem zu lösen.

Beantworten Sie einige Ihrer nummerierten Fragen

1- sollte ich den Code selbst reparieren?

Nein, siehe Gründe, die ich oben angegeben habe.

2- Soll ich ihnen Feedback zum Überprüfungsprozess geben und sie die Korrekturen gemäß meinen Anweisungen durchführen lassen?

Ja, versuchen Sie, Sätze und einen Ton zu verwenden, der freundlich ist, aber dennoch Aufmerksamkeit erfordert. Sei so klar wie du kannst. Geben Sie an, was das Problem mit dem Code ist und wie Sie ihn verbessern können. Bitten Sie nicht einfach darum, es zu ändern. Aber Gründe angeben.

Wie gebe ich dieses Feedback, fülle ich ein bestimmtes Vorlagendokument aus und sende es an sie, oder gibt es eine Software, mit der ich Probleme mit Problemen in den Codedateien markieren kann, die sie später überprüfen können? (Ich benutze Visual Studio).

Wie gesagt, Sie können das von mir verwendete Tool oder ein anderes Tool verwenden. Verwenden Sie keine E-Mail- oder Word-Dokumente, da diese verloren gehen und es schwierig ist, den Überblick zu behalten.

Nachdem ich den Code überprüft und die Korrekturen durchgeführt habe, ist irgendwann vergangen und einige Teile des Codes, den ich in der Vergangenheit überprüft habe, haben sich geändert. Wie führe ich den Überprüfungsprozess durch? sollte ich den gesamten Code noch einmal überprüfen?

Meistens überprüfe ich das Delta (nur Änderungen). Sie müssen jedoch das Gesamtbild im Auge behalten, um sicherzustellen, dass nichts kaputt geht und der Architektur folgt.

Abschließende Gedanken

Ich persönlich halte das Wort "Code Review" für eine schlechte Wahl und weiß nicht, wie es angefangen hat. Sie hätten ein viel besseres und weniger maßgebliches Wort wählen können.

Codierung von Yoshi
quelle
Dies würde nur für kleine Dinge wie Variablennamen funktionieren. Wenn die Architektur jedoch falsch ist, gibt es kein Tool, das helfen kann. Sie müssen nur das Ganze wegwerfen und neu schreiben.
t3chb0t
@ t3chb0t Warum kleine Dinge? Damit wollte making sense architecturallyich sicherstellen, dass sich der Code der Datenzugriffsschicht innerhalb der Datenzugriffsschicht befindet, die Validierung der Benutzeroberfläche in der Benutzeroberfläche usw. Mit anderen Worten, um sicherzustellen, dass die Bedenken nicht in andere Bereiche übergehen. Es gibt Tools, mit denen Sie die Architektur beibehalten können. Eigentlich macht VS das jetzt sofort . Das nutzen wir auch.
CodingYoshi
In Bezug auf Tools denke ich, dass ein absolut gültiges Tool jede Form von Ticketing- / Arbeitsverfolgungssoftware ist, die Sie wahrscheinlich bereits verwenden, um zu verfolgen, was getan werden muss. Wenn Sie beispielsweise Github verwenden, sind Ihre Änderungen möglicherweise alle mit einem Problem verbunden, und die Überprüfung wird dann in diesem Diskussionsthread durchgeführt. Jira und Trac sind zwei weitere solche Tools. Dadurch bleibt ein zentraler Ort für alle Informationen im Zusammenhang mit der Arbeit und es ist deutlich sichtbar, bevor das Ticket geschlossen wird.
Kat
@Kat Ich bin mir nicht sicher, ob ein Ticketing-Tool das richtige Tool ist. Die Codeüberprüfungstools zeigen den Unterschied zwischen Änderungen und die Probleme sind andere Probleme als Probleme in einem Ticketingsystem. Sie bedeuten verschiedene Dinge. Aber ich könnte mich irren.
CodingYoshi
3

Viel hängt davon ab, wie Sie die Codeüberprüfungen in Ihrem Unternehmen verstehen. Es gibt Unternehmen, in denen eine Codeüberprüfung ein stark formalisierter Prozess ist, der selten stattfindet, aber eine große Sache ist. Bei anderen ist die Codeüberprüfung ein obligatorischer Bestandteil jeder Aufgabe, die implementiert wird, und eine sehr banale und schnelle Sache mit wenig Formalismus. Persönlich entscheide ich mich für den letzteren Ansatz, aber es kann Ihre Entscheidung sein oder auch nicht, ob Sie ihn verwenden können oder nicht.

Ich habe einen Blog-Beitrag mit dem Titel geschrieben. Sind Code-Reviews Ihre Zeit wert? um den von meinem Team verwendeten Prozess zusammenzufassen. Die Imbissbuden, wie sie sich auf Ihre Frage beziehen, wären:

  1. Lassen Sie die Entwickler den Code korrigieren. Auf diese Weise können sie Ihre Kommentare besser verstehen (oder feststellen, dass sie sie nicht vollständig verstehen und fragen), und das Ausführen einer Aufgabe ist eine bessere Art zu lernen, als nur darüber zu lesen.
  2. Software für Codeüberprüfungen ist der richtige Weg. Es stehen viele Optionen zur Verfügung, sowohl Open Source als auch proprietär. Das meiste davon funktioniert mit Git. Mein Team verwendet BitBucket (früher bekannt als Stash), es gibt auch GitLab und GitHub, Gerrit (von dem ich persönlich kein Fan bin) und viele andere. Die meisten dieser Apps sind webbasiert, daher spielt es keine Rolle, welche IDE Sie verwenden, aber es gibt auch Plugins für viele IDEs. Ich bin sicher, dass es auch einige für Visual Studio gibt. Mit einer solchen Software können Sie Code überprüfen, bevor er in den Hauptzweig eingefügt wird (normalerweise über Pull Requests), und die geänderten Teile und einige Kontextzeilen um jede Änderung herum anzeigen. Dies macht die Codeüberprüfung flüssig und problemlos.

Was den Überprüfungs-Fix-Check-the-Fix-Zyklus betrifft, sollte Ihre Auswahl von der Reife der Entwickler und der Schwere der von Ihnen entdeckten Probleme abhängen. Sobald Teams Codeüberprüfungen zu einem täglichen Prozess machen, können Sie damit rechnen, dass geringfügige Änderungen wie das Umbenennen einer Klasse einfach angewendet werden und wahrscheinlich nicht erneut überprüft werden müssen. Wenn das Team noch keine Code-Reviews verkauft hat oder die Leute wirklich unerfahren sind, sollten Sie solche Dinge trotzdem überprüfen. Wenn Ihre Überprüfung jedoch ein komplexes Parallelitätsproblem festgestellt hat, das Junior-Entwickler möglicherweise nicht vollständig verstehen, selbst nachdem Sie sie darauf hingewiesen haben, sollten Sie das Update überprüfen und die Änderung nicht genehmigen, bevor Sie sicher sind, dass sie wirklich behoben wurde.

Tools können Ihnen dabei helfen, da Sie bei der Arbeit mit Pull-Anforderungen die Software einfach so einrichten können, dass das Zusammenführen einer Änderung erst nach Genehmigung durch eine bestimmte Anzahl von Entwicklern möglich ist. Normalerweise können Sie die Änderungen in einzelnen Commits einer Änderung anzeigen, sodass Sie nur die Änderungen anzeigen können, die seit Ihrer letzten Kommentarrunde hinzugefügt wurden.

Michał Kosmulski
quelle
1

Ich stimme für die zweite Option. Junioren haben möglicherweise eine bessere "Lernkurve", wenn sie die Änderungen selbst vornehmen.

Außerdem: Seien Sie nicht der einzige, der den Code überprüft.
Lassen Sie einige der erfahrenen Mitglieder Ihres Teams auch den Code einsehen und ein regelmäßiges Besprechungstreffen planen, bei dem die Prüfer dem Autor ihre Ergebnisse (die sie vor dem Treffen gemacht haben!) Präsentieren. Dies erhöht die Motivation sowohl der Junioren als auch der Mitglieder des Erfahrungsteams.

Timothy Truckle
quelle
4
Toller Punkt. Außerdem sollten die Junioren den OP-Code und den Code des jeweils anderen "überprüfen".