Question:
Comment gérer les conséquences d'une énorme erreur
Zibbobz
2015-03-30 18:45:23 UTC
view on stackexchange narkive permalink

J'ai donc accidentellement laissé une ligne de code dans notre application qui a provoqué une erreur d'affichage comptable majeure sur l'application et ralenti le flux de travail de nos clients pendant toute la journée, nous obligeant à redéployer l'application rapidement aujourd'hui.

J'ai déjà admis avoir commis l'erreur (ce n'est pas comme si j'aurais pu la nier si je le voulais - mon nom est là dans les commentaires, selon notre protocole de programmation) et tout le monde sur le l'équipe travaille pour le réparer (je ne peux rien faire pour le moment tant que nous n'avons pas fini de préparer notre code pour le redéploiement).

Je ne demande pas comment gérer la résolution de ce problème (nous le faisons déjà maintenant). Ma préoccupation est la suite - le fait qu'après cela, l'équipe avec laquelle je travaille et mon patron auront perdu beaucoup de confiance en ma capacité de codage.

Comment gérer le choc d'une telle erreur? Comment minimiser les dommages à l'équipe, à moi-même et à ma carrière?

Si la seule chose qui vous relie au code est un commentaire, votre équipe a de plus gros problèmes.
Cela me rappelle une citation attribuée à Thomas John Watson, Sr .... _ "Récemment, on m'a demandé si j'allais licencier un employé qui avait commis une erreur qui a coûté 600 000 à l'entreprise. Non, j'ai répondu, je viens de dépenser 600 000 le former. "_ J'espère que votre direction et votre équipe ont une philosophie similaire. Des erreurs se produisent, elles peuvent être coûteuses. J'espère que vous aurez l'occasion de montrer que vous avez appris et que vous pouvez à nouveau avoir confiance dans des situations similaires. Souvenez-vous de cette leçon lorsque quelqu'un d'autre commet une erreur qui vous coûte cher.
@NigelHarper Eh bien, il y a aussi le fait que j'ai documenté que le changement était le mien, et que je l'ai inclus dans les notes de publication, et qu'il est suivi par notre programme de partage de code, et que je suis en fait également responsable de la publication du code lui-même. Le fait que mon nom était * juste là * (ou plus exactement ma clé d'identification unique) est simplement la preuve la plus incriminante.
@Zibbobz Je suppose que "programme de partage de code" est une sorte de système de contrôle de source? Dans ce cas, vous êtes mieux loti qu'un nombre effrayant d'équipes.
@NigelHarper Ce serait correct, et je me souviens totalement et j'utilise toute la terminologie de ma position, tout le temps. :) ((J'ai vraiment oublié le mot juste))
voir [Comment apprendre de vos erreurs] (http://scottberkun.com/essays/44-how-to-learn-from-your-mistakes/)
Compte tenu de la qualité des réponses ici et du contenu réel de ce qu'il demandait, ce n'est PAS un doublon. L'autre demandait si vous deviez vous excuser avec des friandises, c'est vous demander comment passer d'une erreur et récupérer, deux sujets totalement différents et deux ensembles de réponses totalement différents. Ce devrait être rouvert.
Je n'ai jamais entendu parler d'un programmeur qui ne fasse pas d'erreur. Quelle est la procédure de test de votre équipe? C'est peut-être là que les changements doivent être apportés. Tout le monde fera quelque chose de mal ou comprendra mal quelque chose à un moment donné.
@HLGEM J'ai pris la décision de marquer cela comme un duplicata. Il y a un certain nombre de questions comme celle-ci sur le site, et bien qu'aucune ne concerne exactement cette question spécifique de `` passer à autre chose '', j'estime que les réponses fournies correspondent de très près, suffisamment pour que toutes les réponses données ici soient les mêmes qu'une réponse donné dans un autre sujet similaire. Si vous et quatre autres utilisateurs n'êtes pas d'accord, je ne ferai aucune objection. Je ne vais certainement pas aller à l'encontre du consensus du site, et comme vous pouvez le voir, je me suis déjà trompé.
Voter pour rouvrir. Le double marqué concerne la compensation, alors que les réponses ici concernent principalement la prévention de la récurrence.
En votant pour la réouverture, les questions ne devraient ** jamais ** être fermées unilatéralement par les modérateurs, sauf si elles sont ** absolument sans controverse **. Si vous pensez que c'est un doublon, votez pour fermer et attendez de voir si quatre autres personnes sont d'accord.
@Carson63000 Ce n'était pas un truc de modérateur. C'est une personne qui a posé la question qui a agi un peu trop vite la chose.
@Zibbobz oh haha ​​désolé, je n'ai même pas remarqué que vous étiez la personne qui a posé la question !!
@Carson63000 jetez un œil à [MSE] (http://meta.stackexchange.com/questions/251905/what-is-the-process-by-which-a-question-is-marked-as-duplicate-by-community % E2% 99% A6) pour plus de détails à ce sujet si vous souhaitez en savoir plus sur le mécanisme d'auto-fermeture.
Comment cela a-t-il dépassé le contrôle qualité?
Huit réponses:
Vietnhi Phuvan
2015-03-30 19:12:51 UTC
view on stackexchange narkive permalink

La première chose qui me vient à l'esprit est "Avez-vous déjà vérifié votre propre travail"? Si vous attribuez le FUBAR à votre capacité de codage, alors il ne semble pas que vous ayez appris quoi que ce soit de votre expérience.

Lorsque nous codons, nous faisons des erreurs dans le codage - c'est une évidence. Vous ne voulez pas faire d'erreurs de codage? Ne codez pas. Le FUBAR soulève la question "Que faites-vous les gars qui ressemble au contrôle de la qualité dans votre manche du bois?"

Si vous avez réussi à modifier le code et à ne pas le tester avant de le déployer en production, alors quelque chose ne va vraiment pas dans la façon dont vous déployez le code en production en équipe ou quelque chose ne va pas vous avez respecté la procédure de déploiement en production. Lequel est-ce?

S'approprier ne fait rien pour ou contre votre crédibilité. Décrivez explicitement les étapes que vous allez suivre pour vous assurer de ne pas répéter cet épisode - c'est ce qui fera la différence. Votre équipe doit avoir la certitude que vous n'allez pas être insouciant - jamais, concernant vos déploiements de code en production. Que faites-vous pour renforcer cette confiance? Parce qu'à ce stade, si j'étais soit l'équipe, soit le manager, ma confiance dans la fiabilité de votre travail est anéantie.

Et si j'étais votre manager ou votre chef d'équipe, je regarderais des moments très difficiles avec ma propre direction en ce moment. vous pourriez vous en tirer avec une mauvaise évaluation des performances alors que je pourrais être renvoyé parce que cet épisode s'est produit dans mon équipe et sur ma montre. Vous n'êtes pas le seul à être endommagé.

Conseil général: chose étrange à dire mais j'ai pu sortir de quelques ratés avec ma crédibilité renforcée. Les ingrédients? Accepter facilement tout ce que j'ai fait ou pas. Pleine coopération avec toute personne chargée d'enquêter. Faire ce qu'il faut pour faciliter la tâche des enquêteurs. Partager ses pensées de manière cohérente, directe et sans complication - marmonner, bégayer, hésiter sont des tueurs cumulatifs de confiance. Ne pas s'approprier les erreurs des autres - que se passerait-il si vous preniez possession de l'erreur de quelqu'un d'autre, vous jurez de haut en bas que vous ne répéterez jamais cette erreur - et l'auteur de l'erreur d'origine le fait à nouveau, et c'est quelqu'un sur qui vous n'ont ni contrôle ni influence? Les blessures auto-infligées sont les pires.

C'était un changement mineur que j'ai * fait * tester. Le problème est que notre code est un enchevêtrement de code spaghetti, et même si j'ai testé le changement réel que j'ai effectué, je ne me suis pas rendu compte qu'il était connecté à une autre partie de l'application d'une manière particulière et inattendue (essentiellement, pour le code-savvy, c'était un contrôle nul pour les paramètres, où je ne savais pas que parfois un nul était * attendu * pour cette partie du code).
+1 pour la disposition des étapes. En gros, écrivez-vous. Mettez-vous sur un PIP. Couvrez également la queue de votre manager.
Ce que cette réponse décrit s'appelle le coût de la mauvaise qualité et chaque organisation informatique devrait avoir des moyens de le minimiser. Si votre code n'est pas plein de bogues tout le temps, il n'y a aucune raison de vous donner une mauvaise évaluation. Les tests et en particulier les tests de régression dans votre cas devraient trouver de tels problèmes. D'autres méthodes seraient la revue de code par des pairs, des scripts de test et des robots de test. C'est le travail de votre patron d'introduire certaines de ces mesures pour améliorer la qualité.
Votre changement de code aurait alors dû casser l'autre partie de l'application et la rupture dans cette autre partie de l'application aurait dû être détectée. Ce n'était pas le cas, soit parce qu'il n'y avait pas de TDD dans cette autre partie de l'application ou parce que vous n'avez jamais regardé dans cette direction - je n'ai aucune idée de laquelle est laquelle. La question qui me vient à l'esprit est de savoir pourquoi le code passe votre test, puis échoue lorsque vous l'avez déployé en production? Pourquoi cette différence de résultat?
"C'était un changement mineur que * j'ai * testé." - Problème identifié - où était la deuxième paire d'yeux qui a vérifié votre travail avant son déploiement? C'est là que réside votre problème systémique.
Je voudrais ajouter que même s'il semble que vous l'avez reconnu, assurez-vous que la chaîne de commandement sait que vous êtes responsable. Aka laisse pleuvoir sur toi. La haute direction pardonne généralement quelques erreurs ici et là. Pendant ce temps, la direction avec laquelle vous devez travailler au quotidien est susceptible de regagner du respect pour vous lorsqu'elle se rend compte qu'elle n'a pas à pointer du doigt (parce que vous l'avez déjà fait, à vous-même). L'humilité et le don de soi peuvent aller très loin ...
@teklegreg Mon style est d'admettre d'une manière si affirmée, agressive, sacrément les conséquences qu'ils sont totalement en admiration devant moi en tant qu'individu d'une intégrité sans compromis alors que je suis en fait un égoïste fou - et ainsi, je traverse la vie indemne. :)
@VietnhiPhuvan _Parce qu'à ce stade, si j'étais soit l'équipe soit le manager, ma confiance dans la fiabilité de votre travail est anéantie._ Sérieusement? Tous les développeurs font une erreur sur toute la ligne tôt ou tard et cela ne devrait pas automatiquement ramener votre niveau de confiance en eux à 0. Vous devez peser toutes leurs contributions ensemble. Je considère que toute autre chose est irrationnelle. Même Facebook dit à ses employés qu'il n'y a rien de mal à faire des erreurs - c'est ce que vous faites dans l'ensemble qui compte. Je ne sais pas si vous êtes développeur mais si vous l'êtes, je n'ai pas besoin de vous connaître pour savoir que vous avez fait une erreur.
+1 pour souligner qu'il s'agit d'un échec de l'ensemble de la pile de processus.Si le code a été examiné, les tests unitaires, automatisés, de régression et de fonctionnalités réussis, vous n'avez personnellement rien fait de mal - donc pas de mal à admettre que c'est votre code.Dirigez le lecteur pour mettre en place des tests robustes!
DJClayworth
2015-03-30 19:17:51 UTC
view on stackexchange narkive permalink

Premièrement, ne paniquez pas. Des choses comme celles-ci se produisent et cela n'endommagera probablement pas votre carrière plus que temporairement. Vous avez déjà fait la première chose importante, qui est d'assumer la responsabilité de votre erreur.

Le principal objectif à partir de maintenant, pour vous et votre équipe, est d'essayer de vous assurer que quelque chose comme ça ne se reproduit pas. Tout le monde fait des erreurs et l'équipe doit essayer de s'assurer que les erreurs ne se transforment pas en catastrophes. Il n'aurait pas dû être possible pour une erreur de codage comme celle-ci d'entrer dans le code publié.

Commencez par réfléchir à la façon dont cela s'est produit. Avez-vous été insouciant? Avez-vous vérifié votre travail? Avez-vous exécuté la procédure de test de votre équipe? Décide de ne pas recommencer.

Je considérerais également s'il y a quelque chose que l'équipe pourrait faire pour éviter que cela ne se reproduise - pas seulement si vous faites une erreur, mais aussi l'un de vos collègues. Pourriez-vous ajouter une étape de test aux procédures? Ou peut-être une révision de code? Ce pourrait être une bonne idée d'aller voir votre patron et de suggérer (sans essayer d'éviter le blâme) que l'un de ceux-ci pourrait empêcher que de telles choses ne se reproduisent.

Les nuits de vendredi tardif arrivent tout le temps.Les erreurs sont géniales dans la mesure où elles fournissent des conseils pour améliorer les choses.
octern
2015-03-30 20:19:43 UTC
view on stackexchange narkive permalink

Une chose que j'ajouterais aux autres réponses, et qu'il était contre-intuitif pour moi d'apprendre, est de ne pas trop m'excuser . Vous devez clairement et publiquement avouer votre erreur une fois. Après cela, il est logique d'en parler si vous faites un post-mortem sur la question ou si vous discutez des mesures concrètes à prendre pour aller de l'avant. Sinon, laissez-le faire (mais n'essayez pas d'échapper à la responsabilité si quelqu'un d'autre introduit le sujet). Si votre équipe met en œuvre de nouvelles procédures ou se rétablit d'une autre manière, assurez-vous que vous êtes un participant enthousiaste à la progression, mais soyez positif à ce sujet.

C'est le nombre de personnes qui gèrent naturellement les choses, donc ce n'est peut-être pas un problème pour vous. Pour ma part, il y a eu des moments où j'ai pensé que j'avais assez mal foutu quelque chose pour que je devais m'excuser ou prendre mes responsabilités à plusieurs reprises, mais mes employeurs et collègues étaient vraiment plus intéressés à passer à autre chose. S'ils essaient de pardonner et d'oublier, des excuses répétées peuvent rendre les choses plus difficiles. Cela peut aussi les amener à vous percevoir comme à la recherche de réconfort, ce qui finit par leur imposer un fardeau supplémentaire.

Cela peut également renforcer les perceptions négatives que vous avez de vous-même, ce qui peut facilement réduire vos performances. Acceptez et admettez votre erreur, faites de votre mieux pour réparer les choses et avancez. Pas besoin de s'auto-flageller en permanence.
Nigel Harper
2015-03-30 19:48:42 UTC
view on stackexchange narkive permalink

Si vos patrons voient cela comme un reflet de votre capacité de codage, ils manquent le point. Bien que vous ayez introduit le problème initial, l'équipe dans son ensemble n'a pas réussi à lui permettre d'entrer en production. L'accent doit être mis sur la détermination, en équipe, des raisons pour lesquelles cela s'est produit et sur la manière de modifier vos pratiques et processus pour réduire le risque que cela se reproduise.

Il manque une seule preuve vérification indépendante de votre correctif. Là où je travaille, aucun code n'est envisagé pour la publication tant qu'il n'a pas été testé ou examiné par un autre membre de l'équipe. Ce n'est pas parfait mais cela augmente les chances que l'autre partie sache quelque chose que vous ne savez pas ("en fait, le module de barre passe en NULL et c'est très bien"), ou du moins pense à une question que vous n'avez pas eue (" êtes-vous sûr d'avoir vérifié tous les endroits d'où foo est appelé ").

bethlakshmi
2015-03-30 20:08:56 UTC
view on stackexchange narkive permalink

Eh bien - je dirais que vous avez franchi la première étape (que beaucoup de gens omettent) - admettez que vous êtes à l'origine du problème et concentrez-vous sur les solutions pour aller de l'avant. Comme on dit - "la première étape consiste à admettre que vous avez un problème" - et vous seriez surpris des efforts déployés par les gens pour éviter de l'admettre.

Prochaines étapes ...

La différence entre l'erreur humaine et la négligence grave

Avec une très grave erreur, il y a une différence entre l'erreur humaine et la négligence grave. La différence réside généralement dans le fait de suivre le processus qui vous a été donné au mieux de vos capacités et de votre compréhension et de toujours faire l'erreur (erreur humaine) ou de ne PAS suivre volontairement / par ignorance un processus alors que vous auriez dû savoir mieux. Par exemple, si vous étiez censé obtenir une révision du code, et vous ne l'avez pas fait, c'est une faute grave. Si vous avez eu la révision du code et que vous-même et le réviseur l'avez ratée - c'est une erreur humaine.

En cas de négligence grave, cela pourrait vraiment avoir des conséquences sur l'emploi / la carrière. L'action que vous pouvez entreprendre est de faire le processus qu'on vous dit de faire la prochaine fois, mais en substance, vous avez rompu la confiance de votre employeur et il n'a pas nécessairement de raison de vous donner une seconde chance. Cela peut être des réductions de salaire, un manque de primes ou même une résiliation motivée.

En cas d'erreur humaine - les conséquences sont généralement moins graves - vous pouvez toujours obtenir une mauvaise évaluation ou perdre votre bonus - mais si c'est une erreur honnête, il est beaucoup plus probable que vous receviez un avertissement. Si vous ne faites pas habituellement de mauvaises erreurs, vous vous frayerez un chemin avec un bon comportement et votre réputation guérira.

Première étape - retracez les processus formels de votre entreprise et identifiez les étapes que vous avez pu manquer. Pouvoir dire à votre patron "J'ai manqué cette étape, je l'ai trouvée, j'ai fait de mon mieux pour récupérer et avoir ces plans en tête pour changer mon comportement afin que je ne la manque pas la prochaine fois" - va un long chemin termes de rectification de la mauvaise impression. Et si vous avez un cas où aucune partie du processus ne vous aurait sauvé, cherchez des opportunités pour proposer un moyen d'améliorer le processus - que ce soit pour vous-même ou pour tout le monde. Une façon de voir les erreurs de type d'erreur humaine est "cela pourrait arriver à n'importe qui".

Rechercher des modèles

Votre réputation sera rétablie si c'est votre seule erreur grave depuis longtemps. Tout le monde commet une très mauvaise erreur de temps en temps. Les personnes qui subissent généralement des dommages à long terme dans leur carrière sont celles qui causent des problèmes à plusieurs reprises et ne montrent aucune amélioration significative au fil du temps.

Pour éviter d'être l'une de ces personnes, recherchez des modèles qui auraient pu conduire au problème . Aviez-vous toutes les connaissances nécessaires pour NE PAS commettre l'erreur? Y a-t-il une autre préparation / vérification des erreurs que vous auriez pu faire? Y a-t-il un schéma de travail / vie personnelle qui vous a conduit à être moins que ce que vous pouviez (trop fatigué, sous-alimenté, stressé par la vie à la maison, distrait par des interruptions, malade, sous l'influence de quelque chose qui n'est pas prescrit par un médecin, etc.)? Pouvez-vous éliminer les obstacles à la réflexion et à la concentration efficaces?

Laissez-vous tenter par tout ce dont vous pouvez être sûr qu'il ne se reproduira probablement pas - par exemple, si vous étiez fatigué parce que vous veniez de passer toute la nuit à rester avec votre enfant aux urgences d'un hôpital , vous pouvez être à peu près sûr que cela ne se produira pas chaque semaine ou chaque mois. Cependant, si vous étiez vraiment fatigué parce que vous avez un engagement bénévole hebdomadaire qui vous empêche de dormir tard, vous devrez peut-être repenser votre engagement et trouver un moyen de vous coucher plus tôt.

Admettez, corrigez, passez à autre chose

Une fois que vous avez examiné vous-même et les modèles de votre travail et que vous avez fait ce que vous pouvez pour éviter l'erreur ... admettez-le , corrigez-le et passez à autre chose. Vous aurez un certain nombre de commentaires négatifs pendant un certain temps - essayez de ne pas être sur la défensive. Prouvez votre valeur en apportant des changements conscients à vos processus. Et ne le laissez pas vous hanter. Très souvent, je vois des gens encore évoquer leurs erreurs longtemps après que le reste du bureau l'ait oublié - une fois que vous êtes pardonné, laissez tomber.

Demandez des commentaires, cependant, 6 mois et 1 un an après l'événement, vérifiez que la qualité de votre travail est meilleure et qu'il n'y a rien d'autre à corriger ou auquel vous devriez faire attention.

Il y a une bonne raison pour laquelle la négligence grossière existe en tant que terme - il y a aussi une négligence ordinaire. Je pense que vous opposez «erreur humaine» et «négligence grave» tout en ignorant le champ intermédiaire. Par exemple. vous avez eu cette révision du code, mais cela a soulevé des problèmes "mineurs" qui, avec le recul, ont causé le gros problème.
Dogweather
2015-04-02 01:57:47 UTC
view on stackexchange narkive permalink

Gérez-vous comme une startup respectée. Après tout, vous êtes votre marque. Regardez les entreprises Internet qui ont commis des erreurs et voyez comment les meilleures d'entre elles ont géré ces erreurs. Ensuite, vous faites de même.

Par exemple, les meilleures entreprises et les personnes autogérées commencent un processus immédiat consistant à;

  1. enquêter pleinement sur la nature de l'erreur,
  2. déterminer quels changements dans leur processus empêcheraient ce type d'erreur de se reproduire,
  3. commencer à mettre en œuvre ces changements de processus, et enfin -
  4. signaler tout ce qui précède de manière transparente pour les parties prenantes (c'est-à-dire votre patron et vos collègues)

Si vous faites ce qui précède (et encore une fois, cherchez de bons exemples de cela bien fait), vous inspirerez encore plus de confiance que si cela avait jamais arrivé.

TrueDub
2015-03-30 19:09:07 UTC
view on stackexchange narkive permalink

Vous avez fait la première chose à faire, qui est de vous approprier correctement et de participer au processus de récupération.

Ce que vous devez faire ensuite, c'est démontrer que vous avez appris de la erreur. La façon de procéder est une proposition plus délicate, mais certaines approches sont les suivantes:

  • Parlez à votre patron, en vous excusant et en lui indiquant que vous allez faire plus attention
  • Définissez un processus vous-même pour vérifier ces choses - notez-le
  • Regardez quelques moyens techniques pour vous assurer que votre code est aussi correct que possible.

Pour l'option 3, envisagez peut-être des tests plus automatisés?

Découvrez s'il existe une suite regression.test. Sinon, suggérez d'en créer un. S'il y en a un, cherchez pourquoi il n'a pas détecté votre bogue avant l'envoi du code et améliorez les tests ou la procédure le cas échéant.
@keshlam Ce n'est pas un bug en soi ... c'est juste un changement qui inhibe la fonctionnalité de l'application. Il ne renvoie pas d'erreur - il renvoie une valeur incorrecte et suppose qu'elle est correcte. C'est ... heureux. : /
@Zibbobz c'est exactement ce à quoi une suite de tests est conçue. Vous écrivez un test en disant que la valeur renvoyée sera 6. Vous exécutez le test, la valeur est 7 et le test échoue. Vous corrigez la fonctionnalité et, surtout, il ne quitte jamais votre PC, et encore moins passe en production
Une mauvaise réponse est toujours un bogue. C'est peut-être un bogue ailleurs que votre modification a exposé, mais c'est un bogue.
Hilmar
2015-03-30 19:17:35 UTC
view on stackexchange narkive permalink

Des erreurs se produisent et prétendre le contraire est tout simplement irréaliste

Vous avez déjà compris, donc c'est bien. La question suivante est "Comment transformer cela en une opportunité d'apprentissage". Évidemment, vous possédez une réponse à "Que ferez-vous différemment pour vous assurer que cela ne se reproduise plus", mais il y a plus:

Maintenant, ce n'est pas entièrement de votre faute (même si vous ne devriez jamais le dire à voix haute ). De temps en temps, des whoppers entrent dans le code, mais apparemment, il n'y a pas de bon processus logiciel en place qui l'empêche d'être expédié.

Vous pouvez l'utiliser pour aller plus loin: "Hey patron. J'ai vraiment foiré ça et maintenant je réfléchis à la façon dont nous pouvons fonctionner différemment pour nous assurer que des choses comme celle-ci ne sortent pas ". Faites des recherches sur les bonnes pratiques de publication de logiciels telles que les révisions de code, les règles de vérification, les cycles de test, les tests automatisés, l'analyse de la couverture des tests, etc. Ensuite, proposez des suggestions spécifiques que l'équipe pourrait être en mesure de mettre en œuvre.

Donc, en bref, si vous pouvez en faire une opportunité d'apprentissage et qu'à la fin, votre département s'améliore à cause de votre erreur initiale, tout ira bien.



Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 3.0 sous laquelle il est distribué.
Loading...