Wie gehe ich mit jemandem um, der die Idee der Codeüberprüfung nicht mag?

26

Wenn das Management Zeit mit Code-Reviews verbringen möchte, muss dies natürlich jeder tun.

Aber es gibt immer die Jungs (oder Mädels), die sich mit jedem Gramm ihres Seins widersetzen.

Wie schaffen Sie es effektiv, mit diesem Szenario umzugehen, wenn Sie als Peer-Reviewer damit umgehen?

ozz
quelle
19
Wahrscheinlich genauso wie Sie mit Menschen umgehen, die Probleme mit anderen Dingen wie Kleiderordnung, Aktualität, Krankheitstage usw. haben
Josh K
hehe ... Ich habe versucht zu qualifizieren, dass das Management sagt, dass jeder es tun muss. Was ich suche, ist, wenn Sie als niedriger Peer-Reviewer versuchen müssen, es zu erledigen.
ozz
3
Ehrlich gesagt: Sagen Sie ihnen, sie sollen den Mund halten und es tun. Es ist zu ihrem eigenen Besten.
Steven Evers
1
Widerstehen was? Lassen Sie ihren Code sehen oder sehen Sie sich Ihren an? Sie können Konflikte vermeiden, können sie Konflikte erwarten? Weißt du, warum sie zögern?
Martin Maat

Antworten:

46

Er wehrt sich aus Angst . Diese Konditionierung kann das Ergebnis früherer schlechter Erfahrungen sein, als Kind, in der Schule, bei der Arbeit oder sogar in Ihrem derzeitigen Team überprüft zu werden. In unseren modernen Gesellschaften ist es sehr verbreitet, die Arbeitsergebnisse eines Menschen mit seinem Wert als Mensch zu verwechseln. Das ist der Grund, warum Bewertungen bei der Arbeit nicht gut aufgenommen werden. Das ist auch der Grund, warum in der Öffentlichkeit in einer der am weitesten verbreiteten Phobien gesprochen wird (Angst vor dem Urteil).

Um ein solches Verhalten zu vermeiden, benötigen Sie etwas Psychologie. Sie müssen seinem Echsengehirn beweisen, dass es nicht passieren wird (er wird nicht beurteilt, gedemütigt, getötet, irgendetwas ...), indem Sie ihn für Code-Überprüfungen desensibilisieren .

Eine der effektivsten Methoden, die ich gefunden habe, um jemanden zu entsperren, besteht darin , ihn zu bitten, Ihren Code zu überprüfen , bevor er ihn auffordert, seinen Code zu überprüfen.

Schlagen Sie ihm nach einer Weile vor , seinen Code zu lesen, um daraus zu lernen, und warum nicht Verbesserungen vorschlagen . Wenn Sie etwas zu ändern finden, achten Sie darauf, was Sie schreiben. Er wird verstehen, dass es nichts gibt, wovor er sich fürchten muss, und er wird nur den positiven Teil des Überprüfungsprozesses übernehmen: lernen und sein Wissen erweitern .

Michael K
quelle
3
Vielleicht möchten Sie eine Definition für "Eidechsenhirn" für Leute hinzufügen, die damit nicht vertraut sind.
Adam Lear
@Anna: Ich habe gerade den Link zu einer Definition hinzugefügt.
Ehrfürchtige Antwort, Pierre! Anstelle einer endgültigen Antwort fürs Erste upvoted.
ozz
1
@ Aaron: Ich bezog mich auf "jemanden", der in der Frage erwähnt wurde. Ja, ich habe immer noch irrationale Befürchtungen, weil ich sowohl im Kindesalter als auch im Erwachsenenalter krank bin, wie die meisten von uns. Beispiele: Ich habe eine irrationale Angst vor Höhen. Ich desensibilisiere mich, wenn ich kann. Letztes Wochenende besuchte ich eine Zitadelle (in meinem Land sehr verbreitet, weil es immer wieder Kriege zwischen Franzosen und Deutschen gab) und musste eine Straßenbahn nehmen.
1
Wie immer eine hervorragende Antwort Pierre.
Josh K
5

Ich würde versuchen, in Paaren zu arbeiten - Team jemand, der die Idee hasst, mit jemandem, der es mag, und lassen Sie sie für ein paar Wochen den Code des anderen überprüfen. Offensichtlich kann dies helfen oder auch nicht, aber wenn Sie sich an beiden Enden der Überprüfung befinden, erhalten Sie zumindest einen umfassenderen Überblick über den Prozess. Wenn ein Paar zusammenarbeitet, können sie sich mit dem Stil und den häufigsten Fehlern des anderen vertraut machen und haben Zeit, sich gegenseitig dabei zu helfen, besser zu werden, anstatt sich gegenseitig den Stempel aufzudrücken. Dies kann Ihnen auch dabei helfen, die Paarbildung in Ihrer Arbeitsumgebung voranzutreiben, da Sie möglicherweise die Tendenz sehen, nicht nur zu überprüfen, sondern auch neu zu codieren oder sogar von Grund auf neu zu planen und zu codieren.

Solange die desinteressierten Parteien bereit sind, es zu versuchen, könnte dies helfen. Wenn sie sich weigern, darüber nachzudenken, können Sie nicht viel tun, solange sie im Team sind.

Michael K
quelle
Paarprogrammierung ist ein ganz anderes Thema, aber ein toller Vorschlag!
ozz
Ihr Kommentar hat mich dazu gebracht, über PP nachzudenken, also habe ich einen weiteren Q- Programmierer gestartet. Stackexchange.com/questions/39878/… Danke!
ozz
4

Die Antwort von @ Pierre ist genau richtig für jemanden, der eine Codeüberprüfung fürchtet. Ich kann mir eine andere Situation vorstellen. Ein Star-Programmierer, der eine Codeüberprüfung empfindet, ist Zeitverschwendung, da dort ein akzeptabler Qualitäts- und Korrektheitsstandard erreicht wird. In diesem Fall könnte eine Codeüberprüfung eine Zeitverschwendung und eine Hexenjagd sein. (Das ist eine Suche nach einem Problem, wenn es keines gibt.)

In diesem Fall würde ich das Ziel der Überprüfung neu ausrichten. Bei der Codeüberprüfung geht es nicht darum, "Probleme" im Code zu finden, sondern darum, nach Re-Factoring-Zielen, möglichen zukünftigen Verbesserungen oder zusätzlichen Design-Features zu suchen. Auf diese Weise sind sowohl der Codierer als auch der Prüfer in den Prozess involviert, und hoffentlich fühlt sich dieser fähige Codierer an, als würde die Zeit sinnvoll genutzt.

Hogan
quelle
5
Mit dieser Art von Person könnten Sie versuchen, sie wissen zu lassen, dass Sie aufgeregt sind, ihren Code zu überprüfen, weil Sie glauben, dass Sie viel von ihnen lernen werden. Bei der Codeüberprüfung geht es nicht nur darum, den Code zu verbessern, sondern auch darum, andere im Team einem besseren Code auszusetzen, der ihnen bei der zukünftigen Entwicklung hilft.
HLGEM
2

Ehrlich gesagt macht diese Frage keinen Sinn, wenn Sie einen gut geführten Shop haben:

1) Wenn es Teil des Jobs ist, müssen Sie es tun, oder Sie sind unhöflich. Jemand, der sich strikt weigert, einen Teil der Arbeit zu verrichten, die er zu erledigen hat, sollte konserviert werden. Programmieren ist ein Handwerk und ein Beruf - Prüfer und Manager sind da, um die Arbeit zu erledigen, und nicht um verwöhnte Kinder (jeden Alters).

2) Wenn Sie über ein gut verwaltetes Quellcodeverwaltungssystem verfügen (ein Muss in jedem professionellen Softwarehaus), kann der Code überprüft werden, ob er Ihnen gefällt oder nicht. So überprüfen Sie ihren Code:

  • Wenn es gut ist, benachrichtige sie und klopfe ihnen auf den Rücken - das wird zur Teilnahme anregen.

  • Wenn es nicht gut ist, lass es sie auch wissen. Dies soll sie zur Teilnahme motivieren, um sich zu verteidigen. Wenn dies nicht der Fall ist, können Sie Strafmaßnahmen ergreifen: Finanzielle Sanktionen, Herabstufungen des Status usw. Wenn dieser Mitarbeiter trotz Ihrer Bemühungen nicht vorbeikommt, haben Sie IMO einen schlechten Mitarbeiter, dem die Tür gezeigt werden sollte.

Vektor
quelle
Das ist ein hoffnungsloser Rat, ich sehe einen "Laden" mit einem wirklich schlechten Arbeitsumfeld für Sie vor. Urgghh!
Cognacc
@cognacc - Du musst nichts 'voraussehen'. Ich arbeite seit 25 Jahren in Gruppen, in denen wir ein sehr gutes Arbeitsumfeld haben: Wir sind alle Erwachsene und verstehen, was es erfordert, professionell zu sein und Verantwortung für unsere Arbeit zu übernehmen.
Vector
1
Ich muss Vector zustimmen. Wenn es Teil des Prozesses ist, macht es jeder und ich bin sicher, dass sie schnell erkennen, dass "es nicht beißt". Natürlich besteht immer die Gefahr, dass einige Leute in ihren Kommentaren in einer Codeüberprüfung "unhöflich" sind, aber dann müssen diese Leute behandelt werden - genau wie wenn sie ihren Kollegen gegenüber unhöflich wären.
MetalMikester
Ich stimme cognacc zu, es ist sinnlos zu raten, weil es keine Strategie oder Lösung vorschlägt. Es heißt nur "sie müssen, weil sie müssen". Duh. Die Frage ist, wie man mit ihnen umgeht, wie man sie umdreht. Nur Leute dazu zu bringen, etwas gegen ihren Willen zu tun (oder auch nicht), behebt das Problem nicht, sondern schafft wahrscheinlich neue. Sie müssen zuerst den Ursprung des Widerstands verstehen.
Martin Maat
Sie haben meine Bemerkung gut geführtes Geschäft und alles, was daraus folgt, verpasst : Das heißt, Sie haben es mit Erwachsenen zu tun: Menschen, die wissen, was ihre Arbeit bedeutet und mit sich bringt. Sie haben meine überaus klare Antwort nicht verstanden.
Vector
1

Haben sie einige negative Erfahrungen an Orten, an denen Codeüberprüfungen nicht ordnungsgemäß durchgeführt wurden? Sie können berechtigte Bedenken haben.

Wenn sie absolut keinen Nutzen für die Übung sehen, bitten Sie sie, geduldig zu sein und zu sehen, was mit ihrem Code und insbesondere mit dem Code anderer geschieht (wenn sie der Meinung sind, dass er perfekt ist).

Code Review "sollte" die Entwicklung verbessern, aber bis Sie ein System haben, das tatsächlich funktioniert, warum sollte es jemand tun wollen?

JeffO
quelle
Vielen Dank Jeff, stimme zu, wenn der Prozess nicht gut ist, wird es schwierig sein, und die irrationalen Ängste von irgendjemandem zu umgehen, kann schwierig sein - manche Leute werden sich einfach nicht ändern!
ozz
1
aber bis Sie ein System haben, das tatsächlich funktioniert, warum sollte es jemand tun wollen? Lassen Sie mich einen wilden Stich machen: Tun Sie es, damit Sie herausfinden können, warum Ihr System nicht funktioniert ?
Vector
1
@Vector - Wenn Sie als Programmierer nicht herausfinden können, wie es funktioniert, haben Sie möglicherweise größere Probleme. Ich denke auch, dass das Management Verantwortung übernehmen und den Qualitätscode klar definieren muss. Wenn der Code, der veröffentlicht wird, nicht zu viele Fehler enthält, hat er möglicherweise einen guten Grund, die Codeüberprüfung nicht einzuschließen. Ich bezweifle, dass dies bei einem Projekt jeglicher Komplexität ohne Überprüfung des Qualitätscodes oder möglicherweise mit unverhältnismäßig viel Entwicklungszeit und -kosten geschieht.
JeffO
@JeffO - OK, ich verstehe Ihren Punkt: Wenn das System wirklich nicht funktioniert, ist es nicht die Frage der "Codeüberprüfung", die Frage ist die Kompetenz der Programmierer, und so ist eine einfache "Codeüberprüfung" nicht die Lösung. Ich stimme dem zu.
Vector
1

Ich persönlich bin der Meinung, dass es einige Kämpfe gibt, die mit 100% der Bevölkerung einfach nicht zu gewinnen sind.

Ich kann genug Gründe sehen, warum die Paarprogrammierung nicht funktioniert, wenn jemand dazu gezwungen wird.

Aber Code Reviews sind anders - sie ändern Ihre Produktivität, nicht unbedingt Ihre Arbeitsgewohnheiten.

Das Management kann verschiedene Maßnahmen ergreifen, um den Widerstand aufgrund der Produktivität zu verringern: 1) Akzeptieren Sie die Geschwindigkeitsreduzierung für alle Entwickler. 2) Bereitstellung geeigneter Tools für die Verwaltung und Zusammenführung mehrerer Versionen aufgrund von Überprüfungszyklen (z. B. Bereitstellung eines lokalen Git-Repositorys für Entwickler) von Bewertungen.

Wenn sie das tun, ist es legitim, jeden zur Teilnahme zu verpflichten, IMHO. Das Unternehmen, für das ich jetzt weltweit arbeite, ist ohne die Zustimmung eines Eigentümers einfach nicht einzureichen. Und während dies die Dinge verlangsamt, verhindert es viele Unfälle.

Uri
quelle
Stimme vollkommen zu, Uri ... es gibt nur einige Leute, die du nicht gewinnen kannst. Vielleicht sind sie auf ihre Art eingestellt, faul, denken, dass ihr Weg korrekt ist, oder es ist ihnen einfach egal !!
ozz
0

Wir haben technische Maßnahmen ergriffen, um die Überprüfung des Codes zu erzwingen.

Die Art und Weise, wie wir die Codeüberprüfung eingeführt haben, ist, dass es in unserer Quellcodeverwaltung unmöglich ist, Code zusammenzuführen, der nicht von jemand anderem signiert wurde, als demjenigen, der ihn gepusht hat.

Pieter B
quelle
-1

Feuern Sie sie ab

So einfach ist das - entweder bekommen sie ein Einzelprojekt oder sie müssen gehen. Holen Sie sie von Ihrem Team weg. Sie leisten nicht nur keinen Beitrag, sie untergraben auch die Moral und die Praktiken des Teams.

Nun, wenn es scheint, dass Sie 50% Ihres Teams feuern müssen, dann ...

Verstehen

Warum lehnen manche ab? Haben sie keine zeit Sind sie ausgebrannt? Gibt es Rezensionen zu etwas, mit dem sie keine Erfahrung haben? Halten sie es für Zeitverschwendung, wenn ja, warum?

Hier hilft eine agile Methodik - ich gehe davon aus, dass Sie ständig gegen Silos vorgehen (dh, um den Busfaktor zu reduzieren), und Einzelpersonen in Ihrem Team sind an dem beteiligt, was andere tun.

Der Aufwand, um sicherzustellen, dass einzelne Zusammenführungsanforderungen relativ gering sind. Wenn es sich um mehr als einen Bildschirm mit Änderungen handelt, ist ein Stand-up- oder Blitzgespräch erforderlich, um zu erklären, was getan wird. Bei 10 Seiten ist eine Präsentation mit Folien und Architekturdiagrammen erforderlich.

Arbeiten alle Beteiligten am selben Projekt?

Ist das Projekt bereits unter einem Berg technischer Schulden begraben?

Glauben sie an das Projekt und die kontinuierliche Verbesserung?

Dima Tisnek
quelle
1
Hmmmm .... also nicht zu glauben, dass Codeprüfungen automatisch mehr Nutzen als Kosten bringen, bedeutet, dass eine Person nicht ihren Teil dazu beiträgt und die Moral des Teams so sehr untergräbt, dass sie gefeuert werden sollte? Das ist eine ziemlich kühne Haltung, die auf keinen Beweisen basiert, die die Behauptung definitiv stützen.
Dunk
@Dunk, bist du ein Anti-Reviewer? Dann bist du nicht in meinem Team. Sind Sie ein Pro-Reviewer? Dann kennen Sie schon meine Behauptung. Bist du unentschlossen? Bitte entscheide dich ;-)
Dima Tisnek
Ich bin kein Anti-Reviewer, aber ich erkenne auch, wenn etwas im Verhältnis zu den Kosten keinen angemessenen Nutzen bringt. Einige Projekte / Teams benötigen unbedingt offizielle Codeüberprüfungen, während andere Projekte / Teams diese nur durchführen, wenn dies als vorteilhaft erachtet wird. Ihre Annahme, dass Codeüberprüfungen immer erforderlich sind, besagt, dass Sie nicht einmal die tatsächlichen Vorteile und Einschränkungen kennen. Sie haben also recht. Ich werde nicht in Ihrem Team sein und das wäre ein großer Verlust für Sie.
Dunk