Sollte ich jemandem sagen, dass sein Commit eine Regression verursacht hat?

115

Wenn Sie eine Regression aufspüren und beheben - dh einen Fehler, der dazu führte, dass zuvor funktionierender Code nicht mehr funktionierte -, können Sie mithilfe der Versionskontrolle nachsehen, wer die Änderung durchgeführt hat, die sie brach.

Lohnt es sich das zu tun? Ist es konstruktiv, die Person darauf hinzuweisen, die das Commit ausgeführt hat? Ändert sich die Art des Fehlers (im Ausmaß der einfachen Unachtsamkeit gegenüber grundlegendem Missverständnis des von ihnen geänderten Codes), ob es sich um eine gute Idee handelt oder nicht?

Wenn es eine gute Idee ist, es ihnen zu sagen, was sind gute Möglichkeiten, es zu tun, ohne sie zu beleidigen oder in die Defensive zu zwingen?

Nehmen wir an, der Fehler sei so subtil, dass die automatisierten Tests des CI-Servers ihn nicht erkennen können.

Scott
quelle
119
CC nicht das gesamte Team, wenn Sie ihm diese E-Mail senden.
quant_dev
26
Sagen Sie es ihm natürlich diplomatisch oder / und mit einem Scherz. In der Firma, in der ich arbeite, haben wir ein Dashboard mit dem Namen jedes Entwicklers. Jedes Mal, wenn jemand einen Fehler im Zusammenhang mit dem Repository macht (vergessen, etwas festzuschreiben, zu markieren, nicht zu kompilieren usw.), erhält der Entwickler ein "+". Wenn er "+++" hat, muss er das Frühstück für den nächsten Tag bezahlen. Seltsamerweise gibt es seit
Einführung
26
@ Jalayn - nicht mit einem Witz - das nur die Leute ärgert
user151019
29
"Nehmen wir an, dass der Fehler so subtil ist, dass die automatisierten Tests des CI-Servers ihn nicht erkennen können." Warum nicht? Ist das etwas, für das Sie keinen Test haben? Wenn dies der Fall ist, sollten Sie zuerst einen Test (oder mehrere Tests) schreiben, der jetzt fehlschlägt, aber durchläuft, wenn der Fehler behoben ist. Wenn es nicht getestet werden kann, warum nicht?
Thomas Owens
18
@ Thomas Owens Weil das nicht die Frage ist, die ich stelle. :-P In einer idealen Welt würden keine Fehler in das System gelangen, da wir beim ersten Mal perfekten Code schreiben würden und es eine umfassende Reihe automatisierter Tests geben würde, falls dies nicht der Fall wäre. Da dies jedoch keine ideale Welt ist, frage ich Sie, was Sie tun sollen, wenn ein Fehler in Ihren Code eindringt.
Scott

Antworten:

38

Wenn Sie sich nur an sie wenden, um ihnen von einem Fehler zu berichten, den sie begangen haben, wird es schwierig sein, sich nicht nur wie "Ha! Schau dir diesen Fehler an, den Sie begangen haben!" Anzuhören, wenn Sie nicht der beste Diplomat der Welt sind. Wir sind alle Menschen und Kritik ist schwer zu ertragen.

Auf der anderen Seite , wenn die Änderung ganz trivial ist und offensichtlich falsch finde ich es normalerweise benificial an der Person zu sprechen , die die ursprüngliche Änderung als Teil meiner Untersuchung verpflichtet , nur um sicher zu machen , dass ich , was los ist , also die Art und Weise mich voll und ganz zu verstehen , in der Regel Um mit dieser Situation fertig zu werden, müssen Sie zu dieser Person gehen und ein Gespräch führen, das ungefähr so ​​verläuft:

Ich: Ich arbeite an diesem Fehler, bei dem ... Zusammenfassung des Fehlers ... und ich denke, ich habe das Problem anhand einer von Ihnen vorgenommenen Änderung aufgespürt. Können Sie sich erinnern, wofür diese Änderung war? / Hast du etwas Zeit, um diese Änderung zu erklären?

Dann entweder:

Sie: Sicher, das ist zu handhaben ... Situation, die ich nicht kannte ...

Oder so ähnlich wie:

Sie: Nein, tut mir leid, ich erinnere mich nicht, sieht für mich falsch aus.

Wenn Sie die Änderung / den Fehler gemeinsam untersuchen, kann der ursprüngliche Committer aus seinen Fehlern lernen, ohne sich nur als kritisiert zu fühlen *, und es besteht auch eine ziemlich gute Chance, dass Sie auch etwas lernen.

Wenn der ursprüngliche Committer nicht in der Nähe ist oder beschäftigt ist, können Sie sich einfach durchschleichen und alles selbst herausfinden. Normalerweise finde ich, dass das Gespräch mit der Person, die die Änderung ursprünglich vorgenommen hat, schneller ist.

* Natürlich funktioniert dies nur, wenn Sie wirklich an der Hilfe anderer Personen interessiert sind. Wenn Sie dies nur als eine kaum getarnte Methode verwenden, um jemandem von einem Fehler zu erzählen, den er gemacht hat, dann ist dies wahrscheinlich schlimmer, als nur offen darüber zu sein.

Justin
quelle
"Sie: Sicher, das ist zu handhaben ... Situation, die ich nicht kannte ..." Ich habe ein Problem mit diesem TBH. Wenn sie die Änderung effektiv dokumentiert haben, sollten Sie sich dieser Situation nicht bewusst sein.
Versuch
1
@temptar Fair genug - ersetze "war sich dessen nicht bewusst" durch "hatte noch nicht darüber nachgedacht" oder was auch immer du bevorzugst - mein Punkt ist, dass, obwohl du dies selbst herausfinden könntest (z. B. indem du dir die Dokumentation ansiehst), es ist in der Regel einfach schneller zu fragen. Außerdem ist viel Code nicht so gut dokumentiert, wie es sein sollte.
Justin
170

Sei durchsetzungsfähig und nicht aggressiv. Sagen Sie immer lieber etwas Ähnliches wie "Dieser Code funktioniert nicht" oder "Ihr Code funktioniert nicht". Kritisieren Sie den Code, nicht die Person, die den Code geschrieben hat.

Besser noch, wenn Sie sich eine Lösung überlegen können, beheben Sie diese und versuchen Sie es - vorausgesetzt, Sie haben ein verteiltes Versionskontrollsystem. Fragen Sie sie dann, ob Ihr Fix für den Bug gültig ist, den sie gerade behoben haben. Versuchen Sie insgesamt, Ihre und ihre Programmierkenntnisse zu verbessern. Aber tu es, ohne dass dein Ego in die Quere kommt.

Natürlich sollten Sie bereit sein, anderen Entwicklern zuzuhören, die mit demselben Problem zu Ihnen kommen, und sich so zu verhalten, wie Sie es sich gewünscht hätten.

Sardathrion
quelle
107
+1. Persönlicher Lieblingsansatz: "Gab es einen Grund, warum du das so gemacht hast, bevor ich damit rumgespielt habe?"
pdr
67
+1. "Kritisieren Sie den Code, nicht die Person, die den Code geschrieben hat."
c_maker
11
+1, Es ist ein sehr ähnlicher Ratschlag wie der, den meine Eheberaterin meiner Frau und mir gegeben hat. Vermeiden Sie das Wort YOU , wenn Sie Bedenken gegen das haben, was Ihr Partner tut. Es ist zu konfrontativ.
maple_shaft
3
+1, aber ich denke nicht, dass das Wort "du" konfrontativ ist. Es muss ein klares Verständnis von Eigentum geben. Ich persönlich hatte Leute, die ständig Code geschrieben haben, der den Build brach, weil sie nicht verstanden haben, dass sie diejenigen waren, die ihn verursacht haben. Ich mag den Ansatz von @ pdr ... diese Aussage ist nicht konfrontativ, enthält aber das Wort "Sie".
Tim Reddy
3
Klingt so, als würdest du einen neuen Fehler wieder einführen. Ihr Fix hat möglicherweise ein vorheriges Problem behoben, von dem Sie nichts wissen. Warum nicht zu ihnen gehen und fragen, warum sie den Code so geschrieben haben, wie sie es getan haben? Es könnte sich herausstellen, dass es eine merkwürdige Sprache / Design / VM-Eigenheit gibt, die es verdeckte. Ihnen dein Ego zu zeigen ["Hier, wie ich es besser machen kann" hilft ihnen nicht]
monksy
70

Ja, immer . Als Programmierer ist es Ihre Aufgabe, aus Fehlern zu lernen.

Wenn sie wissen, welche Fehler sie machen, werden sie zu einem besseren Programmierer und können künftig weniger Fehler machen. ABER seien Sie höflich und machen Sie nicht viel daraus. Wir alle verursachen von Zeit zu Zeit Fehler. Ich finde, eine höfliche E-Mail ist eine sehr konfliktfreie Möglichkeit, die Leute zu informieren.

Tom Squires
quelle
3
Der Teil "Aus Fehlern lernen" ist nicht allgemeingültig. Die große Menge an Fehlern besteht beispielsweise darin, dass Validatoren fehlen. Dies sind Dinge, die selbst erfahrenen Entwicklern passieren. Sie werden nicht viel daraus lernen. Deshalb brauchen wir eine anständige Qualitätssicherung.
Falcon
2
@ Falcon Die Erkenntnis "Wir brauchen eine anständige Qualitätssicherung" ist ein Beispiel dafür, wie man aus Fehlern lernt. Sie könnten
weitermachen,
2
@Falcon "Dies sind Dinge, die einfach passieren" <--- dies allein ist das Wissen, das Sie aus wiederholten, aber trivialen Fehlern erhalten. Haben Sie eine Erfahrung, wenn Sie kompilieren und Dinge nicht funktionieren, überprüfen Sie zuerst Ihre Rechtschreibung und Knall, innerhalb von 10 Sekunden ist der Fehler verschwunden. Sie haben das Wissen, dass "das sind Dinge, die einfach passieren", manchmal ist das der Grund, warum Sie in 10 Sekunden und nicht in 10 Stunden debuggen können.
Gapton
@Gapton und MarkJ: Das sind gute Punkte! Daran habe ich nicht gedacht.
Falcon
"Als Programmierer ist es Ihre Aufgabe, aus Fehlern zu lernen." -> "Als Mensch ..." Aus Ihren Fehlern zu lernen, ist in diesem Bereich nicht spezifisch.
Burhan Ali
23

Der konstruktive Weg besteht darin, den Fehler zu finden, zu beheben und Maßnahmen zu ergreifen, um zu verhindern, dass in Zukunft ähnliche Fehler auftreten.

Wenn es darum geht, den Leuten zu erklären, wie man keine Bugs einführt, dann machen Sie es.

Einmal habe ich in einem Team gearbeitet, in dem der Projektmanager einem bestimmten Entwickler nie mitgeteilt hat, dass er einen Fehler gemacht hat: Er hat ein Treffen mit dem gesamten Team organisiert, in dem er erklärt hat, dass ein Fehler gemacht wurde und ein neuer Prozess definiert wurde, um Fehler zu unterdrücken diese Art von Fehlern. Auf diese Weise wurde niemand stigmatisiert.

mouviciel
quelle
4
+1 für "Maßnahmen ergreifen, um ähnliche Fehler in der Zukunft zu vermeiden". Das ist der wichtigste Teil, IMO.
ein CVn
1
The constructive way is to find the bug, fix it and take actions to avoid similar bugs to arise in the future.-> Die Voraussetzung für die Frage ist, dass Sie den Fehler bereits behoben haben.
Hugo
1
Ja, aber seien Sie vorsichtig bei der Einführung eines neuen Prozesses. Wenn Sie zu viele Prozesse einführen und zu viele Meetings einberufen, verlangsamt sich das Entwicklungstempo und die unternehmensweite Moral wird beeinträchtigt. Ich habe zu viele Geschäfte gesehen, die auf den Fehler einer Person überreagiert haben. Nur wenn der Fehler auf einen fehlerhaften Prozess hinweist, sollte ein neuer Prozess geeignet sein.
Jacob
@jacob - ich stimme zu.
Mouviciel
19

Im Allgemeinen ja .

Niemand sollte defensiv werden, wenn Sie taktvoll sind. Eine einfache Möglichkeit, dies zu handhaben, besteht darin, sie zu bitten, Ihre Änderung noch einmal zu überprüfen, bevor Sie sie wieder in den Trunk übertragen (oder was auch immer für Ihr Versionskontrollsystem relevant ist). Die Leute werden es zu schätzen wissen, wenn Sie ihnen einige Minuten Zeit sparen, indem Sie offensichtliche Fehler beheben. Sie werden es jedoch nicht zu schätzen wissen, wenn Sie etwas reparieren, das nicht kaputt war, und am Ende ihren Code beschädigen. Wenn Sie ihnen die Möglichkeit geben, Ihre Änderungen zu überprüfen, werden sie darauf hingewiesen, dass Sie nicht auf die Zehen treten möchten, und haben die Möglichkeit, Einwände gegen Ihre Änderungen zu erheben.

Wenn es sich eher um eine große Änderung als um einen Tippfehler handelt, ist es eine gute Idee, dem Autor einen Hinweis zu geben, bevor Sie versuchen, sie zu beheben. "Joe, ich habe gestern meine eigenen Sachen zusammengeführt und etwas gefunden, von dem ich nicht sicher bin, ob ich es verstehe. Es sieht aus wie ein Fehler, aber ich wollte es von Ihnen ausführen, bevor ich mit Ihrem Code herumalbern gehe. Würden Sie einen Blick darauf werfen mich?"

Ihre Beziehung zum Autor ist ein wichtiger Faktor. Wenn es Ihnen nichts ausmacht, wenn der Autor Ihren Code repariert, ohne es Ihnen mitzuteilen, und wenn Sie sich ziemlich sicher sind, dass das Gefühl gegenseitig ist, ist es möglicherweise nicht erwähnenswert. Wenn es sich um jemanden mit mehr Erfahrung / Dienstalter / Status handelt, möchten Sie ihn wissen lassen, dass Sie seinen Code ändern werden. Wenn es jemand mit weniger ist, dann überlegen Sie, ob es die Art von Dingen ist, die er hören muss, um zu vermeiden, dass der Fehler wiederholt wird, oder es könnte ihn unnötig in Verlegenheit bringen.

Denken Sie immer daran, dass Sie, wenn Sie herausfinden können, wer den "Bug" eingecheckt hat, genauso leicht herausfinden können, wer ihren Code "repariert" hat. Wenn Sie der Meinung sind, dass sie verärgert / verärgert / verlegen wären, wenn sie nachträglich etwas über Ihr Wechselgeld erfahren, sagen Sie es ihnen auf jeden Fall im Voraus.

Das Beheben des Fehlers ist auch nicht Ihre einzige Option. Sie können den Fehler immer nur in Ihrem Issue-Tracker melden. Hier ist erneut Takt erforderlich - das Melden des Fehlers macht ihn für das gesamte Team sichtbarer, gibt dem Autor jedoch auch die Möglichkeit, seinen eigenen Fehler zu beheben. Berichterstellung ist die beste Option, wenn Sie sich nicht sicher sind, wie Sie das Problem am besten beheben können, oder wenn Sie keine Zeit haben, das Problem zu beheben.

Caleb
quelle
2
Ich mag das "Ich verstehe das nicht ganz, kannst du mir erklären, wie es funktioniert?" Ansatz. Wenn dies beabsichtigt (und neu) ist, sollte der ursprüngliche Programmierer in der Lage sein, ziemlich gut zu erklären, wie der Code funktioniert. Wenn es sich um einen Fehler handelt, ist die Wahrscheinlichkeit groß, dass er / sie bei der Erklärung der Funktionsweise des Codes den Fehler entdeckt und in der Mitte der Erklärung ein "Hoppla" hört. In beiden Fällen kann sich jeder nur schwer fühlen, wenn er nach einem möglichen Fehler mit dem Finger auf sie zeigt.
ein CVn
3
+1 für "Es sieht aus wie ein Fehler, aber ich wollte es von Ihnen ausführen, bevor ich mit Ihrem Code herumspiele."
Russell Borogove
6

Wenn ich ein Commit mache, das einen Fehler enthält, sag es mir besser. Wenn ich ein Commit von Ihnen finde, das einen Fehler enthält, werde ich es Ihnen sicherlich sagen.

Wir verbessern uns nur, wenn wir unsere Fehler verstehen. So produzieren wir in Zukunft besseren Code.

D Krueger
quelle
5

Sie erhalten hier hervorragende Antworten.

Ich konnte eine Technik, die ich von einem Manager gelernt hatte, nur einmal hinzufügen, wenn ich einen Fehler machte.

Ich war der Berater mittleren Alters mit dem Ph.D. und sie war die junge Managerin ohne, also hätte es einen wahrgenommenen Prestigegradienten geben können. Jedenfalls hatte sie eindeutig Erfahrung mit dieser Situation und wusste, wie sie damit umgehen sollte.

Sie sagte mir in einem fast entschuldigenden Ton, dass es ein Problem zu geben schien, und hätte ich Zeit, es zu untersuchen?

Oft genug lag der Fehler bei mir und sie wusste es. Das ist Können.

Mike Dunlavey
quelle
5

Ich denke, dieser Frage liegt ein tieferes Problem zugrunde. Ja, der Einreicher sollte auf jeden Fall auf die Konsequenzen seiner Änderung aufmerksam gemacht werden, damit er verstehen kann, was passiert ist, und nicht dasselbe noch einmal tun kann. Aus dem Kontext Ihrer Frage geht jedoch hervor, dass Sie einen Fix vorbereitet und übermittelt haben, ohne dass der ursprüngliche Übermittler wusste, dass er sogar ein Problem verursacht hat. Darin liegt die tiefere Frage: Warum weiß der Einreicher nicht schon von der Regression und warum haben sie sie nicht selbst behoben? Die von Ihnen beschriebene Situation weist möglicherweise auf einen Mangel an Rechenschaftspflicht oder Wachsamkeit seitens des ursprünglichen Einreichers hin, was ein potenzielles Problem in Bezug auf deren Gesamtleistung und Motivation darstellt.

Aufgrund meiner Erfahrung in der Softwareentwicklung habe ich gelernt, alle meine Codeänderungen zu verwalten, nicht nur die Projekte, für die ich verantwortlich bin, bis hin zur Produktion. Dazu gehört auch, dass ich mir ihrer Auswirkungen bewusst bin, einschließlich Ihres Build-Systems und (offensichtlich) des Produktverhaltens.

Wenn eine Änderung ein Problem verursacht hat, bedeutet dies nicht, dass die Person ein schlechter Ingenieur ist. In der Regel sollte sie jedoch für die Behebung von Fehlern verantwortlich sein und daran beteiligt sein. Auch wenn sie nicht "schuld" sind, z. B. weil ihr Code einen Fehler aufgedeckt hat, der seit Jahren in der Codebasis existiert, sollten sie als eine der ersten Personen auf ein Problem mit ihrer Änderung aufmerksam werden. Auch wenn der ursprüngliche Absender nicht die richtige Person ist, um den Fehler zu beheben, sollten sie eng mit dem Lebenszyklus ihrer Änderung verbunden sein.

Michael 'Opt' Gram
quelle
4

Gute Traktion auf Ihre Frage! Jeder hat dir gesagt, was zu tun ist. Solltest du es sagen? JA! Immer wenn die Frage "Soll ich mehr kommunizieren?" Gestellt wird, lautet die Antwort fast immer JA!

Aber um etwas anderes hinzuzufügen: Ihre Prämisse ist fehlerhaft.

Ein Mitarbeiter hat ein Commit ausgeführt, das CI nicht verletzt hat, Sie jedoch dazu veranlasst, ein Problem zu entdecken.

Glückwunsch! Sie haben einen neuen Fehler gefunden, keine Regression. Im Ernst, testen Sie jedes Szenario und jede Codezeile manuell, die nicht durch automatisierte (oder standardisierte manuelle) Tests abgedeckt werden, wenn Sie ein Commit durchführen?

Bitten Sie auf jeden Fall Ihren Kollegen, sich mit Tests an der Problembehebung zu beteiligen, um sicherzustellen, dass dies nicht noch einmal vorkommen kann. Ihr seid beide Helden! Wenn Sie jedoch die Schuld in Worten oder Taten verlieren, sind Sie dafür verantwortlich, eine der schlimmsten organisatorischen Krankheiten aufrechtzuerhalten: Verantwortungslosigkeit ohne Verantwortung.

Wenn Sie wirklich einen Bösewicht finden müssen, denken Sie an den Mann, der den ursprünglichen Code, der gebrochen hat, begangen hat und eine Falle für Ihren ahnungslosen Freund hinterlassen hat (offensichtlich ohne ausreichende Testabdeckung). Hoffentlich warst du das nicht!

verspäten
quelle
2

Betrachten Sie die andere Person immer als jemanden, der besser ist als Sie, sehen Sie immer andere gute Eigenschaften und wissen Sie immer, dass ich auch Fehler machen kann.

Sagen Sie ihnen, wenn es nur Sie beide sind.

Imran Omar Bukhsh
quelle
+1 für den letzten Satz. Öffentlich loben, privat kritisieren.
Scott C Wilson
2

Wenn jemand beleidigt ist, als Sie sagten, dass er einen Fehler gemacht hat, bedeutet dies, dass er denkt, dass er der weiseste auf der Welt ist und keinen Fehler macht, und wenn er kritisiert wird, hat er das Gefühl, wie wir in Polen gesagt haben, dass die Krone fällt sein Kopf'.

Sie sollten also nicht zögern zu sagen, dass jemand einen Fehler gemacht hat. Es ist normal. Jeder macht Fehler, auch das Beste! Nur wer nichts macht macht keine Fehler;)

Donau Seemann
quelle
1
Alles hängt davon ab, wie Sie der Person sagen, dass sie einen Fehler gemacht hat. Ich mache die ganze Zeit Fehler und freue mich, wenn jemand darauf hinweist, damit ich mich verbessern kann, aber wenn du auftauchst und mir sagst "Alter, dein letztes Commit hat den Code total gebrochen. Warum kannst du nicht besser darin sein, deine Fehler zu überprüfen ? " Ich werde natürlich beleidigt sein.
Der Krug
Ja, aber die Frage "Alter, haben Sie vor dem Festschreiben Junit-Tests durchgeführt?" ist, denke ich, voll akzeptabel :)
Danubian Sailor
+1 für Nur wer nichts macht, macht keine Fehler . Offensichtlich, wenn es artikuliert ist, aber ich habe es noch nie so ordentlich gesehen.
FumbleFingers
2

Stellen Sie zusätzlich zu dem, was andere gesagt haben, sicher, dass es WIRKLICH ihr Commit ist, das einen Fehler verursacht hat. Machen Sie auf keinen Fall jemanden für Ihren eigenen Fehler verantwortlich. Egal wie taktvoll Sie sich ihnen nähern, Sie werden sie trotzdem verärgern, wenn Sie ihnen die Schuld an etwas geben, das sie nicht getan haben. (Ich spreche als jemand, dem andauernd die Schuld an den Fehlern anderer gegeben wurde. Einmal kam jemand auf mich zu und sagte, ich hätte etwas völlig Dummes getan. Ich habe das Commit-Protokoll aufgerufen und festgestellt, dass die letzte Person, die diese Codezeile berührt hat, die war Irgendwie schien er immer noch zu denken, dass es meine Schuld war, weil ich die Zeile ursprünglich geschrieben hatte.)

flauschige
quelle
2

Warum sehe ich hier keine einzige Antwort, die den am besten bewerteten Kommentar zur Frage widerspiegelt?

Ja, erzähl ihnen unbedingt davon, aber mach es nicht vor dem gesamten Team

Gehen Sie 1: 1 auf den Entwickler zu und machen Sie ihn auf den Fehler aufmerksam. Mach keine große Sache daraus. Ich habe immer gedacht, dass es eine schlechte Idee ist, den Fehler vor dem gesamten Team herauszustellen. Es könnte für einige Entwickler funktionieren, aber es ist nicht für alle und kann sich negativ auswirken. Denken Sie daran, dass wir alle irgendwann einmal in ihren Schuhen gestanden haben, und wie die zweitbeste Antwort besagt, lernen Sie aus Ihren Fehlern

Normalerweise funktioniert es am besten, wenn Sie mit einem Kompliment beginnen und dann zum Fehler kommen ... so etwas wie "Das von Ihnen implementierte Update funktioniert hervorragend, ABER es scheint defekt zu sein, x, y, z" oder "Danke, dass Sie a getan haben , b, c, ABER es scheint x, y, z zu verursachen

Rachel
quelle
2

Einfache Antwort: Ja.

Längere Antwort: Mein letzter Job war bei einem agilen Unternehmen, das TDD mit CI-Tools verwendete, um sicherzustellen, dass das, was sich in unserem SVN-Repo befand, zu jeder Zeit gut funktionierte. Wenn etwas festgeschrieben wurde, bekam unser TeamCity-Server eine Kopie, kompilierte und führte Unit-Tests durch. Außerdem wurden stündlich Integrationstests durchgeführt. Wenn ein Commit ausgeführt wurde, bei dem das CI fehlschlug, erhielt jeder eine E-Mail mit der Meldung, dass der Build aufgrund eines Commits einer bestimmten Person unterbrochen wurde.

Das hat nicht immer alles verstanden; wehe uns, erzwingen wir Code Coverage nicht, und selbst wenn etwas von der Einheit oder Integrationstests bedeckt war, sie könnten nicht ausüben , dass Code ausreichend. Wenn dies geschah, lieferte jeder, der die Aufgabe hatte, das bekannte Problem zu beheben (wenn die Qualitätssicherung es bemerkte) oder einen Defekt (wenn die Clients dies taten), eine "Schuld" (zeigt, wer jede Zeile von a zuletzt geändert hat) Code-Datei) und bestimmen den Täter.

Es ist nicht unbedingt eine schlechte Sache, jemanden zum Einchecken von defektem Code anzurufen. Sie haben ihre Arbeit nicht richtig gemacht, und entweder sie oder jemand anderes mussten zurückgehen und den Fehler beheben. Das passiert die ganze Zeit; Wie groß das Geschäft sein sollte, hängt davon ab, wie einfach die Fehlerbehebung war, ob der Fehler darauf hindeutet, dass die Person den fraglichen Code nicht kompiliert oder ausgeführt hat, und von der gesamten Unternehmenskultur. Wichtig dabei ist, dass die Person, die den Fehler begangen hat, etwas lernt. Wenn der Build aufgrund desselben Typen immer wieder abbricht, gibt es ein tieferes Problem mit dieser Person, das angegangen werden muss. Builds, die ständig unterbrochen werden, weisen auf ein Problem mit der Kommunikation des Teams oder der Kenntnis des Prozesses hin.

KeithS
quelle
In einem kleinen Start-up, bei dem ich gearbeitet habe, hatten wir ein ähnliches System. Das Komische war, wenn Sie Code eingecheckt haben und die Tests fehlgeschlagen sind, hat das Build-System den Testfehler der Person zugeschrieben, die zuletzt eine Änderung in der Zeile eingecheckt hat, in der der Test / die Kompilierung fehlgeschlagen ist. Wenn ich also eine von Ihnen verwendete Funktion gelöscht habe und Ihr Code jetzt nicht mehr erstellt werden konnte. Der Build-Bot würde dich vehement beschuldigen. Der darauffolgende Fluch und das freundliche Benennen sorgten dafür, dass Build-Fehler umgehend behoben wurden und jeder Ärger sich gegen den Build-Bot richtete.
Stuart Woodward
2

Ja. Bitten Sie die Person, das Update zu überprüfen, das Sie an dem Code vorgenommen haben. Manchmal habe ich festgestellt, dass der Fehler eines anderen tatsächlich ein heikler Teil des Codes war, mit einigen anderen unsichtbaren Konsequenzen, wenn der Fehler einfach behoben wurde.

Stuart Woodward
quelle
1

Es spielen viele Faktoren eine Rolle.

  • Wie schwer ist der Fehler?
  • In welcher Beziehung stehen Sie zum Leistungsschalter?
  • Wie beschäftigt / gestresst ist das Team?
  • Hat der Breaker in ihrem Teil der Codebasis funktioniert oder in Ihrem?
  • Wie sicher sind Sie, dass es sich wirklich um einen Bug handelte, und wie sicher sind Sie, dass Ihr Fix korrekt ist?

Wenn das Problem geringfügig war - ein Tippfehler / Thinko / Cut & Paste-Fehler - und der Breaker ein vielbeschäftigter Peer ist und Sie sich bei der Bewertung des Problems sicher sind, müssen Sie ihn wahrscheinlich nicht darauf aufmerksam machen. (zB foo.x = bar.x; foo.y = bar.y, foo.z = bar.y).

In den meisten anderen Fällen empfiehlt es sich, das Problem zu erwähnen. In nicht schwerwiegenden Fällen müssen Sie nicht unterbrechen, was sie tun. Warten Sie und machen Sie es beim Mittagessen oder wenn Sie ihnen im Pausenraum begegnen.

Wenn die Art des Fehlers auf ein schwerwiegendes Missverständnis (der Implementierungsplattform, der lokalen Richtlinien oder der Projektspezifikation) hinweist, rufen Sie diesen so schnell wie möglich auf.

Wenn Sie sich Ihrer Einschätzung nicht sicher sind, bitten Sie sie, Ihre Korrektur zu überprüfen, insbesondere, wenn sie nicht in Code enthalten ist, mit dem Sie sehr vertraut sind. (Ich empfehle Ihrem Entwicklerteam nachdrücklich, eine "Code Buddy" -Richtlinie einzuführen, bei der alle Änderungen von einer anderen Person überprüft werden, bevor sie eingecheckt werden.)

Russell Borogove
quelle
1

Was passiert, wenn du es ihnen nicht sagst?

Die Nachteile

Sie machen möglicherweise denselben Fehler an anderen Stellen, weil sie nicht verstehen, dass dies ein Problem verursacht. Darüber hinaus wird es unnötig lange dauern, bis derselbe Fehler wiederholt behoben wird. Sie können nicht aus Fehlern lernen, von denen Sie nicht wissen, dass Sie sie nicht kennen.

Zweitens denken sie, dass sie einen besseren Job machen als sie. Wenn die Menschen nicht auf ihre Probleme aufmerksam gemacht werden, können sie kaum dafür verantwortlich gemacht werden, dass sie sich gut fühlen, wenn sie es nicht sind. Selbst wenn das Problem ein unachtsamer Fehler ist, machen die Leute weniger davon, wenn sie sich bewusst sind, dass die Fehler bemerkt werden.

Wenn jemand nicht nachschaut, wer es getan hat, wie können Sie dann feststellen, ob Sie einen bestimmten Problemmitarbeiter haben, der entweder immer nachlässig ist oder grundlegende Missverständnisse des Produkts hat? Würde eine verantwortliche Person wollen, dass dies in einem Team fortgesetzt wird, in dem sie oder er zusammenarbeitet?

Wenn Sie reparieren und fortfahren, ohne es zu diskutieren, sind Sie sicher, dass Sie es richtig repariert haben? Manchmal müssen sich Tests ändern, wenn sich eine Anforderung ändert. Wenn es sich nicht um einen eher geringfügigen Tippfehler handelt, können Sie dann wirklich sicher sein, dass einer von Ihnen die richtige Lösung hat? Sie könnten seinen Code ohne Rücksprache brechen.

Die Profis

Die Leute schämen sich nicht oder ärgern sich nicht über Sie, wenn sie auf ihre Fehler hinweisen.

Ich glaube, ich bin stark darauf bedacht, es ihnen zu erzählen, aber es nett und privat zu machen. Es besteht keine Notwendigkeit für eine öffentliche Demütigung. Wenn die Person wiederholt dieselben Fehler macht oder kritische Fehler macht, die ein Unverständnis aufzeigen, muss der Vorgesetzte ebenfalls darauf aufmerksam gemacht werden.

HLGEM
quelle