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.
Antworten:
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:
Dann entweder:
Oder so ähnlich wie:
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.
quelle
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.
quelle
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.
quelle
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.
quelle
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.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.
quelle
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.
quelle
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.
quelle
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.
quelle
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.
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!
quelle
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.
quelle
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;)
quelle
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.)
quelle
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
quelle
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.
quelle
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.
quelle
Es spielen viele Faktoren eine Rolle.
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.)
quelle
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.
quelle