Correction d'un bug qui n'a jamais causé de problème jusqu'à présent

20

J'ai récemment fait un changement qui a fait exécuter du code beaucoup plus souvent qu'auparavant. Cela a conduit à la découverte d'un bug. Ce bogue avait le potentiel de se produire à chaque fois que le code était exécuté, mais parce qu'il était si rarement exécuté, il n'a jamais fait surface.

Quand j'ai porté cela à l'attention du développeur principal, il voulait que j'annule le changement qui exposait le bogue plutôt que de corriger le bogue en citant l'adage, "Si ce n'est pas cassé, ne le corrige pas".

Il est clair pour moi que nous avons été chanceux jusqu'à présent, mais il n'écoutera pas la raison.

Dois-je le réparer de toute façon?

Mise à jour

Le lead n'a techniquement aucune autorité sur moi. Juste mandat. Il est le seul développeur du projet depuis un certain nombre d'années jusqu'à il y a un an et je pense qu'il n'accepte pas très bien les critiques constructives. Pour ce qui vaut, je ne l'ai pas critiqué. Je viens de souligner que le fait que le bogue ne soit jamais apparu ne voulait pas dire qu'il n'était pas là.

Kenneth Cochran
la source
Est-ce un bug lié au threading ou autre chose?
TheLQ
3
C'est le patron pour une raison. Lorsque le caca frappe le ventilateur, il sera celui qu'ils rôtiront. S'il est rôti parce que vous n'avez pas fait ce qu'il vous demande, vous aurez besoin d'une grande pagaie.
Martin York
3
Pouvez-vous construire un cas où le bogue se produit même avec votre modification annulée? Sinon, ce n'est peut-être pas un bug, c'est une limitation non documentée de fea ^ H ^ H ^ H ^ Hn.
Steve314
3
Hmm, "S'il est cassé, détachez autre chose." - c'est une interprétation nouvelle, je vais lui donner ça.
Orbling
1
"Si ce n'est pas cassé, ne le répare pas"? Mais c'est cassé.
StuperUser

Réponses:

26

Je suggère que si vous avez un suivi des bogues, soumettez-le. Si c'est critique, élevez-le et portez-le à son attention. Laissez votre supérieur le rétrograder dans le tracker. Lorsque les choses tournent mal, vous aurez la trace papier.

Ryan Hayes
la source
9
N'oubliez pas:
couvrez
1
Pas si chanceux. Tout est siège de pantalon. Aucun suivi de bogue, aucune collecte d'exigences, aucun test. Il n'y aurait probablement même pas de contrôle de version si la direction n'y insistait pas.
Kenneth Cochran
18
Sur la base de votre description de votre environnement de travail, vous devriez avoir hoché la tête et souri lorsque le développeur principal vous a dit de ne pas le réparer, puis a continué et a fait ce que vous vouliez faire de toute façon.
Carson63000
2
Et ne posez pas de telles questions la prochaine fois :-)
gruszczy
2
@codeelegance: "Pas de suivi de bogue, pas de collecte d'exigences, pas de test. Probablement même pas de contrôle de version si la direction n'y insistait pas." - Douce Maria Mère de Dieu !! 1 !! Cet environnement est en toute ironie avec votre nom d'utilisateur. :)
Bobby Tables
8

Personnellement, je le réparerais, à moins que cela ne demande beaucoup plus d'efforts qu'il n'en valait la peine. "Si ce n'est pas cassé, ne le réparez pas" est horrible à appliquer au logiciel.

Si votre développeur principal est votre patron et qu'il dit de ne pas y toucher, dans ce cas, je ne le ferais pas.

jzd
la source
2
À quelle fin du cycle sont-ils? Cela pourrait être un suicide potentiel.
Job
8
"Si ce n'est pas cassé ne le répare pas" est une règle parfaitement bonne à appliquer au logiciel - mais pas quand le logiciel est cassé.
Steve314
Si ce n'est pas cassé, ne le corrigez pas, cela s'applique aux logiciels en fonction de la définition du code cassé. Au moment même où vous vous asseyez et regardez le code qui doit évidemment être corrigé, il devient cassé. Au moment même où vous commencez à implémenter des solutions de contournement pour le code cassé, vous travaillez en fait en arrière et avec le temps, le code cassé sera de plus en plus difficile à réparer ...
Ernelli
2

La plupart des réponses et commentaires suggèrent d'atténuer la responsabilité de la décision en créant un rapport de bogue et en laissant quelqu'un d'autre passer l'appel.

Comme je n'ai pas de bug tracker (et je doute que quelqu'un d'autre que moi l'utilise si nous le faisions), j'ai fait la meilleure chose suivante. J'ai dépassé la tête du développeur principal. Après avoir expliqué la situation à la direction, ils ont vu les choses à ma façon. Ils m'ont dit de le réparer correctement et d'ignorer la demande de demande du lead . Ils ont dit qu'ils lisseraient toutes les plumes ébouriffées s'il découvrait le subterfuge et se plaignait.

Pas une solution idéale mais au moins le bug a été corrigé correctement.

Kenneth Cochran
la source
Vous avez travaillé au sein de la chaîne de commandement et en tant que tel, vous avez couvert vos fesses. L'utilisation d'un logiciel de suivi des bogues est quelque chose que votre entreprise devrait considérer, cela aide au moins à garder une trace de ce genre de choses, des demandes de fonctionnalités, etc.
Berin Loritsch
2

Rappelez-lui que la phrase est «Si ce n'est pas cassé, ne le répare pas» et non «Si le client ne l'a pas remarqué, ne le répare pas».

Dan Diplo
la source
1

Quelle justification avez-vous de la modification que vous avez apportée? Si vous ne pouvez pas indiquer les changements que l'utilisateur subirait ou la dette technique a été supprimée, je serais du côté du développeur principal en disant de simplement annuler le changement car cela ne fait qu'empirer les choses.


Vous avez au moins quelques options différentes ici à mon avis:

Si vous allez de l'avant et corrigez le bogue, vous risquez d'ajouter plus de bogues au mélange, ce qui pourrait me revenir à l'esprit. En fonction de votre expérience et de votre confiance pour éviter une mauvaise surprise, ce serait probablement mon guide ici.

Si vous faites ce qu'on vous a dit de faire, est-ce simplement la culpabilité qui serait le problème ou est-ce plus que cela? Je me demande ce qui ne va pas ici, à part ce truc connu sous le nom de principes et de valeurs. Je veux dire que c'est un peu une blague mais aussi un point honnête de ce qui ne va pas avec cette idée?

JB King
la source
La modification était nécessaire pour corriger un autre bogue. Le responsable a suggéré de mettre des conditions qui limitent la fréquence d'exécution du code plutôt que de corriger la cause du bogue. Le bogue que j'ai corrigé et celui que j'ai découvert sont des bouchons d'exposition.
Kenneth Cochran
3
Dans ce cas, il doit être correctement réparé. L'utilisation de conditions entourant un problème ne fait que différer la catastrophe, et il ajoute plus de nouveau code, ce qui est plus une erreur. C'est une mauvaise (voire idiote) solution.
quick_now
1

Alors que mon instinct écrasant serait de corriger les bugs pour ne pas cacher le problème, il y a des scénarios où je garderais mon nez et cacherais le problème.

  1. Le code est utilisé en interne et occasionnellement, de sorte que les conséquences du bogue sont gérables à l'intérieur de l'entreprise.
  2. Des considérations commerciales écrasantes qui exigeaient une livraison aujourd'hui, et une correction de bogue pourrait être déployée 2 semaines plus tard avec des conséquences minimes.

Professionnellement, je n'aime pas ces réponses, et je dirais clairement en interne que l'éther de ces situations se produisait.

Michael Shaw
la source
0

En fin de compte, vous ne devriez rien faire que votre supérieur ait explicitement dit de ne pas faire. Je crois que la meilleure chose à faire dans votre position est de créer un rapport de bogue dans la base de données de suivi des bogues que vous possédez. de cette façon, au moins tout le monde est au courant du problème et quelqu'un avec plus d'autorité peut décider quoi en faire.

Pemdas
la source
0

Copiez la fonction buggy, appliquez le correctif, renommez-le, déguisez-le peut-être un peu et appelez-le à la place.

Sur la base de vos deux commentaires sur les bugs showstopper, votre meilleur choix peut être de suivre la lettre de la loi, mais d'ignorer son esprit.

Évidemment, il y a un inconvénient au codage couper-coller, mais il semble que ce sera le moindre de vos problèmes.

Steve314
la source
1
mauvaise idée, si j'avais surpris un de mes programmeurs en train de faire quelque chose comme ça, je le licencierais sur le champ, c'est un moyen garanti de causer des dommages au code et pour quiconque doit le maintenir.
Miki Watts du
@Miki - dans ce cas, dites-moi exactement ce qui n'est pas une mauvaise idée? Veuillez expliquer comment remettre un bogue parce qu'il a rendu un autre bogue (qui était là de toute façon) plus visible est une bonne chose. En ce qui concerne le tir sur le coup, je dirais que le licenciement est constructif, car le développeur n'a pas eu le choix.
Steve314