Behebung eines Fehlers, der bis jetzt noch nie ein Problem verursacht hat


20

Ich habe kürzlich eine Änderung vorgenommen, die dazu führte, dass Code viel häufiger ausgeführt wurde als früher. Dies führte zur Entdeckung eines Fehlers. Dieser Fehler konnte jedes Mal auftreten, wenn dieser Code ausgeführt wurde. Da er jedoch so selten ausgeführt wurde, ist er nie aufgetaucht.

Als ich den leitenden Entwickler darauf aufmerksam machte, wollte er, dass ich die Änderung, die den Fehler aufdeckte, rückgängig machte, anstatt den Fehler zu beheben.

Mir ist klar, dass wir bis jetzt nur Glück hatten, aber er hört nicht auf die Vernunft.

Sollte ich es trotzdem reparieren?

Aktualisieren

Der Lead hat technisch keine Autorität über mich. Nur eine Amtszeit. Er war bis vor einem Jahr der einzige Entwickler des Projekts und ich denke, er nimmt konstruktive Kritik nicht sehr gut auf. Für das, was es wert ist, habe ich ihn nicht kritisiert. Ich habe nur darauf hingewiesen, dass der Fehler, der nie aufgetaucht ist, nicht bedeutet, dass er nicht da ist.


Ist es ein Threading-Fehler oder etwas anderes?
TheLQ

3
Er ist aus einem bestimmten Grund der Boss. Wenn der Poop den Fan trifft, wird er derjenige sein, den sie braten. Wenn er geröstet wird, weil Sie nicht getan haben, was er verlangt, brauchen Sie ein großes Paddel.
Martin York

3
Können Sie einen Fall konstruieren, in dem der Fehler auftritt, obwohl Ihre Änderung rückgängig gemacht wurde? Wenn nicht, ist es vielleicht kein Bug, sondern eine undokumentierte Einschränkung.
Steve314

3
Hmm, "Wenn es kaputt ist, lösen Sie etwas anderes." - Nun, es ist eine neuartige Interpretation, das gebe ich ihm.
Orbling

1
"Wenn es nicht kaputt ist, reparieren Sie es nicht"? Aber es ist kaputt.
StuperUser

Antworten:


26

Ich würde vorschlagen, wenn Sie Bug-Tracking haben, dann senden Sie es. Wenn es kritisch ist, erhöhen Sie es und machen Sie ihn darauf aufmerksam. Lassen Sie Ihren Vorgesetzten es im Tracker herabstufen. Wenn etwas schief geht, haben Sie die Papierspur.


9
Denken Sie daran:
Bedecken

1
Nicht so viel Glück. Alles ist Sitz der Hosen. Kein Bug-Tracking, kein Sammeln von Anforderungen, kein Testen. Wahrscheinlich hätte ich nicht einmal die Versionskontrolle, wenn das Management nicht darauf bestanden hätte.
Kenneth Cochran

18
Basierend auf Ihrer Beschreibung Ihrer Arbeitsumgebung hätten Sie nicken und lächeln sollen, als der leitende Entwickler Ihnen sagte, dass Sie das Problem nicht beheben sollen.
Carson63000

2
Und stellen Sie solche Fragen nicht das nächste Mal :-)
gruszczy

2
@codeelegance: "Keine Fehlerverfolgung, kein Sammeln von Anforderungen, kein Testen. Hätte wahrscheinlich nicht einmal die Versionskontrolle, wenn das Management nicht darauf bestanden hätte." - Süße Maria Mutter Gottes !! 1 !! Diese Umgebung steht in krasser Ironie zu Ihrem Benutzernamen. :)
Bobby Tables

8

Persönlich würde ich das Problem beheben, es sei denn, es erforderte erheblich mehr Aufwand als es wert war. "Wenn es nicht kaputt ist, beheben Sie es nicht" ist schrecklich, auf Software anzuwenden.

Wenn Ihr leitender Entwickler Ihr Chef ist und er sagt, berühren Sie ihn nicht, dann würde ich das nicht tun.


2
Wie spät im Zyklus sind sie? Dies könnte ein möglicher Selbstmord sein.
Job

8
"Wenn es nicht kaputt ist, beheben Sie es nicht" ist eine sehr gute Regel für Software - nur nicht, wenn die Software kaputt ist.
Steve314

Wenn es nicht kaputt ist, kann es nicht repariert werden. Dies hängt von der Definition des defekten Codes ab. In dem Moment, in dem Sie sich hinsetzen und auf Code starren, der offensichtlich repariert werden muss, wird er kaputt. In dem Moment, in dem Sie anfangen, Problemumgehungen für fehlerhaften Code zu implementieren, arbeiten Sie tatsächlich rückwärts und mit der Zeit wird es immer schwieriger, den
fehlerhaften

2

In den meisten Antworten und Kommentaren wurde vorgeschlagen, die Verantwortung für die Entscheidung zu verringern, indem ein Fehlerbericht erstellt und jemand anderes den Anruf tätigen ließ.

Da ich keinen Bug-Tracker habe (und ich bezweifle, dass es jemand anderes als ich selbst verwenden würde), habe ich das nächstbeste gemacht. Ich ging über den Kopf des leitenden Entwicklers hinweg. Nachdem sie dem Management die Situation erklärt hatten, sahen sie die Dinge auf meine Weise. Sie sagten mir, ich solle das Problem beheben und die Nachfrage des Leads ignorieren . Sie sagten, sie würden gekräuselte Federn glätten, wenn er jemals die Täuschung entdecken und sich beschweren würde.

Keine ideale Lösung, aber zumindest wurde der Fehler richtig behoben.


Sie haben innerhalb der Befehlskette gearbeitet und als solche Ihren Hintern bedeckt. Die Verwendung von Bug-Tracking-Software sollte in Ihrem Unternehmen in Betracht gezogen werden. Sie hilft zumindest dabei,
solche Dinge

2

Erinnern Sie ihn daran, dass der Satz lautet: "Wenn es nicht kaputt ist, reparieren Sie es nicht" und nicht "Wenn der Kunde es nicht bemerkt hat, reparieren Sie es nicht".


1

Welche Rechtfertigung haben Sie für die vorgenommene Änderung? Wenn Sie nicht darauf hinweisen können, welche Änderungen der Benutzer erfahren würde oder welche technischen Schulden beseitigt wurden, würde ich mich auf die Seite des leitenden Entwicklers stellen, indem ich die Änderung zurückziehe, da dies die Situation nur verschlimmert.


Meiner Meinung nach haben Sie hier mindestens ein paar verschiedene Möglichkeiten:

Wenn Sie einfach weitermachen und den Fehler beheben, riskieren Sie, der Mischung weitere Fehler hinzuzufügen, die in meinen Gedanken nach hinten losgehen könnten. Je nachdem, wie viel Erfahrung Sie haben und wie sicher es ist, böse Überraschungen zu vermeiden, ist dies wahrscheinlich mein Leitfaden.

Wenn du tust, was dir befohlen wurde, ist es nur Schuld, die das Problem sein würde, oder ist es mehr als das? Ich frage mich, was hier anders los ist als das Zeug, das als Prinzipien und Werte bekannt ist. Ich meine, das ist ein Scherz, aber auch ein ehrlicher Punkt, was mit dieser Idee nicht stimmt.


Die Änderung war notwendig, um einen weiteren Fehler zu beheben. Der Lead schlug vor, Bedingungen festzulegen, die die Häufigkeit der Ausführung des Codes einschränken, anstatt die Fehlerursache zu beheben. Sowohl der Fehler, den ich behoben habe, als auch der, den ich aufgedeckt habe, sind Show-Stopper.
Kenneth Cochran

3
In diesem Fall muss es ordnungsgemäß repariert werden. Die Verwendung von Bedingungen, die sich auf ein Problem beziehen, verzögert lediglich die Katastrophe, UND es wird mehr neuer Code hinzugefügt, was mehr dazu beiträgt, dass etwas schief geht. Es ist eine schlechte (sogar eine dumme) Lösung.
quick_now

1

Während mein überwältigender Instinkt darin bestehen würde, die Fehler zu beheben, ohne das Problem zu verbergen, gibt es Szenarien, in denen ich meine Nase halten und das Problem verbergen würde.

  1. Code wird intern und gelegentlich verwendet, sodass die Folgen des Fehlers innerhalb des Unternehmens beherrschbar sind.
  2. Überwältigende wirtschaftliche Erwägungen, die heute den Versand und eine Fehlerbehebung erforderten, konnten 2 Wochen später mit minimalen Konsequenzen ausgerollt werden.

Beruflich mag ich diese Antworten nicht und würde intern klarstellen, dass diese Situationen ätherisch sind.


0

Letztendlich sollten Sie nichts tun, was Ihr Vorgesetzter ausdrücklich nicht gesagt hat. Ich glaube, das Beste, was Sie in Ihrer Position tun können, ist, einen Fehlerbericht in der von Ihnen verwendeten Fehlerverfolgungsdatenbank zu erstellen. Auf diese Weise ist zumindest jeder über das Problem informiert und jemand mit mehr Befugnissen kann entscheiden, was damit geschehen soll.


0

Kopieren Sie die Buggy-Funktion, wenden Sie die Korrektur an, benennen Sie sie um, verkleiden Sie sie möglicherweise ein wenig, und nennen Sie sie stattdessen.

Basierend auf Ihrem Kommentar zu zwei Showstopper-Bugs ist es möglicherweise die beste Wahl, den Buchstaben des Gesetzes zu befolgen, aber seinen Geist zu ignorieren.

Natürlich gibt es einen Nachteil bei der Codierung durch Ausschneiden und Einfügen, aber das scheint das geringste Problem für Sie zu sein.


1
schlechte idee, wenn ich einen meiner programmierer dabei erwischt hätte, würde ich ihn sofort feuern, das ist eine garantierte möglichkeit, den code zu beschädigen und für jeden, der diesen code warten muss.
Miki Watts

@Miki - in diesem Fall sag mir genau, was keine schlechte Idee ist? Bitte erläutern Sie, wie Sie einen Fehler zurücksetzen, weil dadurch ein anderer Fehler (der ohnehin vorhanden war) besser sichtbar wurde. Was das Feuern vor Ort angeht, würde ich eine konstruktive Entlassung begründen, da dem Entwickler keine andere Wahl blieb.
Steve314
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.