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:
Soll ich den Code selbst reparieren?
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?
quelle
Antworten:
Kurze Antwort
Nein.
Ja. Nach Ihren Vorschlägen keine Anweisungen . Anweisungen klingen zu maßgeblich.
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 sage stattdessen Folgendes:
Bessere Wortwahl
Dies lässt den Autor denken:
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:
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:
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
Nein, siehe Gründe, die ich oben angegeben habe.
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 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.
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.
quelle
making sense architecturally
ich 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.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:
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.
quelle
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.
quelle