Eines meiner Teammitglieder, ein Junior-Programmierer, verfügt über beeindruckende Programmierkenntnisse für sein Erfahrungsniveau.
Und ich glaube, dass ich bei Code-Überprüfungen den Schwerpunkt auf das Lernen legen und nicht auf Fehler hinweisen muss.
Aber sollten Junior-Programmierer an Code-Überprüfungen für Senior-Programmierer beteiligt sein? Oder sollten Code Reviews nur von Programmierern mit entsprechender Erfahrung besucht werden?
teamwork
code-reviews
pair-programming
Md Mahbubur Rahman
quelle
quelle
Antworten:
Der Hauptzweck einer Codeüberprüfung ist das Auffinden von Fehlern oder möglichen Problemen. Die erforderlichen Teilnehmer an der Überprüfung sollten die Personen sein, die am besten geeignet sind, um diese Probleme zu identifizieren, unabhängig von ihrem Titel oder Dienstalter.
Wenn zum Beispiel eine Anwendung in Python entwickelt wird und der Junior Engineer mehr Erfahrung mit der Python-Sprache hat als der Senior Engineer, der den Code geschrieben hat, dann sind sie möglicherweise eine wertvolle Hilfe, wenn es darum geht, alternative Methoden aufzuzeigen, um etwas zu tun, aber sie Möglicherweise haben Sie auch weniger Kenntnisse über das gesamte System.
Berücksichtigen Sie neben der Erfahrung mit Tools und Technologien auch die Erfahrung im Anwendungsbereich. Jemandem mit 20 Jahren Erfahrung, aber nur 1 oder 2 in der Finanzbranche kann geholfen werden, indem ein insgesamt weniger erfahrener Entwickler mit nur 5 Jahren Erfahrung in der Finanzbranche seine Arbeit überprüft.
Das Einladen weniger erfahrener Mitarbeiter zur Beobachtung und Teilnahme am Codeüberprüfungsprozess kann auch hilfreich sein, um eine Codebasis zu erlernen, Fragen zu stellen und zu erfahren, was von ihnen nicht nur in Codeüberprüfungen, sondern auch in der Datenbank erwartet wird Code, den sie produzieren. Wahrscheinlich möchten Sie jedoch nicht zu viele Personen in den Prozess einbeziehen (anstatt sich auf die Personen zu konzentrieren, die die Codeüberprüfung und deren Zweck voll unterstützen können).
Dies gilt wirklich für jede Art von Überprüfung - Anforderungen, Design, Code ...
quelle
Ja, das sollten sie. Es ist eine gute Lernerfahrung, den Code anderer Leute zu lesen. (Und das gilt sowohl für guten als auch für schlechten Code. Man würde allerdings hoffen, dass der Code eines älteren Entwicklers nicht schlecht ist ...)
Offensichtlich ist es unklug, nur Junioren die Codeüberprüfung durchführen zu lassen. Und unklug, zu hohe Erwartungen an die Junioren in Bezug auf das zu stellen, was sie finden können. Sie könnten jedoch auch von den neuen Erkenntnissen überrascht sein, die die Junior-Programmierer mitbringen können.
Eine andere Antwort erwähnte, dass Junioren eingeschüchtert sind. Darum sollte es bei der Codeüberprüfung NICHT gehen ... weder für die Überprüften noch für die Überprüfer. In diesem Fall muss Ihre Gruppe die Art und Weise ändern, in der sie ihre Codeüberprüfungen durchführt ... und möglicherweise müssen die Einschüchterer in Einklang gebracht werden.
quelle
Ich würde hinzufügen, dass, wenn ein "Junior" -Programmierer einen Seniorencode nicht verstehen kann , dies an sich ein gutes Maß für den Code ist. OK, es mag Zeiten geben, in denen es einfach nicht möglich ist, Code zu schreiben, den jeder verstehen kann, aber das sind hoffentlich Ausnahmen. Wenn nur 1 oder 2 Personen den Code verstehen können, was passiert, wenn diese Personen nicht verfügbar sind und ein Problem vorliegt es?
Den Menschen neue Herausforderungen zu geben, hilft ihnen, sich zu entwickeln. Es kann auch sein, dass nicht jeder für die Überprüfung von Code ausgeschnitten ist, es jedoch dogmatisch erscheint, darauf zu bestehen, dass jemand einen Titel hat (der von der Personalpolitik und den Spielen bestimmt wird ), bevor er für eine Überprüfung in Frage kommt.
Wie andere betont haben, kann eine Codeüberprüfung ein Zwei-Wege-Prozess sein. Es hilft jedem, die Codebasis zu verstehen, teilt also das Wissen, hilft den Junioren, neue und bessere Wege und Techniken von ihren Senioren zu lernen und hilft den Senioren, ihr Verständnis zu verfeinern und zu schreiben, um sicherzustellen, dass jeder dem Code folgen kann. Sie haben mehr Augen, die können fange Fehler.
quelle
Der Zweck der Codeüberprüfung besteht darin, Probleme zu erkennen, die beim Testen nicht erkannt werden können, z. B. Wartbarkeitsprobleme und Eckfälle. Ich würde argumentieren, dass Junior-Programmierer in vielerlei Hinsicht besser für diesen Zweck geeignet sind :
Das heißt nicht, dass es keine anderen Möglichkeiten gibt, wie erfahrene Programmierer besser für Überprüfungen geeignet sind. Mein Punkt ist jedoch, dass Sie einen schlechten Dienst leisten, wenn Sie die Vielfalt Ihres Teams nicht voll ausnutzen.
quelle
Junioren werden oft gebeten, den Code zu pflegen. Es ist wichtig, dass sie ihn verstehen können.
Manchmal sind Junioren die einzigen Personen, die den Code der Senior-Entwickler lesen können. Sollte der Code warten, bis er zur Qualitätssicherung weitergeleitet wird (ohne eine Codeüberprüfung wird nichts aus dem Entwickler herausgedrückt, und ich gehe auch von einer solchen Codeüberprüfung aus), weil der Chef des Senior im Urlaub ist?
Ich habe Junioren auch ausdrücklich gebeten, einen Code zu überprüfen, wenn ich wusste, dass sie in Kürze etwas Ähnliches für einen anderen Kunden tun würden, oder wenn ich wusste, dass sie an etwas anderem gearbeitet hatten, das ähnlich war oder bestimmte Fähigkeiten besaßen.
Wenn der Code ziemlich einfach ist, lasse ich die Überprüfung oft von einer Junior-Person durchführen. Warum die Zeit der älteren Person verschwenden, wenn die jüngere Person in der Lage ist, die Arbeit zu erledigen? Wenn Junioren sich durch die Überprüfung des Senioren-Codes eingeschüchtert fühlen, lassen Sie sie zunächst die einfacheren Teile betrachten. Schließlich kommt man nicht daran vorbei, jünger zu sein, bis man aufhört, sich eingeschüchtert zu fühlen.
Ich habe oft festgestellt, dass, wenn ich den Code einer jungen Person erklären muss, die ihn nicht versteht, ein Fehler auftritt, den ich gemacht habe (normalerweise unter der Annahme), und dass kein erfahrener Code-Prüfer ihn abgefangen hätte, weil der Code ausgeführt wird aber tut nicht genau das, was beabsichtigt war. Nur das Erklären der Dinge hilft dem Entwickler häufig dabei, ein Problem zu erkennen, ohne dass der Code-Prüfer es findet. Da erfahrene Leute nicht oft Schritt für Schritt durch den Code geführt werden, können solche Dinge leichter gefunden werden, wenn ein Junior die Überprüfung durchführt.
Ich finde, dass die Beteiligung von Junior an Reviews mehrere gute Effekte hat. Erstens werden sie sicherer, wenn sie den Code einer älteren Person verstehen können. Es macht sie noch sicherer, wenn sie einen Fehler in diesem Code finden können.
Es setzt sie Denkprozessen außerhalb ihrer eigenen aus und lässt sie andere Arten des Umgangs mit Dingen erkennen. Das ist mir schon als Seniorin passiert - eine andere Art der Problemlösung zu sehen, kann ein Augenöffner für neue Möglichkeiten sein.
Es hilft ihnen, den Code anderer Leute zu lesen und gibt ihnen die Möglichkeit zu fragen, was der Code tut, während er noch in den Köpfen des Autors ist. Das ist viel besser, als das Ding sechs Monate später warten zu müssen, wenn der Autor schon lange nicht mehr da ist oder mit einem anderen Projekt beschäftigt ist und keine Zeit für Fragen hat.
Es ist gut für die Senioren, da die Fragen potenzielle Bereiche aufdecken, in denen der Junior schwach ist und Mentoring benötigt (damit er mehr Verantwortung übernimmt und den Senioren mehr Zeit für andere Arten von Aufgaben lässt), oder Bereiche, in denen der Kodex einfach nicht klar ist mit Ausnahme des Autors (was bedeutet, dass dem Autor in einem Jahr möglicherweise nicht einmal klar ist, wann er geändert werden muss). Es hilft auch den Senioren zu erkennen, dass die Junioren klüger sein können, als sie es bisher zugetraut haben. Es hilft, alle auf einem professionellen Stand zu halten. Wenn Sie Junioren ausschließen, implizieren Sie eindeutig, dass sie nicht in der Lage sind, den Code zu verstehen, der psychologisch bedauerlich ist.
Die Überprüfung des Seniorenkodex durch Junioren kann zu mehr professionellem Respekt in Ihrer Organisation führen. Senioren stellen möglicherweise fest, dass sie die Junioren unterschätzt haben, und Junioren stellen möglicherweise fest, dass die Senioren mehr wissen, als sie ihnen zugetraut haben. Junioren denken manchmal, sie hätten größere Fähigkeiten als sie. Der Kontakt mit Code, den sie nicht schreiben können, ist gut für diese Leute, weil sie allmählich erkennen, dass sie noch viel mehr lernen müssen. Es wird auch die besten von ihnen anspornen, die Fähigkeiten zu erlangen. In der Schule verstehen die B-Schüler manchmal nicht, warum sie kein A bekommen haben, bis ihnen jemand ein Beispiel für die A-Stufe der Arbeit zeigt. Gleiches gilt für Junioren und Senioren bei der Codeüberprüfung.
quelle
Meine Antwort lautet: Manchmal . Es wird von Programmierer zu Programmierer und von Aufgabe zu Aufgabe variieren.
Zum:
Gegen:
quelle
Ich bin der festen Überzeugung, dass jeder im Team an beiden Seiten der Codeüberprüfung beteiligt sein sollte. Junioren sollten den Senior Code überprüfen und umgekehrt. Warum beides? Denn in der Regel geht es nicht nur darum, ob Code "das Problem löst". Ich kann Ihnen nicht sagen, wie oft ich jemandem einen Code erklären musste und wie ich ihn am Ende der Erklärung plötzlich viel besser machen kann. Code Reviews dienen wahrscheinlich 3 Zwecken:
Ich bin ein Junior und ich überprüfe häufig älteren geschriebenen Code. Es handelt sich um eine allgemeine Unternehmensrichtlinie, nach der "jeder Code von jemandem überprüft wird". Ich lerne viel von diesen, wenn sie ihren Code überprüfen und die Möglichkeit haben, Fragen zu stellen, warum Dinge auf eine bestimmte Art und Weise getan werden. Und manchmal schlage ich einen saubereren Weg vor, um ein bestimmtes Stück Code und so weiter zu machen. Viel seltener als Leute, die mir sagen, wie ich meinen Code verbessern kann, aber es ist mindestens einmal passiert.
Es ist auch wichtig, wie formal Ihre Codeüberprüfungen sind. Unsere sind sehr informell und bestehen aus "Hey, sieh dir meinen Code an", das in den Kabinen oder in einem privaten IRC-Kanal gesagt wird. Ich könnte mir vorstellen, wenn Sie den Code in einer formelleren Umgebung überprüfen, wäre der Junior wahrscheinlich viel mehr eingeschüchtert, wenn er den Code eines Senioren überprüft.
quelle
Absolut, Junior-Ingenieure sollten zumindest zeitweise den Code der Senior-Ingenieure überprüfen.
Nach meiner Erfahrung sieht der Rezensent in einer Eins-zu-Eins-Code-Überprüfung nur selten einen Fehler, den der ursprüngliche Kodierer übersieht, unabhängig davon, ob der Rezensent älter oder jünger ist. der Rezensent muss nicht einmal menschlich sein . Andererseits ist es sehr verbreitet, dass der ursprüngliche Codierer beim Erklären des Codes einen Fehler erkennt, und je jünger der Prüfer ist, desto wahrscheinlicher ist dies aufgrund der erforderlichen Erklärungstiefe.
Einige meiner Meinung nach häufig übersehene Vorteile der Codeüberprüfung, die auf lange Sicht möglicherweise wichtiger sind als das Abfangen von Fehlern:
In diesen beiden Aspekten profitiert ein Junior-Reviewer in der Regel mehr als ein Senior-Reviewer.
quelle
Junior-Programmierer sollten unbedingt Code-Reviews für ihre älteren Kollegen durchführen!
Sie sollten jedoch nicht der einzige Rezensent sein . Koppeln Sie sie mit einem erfahrenen Entwickler per Code Review.
Es gibt eine Vielzahl von Vorteilen:
Der Autor wird gezwungen sein, mehr von seinem Code zu erklären. Das Durchsprechen Ihres Codes ist eine der besten Methoden , um Probleme damit zu finden, oder eine bessere Methode, dies zu tun.
Der Autor wird Schwachstellen in seinem Code finden. Es ist wahrscheinlicher, dass der Junior-Entwickler von einigen der fortgeschritteneren Chunks verwirrt wird. Häufig sind diese "zu knifflig" und könnten von einer Vereinfachung profitieren.
Der Junior-Entwickler lernt bessere Codierungspraktiken. Code Reviews sind eine Gelegenheit, mit gutem Beispiel voranzugehen.
Der Junior-Entwickler wird ein effektiverer Code-Prüfer sein. Codeüberprüfung ist schwierig . Je erfahrener jeder mit Codeüberprüfungen ist, desto schneller und effektiver werden Codeüberprüfungen.
Der Junior-Entwickler verfügt über tiefere Kenntnisse der Codebasis. Egoistisch sein! Wenn Sie die Junior-Entwickler frühzeitig einschalten, können Sie sie früher an sie weitergeben.
Der Junior-Entwickler wird sich mehr involviert fühlen. Der Junior-Entwickler wird anfangen, den "Senior" -Code (und seine Kollegen) als weniger fremd und einschüchternd zu betrachten. Dies ist ein enormer und oft übersehener Vorteil von Code Reviews.
Der Junior-Entwickler ist ein frischer Augenschmaus. Sie sind nicht so indoktriniert wie jemand, der lange Zeit an der Codebasis gearbeitet hat. Der Junior-Entwickler wird beim Stellen von Fragen mit größerer Wahrscheinlichkeit auf verschiedene Arten der Ausführung von Aufgaben hinweisen. Schüttle ihre wilderen Kommentare nicht ab, ohne zumindest ein wenig Rücksicht zu nehmen!
Die Senior-Entwickler werden zur Rechenschaft gezogen. Ich habe oft Situationen erlebt, in denen ältere Entwickler dazu neigen, den Code des jeweils anderen zu beschönigen (Vertrauen, Faulheit usw.). Ein zusätzlicher Satz von Augen hilft, es zu entmutigen.
Der Nachteil ist, dass alle Beteiligten eine angemessene Menge Zeit damit verbringen werden, Codeüberprüfungen durchzuführen. Daher kann es ein bisschen schwierig sein, es an das Management zu verkaufen. Die Vorteile überwiegen jedoch bei weitem das langsamere Tempo.
quelle
Eine Codeüberprüfung dient zum Überprüfen von Code, nicht zum Lernen. Wenn ich ein Junior-Programmierer wäre, würde ich mich einschüchtern lassen, den Code von Senioren zu überprüfen.
Auf der anderen Seite ist das Lesen des Senior-Codes eine großartige Lernmethode, vorausgesetzt, der Senior steht für die Beantwortung aller Fragen zur Verfügung.
Zwei Alternativen könnten sein:
quelle