Rester agile avec une politique zéro bug / défaut

18

Dans notre projet, nous travaillons selon une méthodologie zéro bug (ou zéro défaut). L'idée de base est que les bogues sont toujours plus prioritaires que les fonctionnalités. Si vous travaillez sur une histoire et qu'elle contient un bug, elle doit être résolue pour que l'histoire soit acceptée. Si un bug est trouvé pendant le sprint pour une histoire plus ancienne, nous devons le mettre ensuite sur notre backlog et le résoudre - priorité absolue.

La raison pour laquelle je dis résolution est que nous ne corrigeons pas toujours le bogue. Parfois, nous le déclarons simplement "ne résoudra pas" car ce n'est pas si important. Dans l'ensemble, cela sonne bien. Nous expédions des produits de haute qualité et ne transportons pas "une bosse" sous la forme d'un énorme arriéré de bogues.

Mais je ne suis pas sûr que cette approche soit correcte. J'ai tendance à convenir que nous devons toujours corriger les bogues graves dès que possible et que nous devons éliminer les bogues non intéressants. Mais qu'en est-il des bogues qui sont importants mais pas aussi importants que les nouvelles fonctionnalités? J'ai tendance à penser qu'ils devraient être classés dans l'arriéré avec une priorité appropriée.

Je vais donner un exemple pour que ce soit plus clair - dans mon projet, nous travaillons avec une interface utilisateur écrite en flex. Nous avons un écran assistant qui s'ouvre à la même taille pour chaque résolution d'écran. Il s'avère que lorsque nous étendons la fenêtre de l'assistant, l'une des pages ne semble pas bonne (il y a une barre de défilement verticale qui ne disparaît pas bien que l'assistant puisse maintenant tout présenter et ne nécessite pas la barre de défilement). Je pense que ce bug est moche. Je suis sûr que cela DOIT être réparé. Mais nous sommes sur un calendrier serré et nous avons beaucoup de fonctionnalités qui, nous le craignons, ne feront pas la coupe et n'entreront pas dans la version. Je pense que nous pouvons vivre avec un tel bug. Il doit être corrigé mais avec une priorité plus faible que les autres fonctionnalités (donc, au cas où nous ne serions pas en mesure de le terminer, au moins nous n'avons pas omis des fonctionnalités plus importantes). Mais,

Je serais ravi d'entendre des opinions sur la façon de gérer les bugs que je ne veux pas marquer comme "ne sera pas corrigé" mais qui ne sont pas non plus de la plus haute importance.

Avi
la source
2
Je sais que ce n'est qu'un exemple, mais se débarrasser d'une barre de défilement inutile est une fonctionnalité. Maintenant, si vous essayez d'implémenter cette fonctionnalité et que cela ne fonctionne pas, vous avez un bug.
JeffO
Vous devriez être prêt à entretenir l'idée que vos bogues sont toujours la priorité la plus élevée de faire les choses peut-être pas la bonne chose pour vos besoins.
Blrfl
@JeffO - Je suppose que vous êtes d'accord avec moi en quelque sorte. Vous l'appelez simplement une histoire au lieu de l'appeler un bug. Ce qui est très bien pour moi dans ce cas.
Avi
3
Il y a une grande différence entre «des sons attrayants et corrects» et «fait en sorte que les gens qui utilisent votre produit soient satisfaits». Si 0-bug vous empêche manifestement d'atteindre ce dernier, c'est la mauvaise chose. Je suis sûr que votre direction adorera avoir le temps supplémentaire de se vanter de sa méthodologie une fois que vos clients auront trouvé quelqu'un d'autre pour fournir ce dont ils ont besoin.
Blrfl
1
@Avi - On dirait que c'est une fonctionnalité qui devrait être complétée afin que votre approche agile actuelle ne retarde pas les nouvelles versions à l'avenir.
Ramhound

Réponses:

28

Corriger des bugs avant d'écrire du nouveau code est en fait l'un des douze points du test de Joel . Joel explique également pourquoi c'est un incontournable:

En général, plus vous attendez avant de corriger un bug, plus il est coûteux (en temps et en argent) de le corriger.

Tu as le choix:

  • Soit vous implémentez une fonctionnalité très demandée et retardez la correction d'un bogue, ce qui augmentera inévitablement le coût de sa correction,

  • Ou vous corrigez le bogue dès maintenant, étant donné que les clients seront déçus que vous soyez si lent à fournir la fonctionnalité dont ils ont tant besoin.

Si le bogue n'est pas très important, alors que la fonctionnalité l'est, la direction sera encline à demander de l'implémenter en premier, puis à corriger le bogue. Sur le plan commercial, c'est un choix parfaitement valable, dans la mesure où la direction en comprend clairement les conséquences, c'est-à-dire qu'il serait plus difficile de corriger le bogue plus tard que maintenant.

S'en tenir à «pas de nouvelles fonctionnalités jusqu'à ce que tous les bugs soient corrigés» peut ne pas être le meilleur choix commercial. Vous avez déjà mentionné ses limites, il n'est donc pas nécessaire de l'expliquer.

Cela dit, le risque de laisser des fonctionnalités très importantes être implémentées avant de corriger des bugs mineurs comporte un risque: où mettre les limites? Une fonctionnalité demandée par 1 000 clients est-elle plus importante qu'un bug rencontré par 100 clients? Comment évaluer si une fonctionnalité donnée doit être effectuée avant de corriger un bogue donné?

Sans règles strictes et si la direction ne comprend pas très bien le processus de développement, vous vous verrez peut-être dans quelques années avec un carnet de commandes rempli de bogues qui n'étaient pas considérés comme suffisamment importants pour être corrigés avant juste une autre fonctionnalité sophistiquée.

Arseni Mourzenko
la source
+1 Le test Joel m'est venu à l'esprit dès que j'ai lu le titre!
jkoreska
1
Un addendum devrait être qu'il existe des moyens à moindre impact de "gérer" les bogues. Si vous avez une mêlée robuste qui est bonne pour gérer les bogues, alors peut-être qu'il est acceptable de déclarer qu'un bogue sera retardé un peu ... tant que votre équipe est bonne pour corriger les bogues qu'elle promet de corriger plus tard. Si les bogues commencent à s'accumuler, alors cette méthodologie a échoué, et vous devez revenir à un draconien «corrigez toujours tous les bogues en premier».
Cort Ammon - Reinstate Monica
Je pense qu'une chose importante à ajouter est de considérer combien de temps cette correction de bogue. Le bogue mentionné par l'OP ressemble à une correction assez simple, alors cela rendra-t-il vraiment la fonctionnalité tardive? Si la réponse est non, corrigez-la. Si la réponse est oui, alors c'est peut-être plus complexe. J'ai toujours pensé à cette partie du test Joel comme si c'était facile à corriger. S'il est complexe, corrigez-le car vous ne voulez pas laisser les tâches complexes trop longtemps en oubliant le fonctionnement et la régression.
MikeS159_Funding_Monica
13

En plus de plonger dans des détails particuliers de votre situation, vous feriez mieux de vous assurer que vous avez bien compris les choses de base.

À cet égard, je pense qu'il est très important de souligner que la politique que vous mentionnez, "les bogues sont toujours plus prioritaires que les fonctionnalités", en particulier le mot s'écarte toujours d'au moins deux des quatre principes énoncés dans le Manifeste Agile :

Individus et interactions sur les processus et les outils

Répondre au changement suite à un plan


Je n'insiste pas pour que vous changiez de politique, car je crois fermement qu'il faut être agile quant à l'application même des principes agiles.

Mais vous devez au moins savoir quand vous vous écartez et comprendre si et comment la déviation est justifiée . Autrement dit, vous feriez mieux de vous assurer que ce que vous appelez «agile» ne glisse pas réellement dans un faux insensé, si éloquemment couvert dans le Manifeste Agile Semi-Arsed :

Les individus et les interactions sur les processus et les outils
et nous avons des processus et des outils obligatoires pour contrôler la façon dont ces individus (nous préférons le terme «ressources») interagissent

Logiciel de travail sur une documentation complète
tant que ce logiciel est documenté de manière exhaustive

La collaboration du client sur la négociation des contrats
dans les limites de contrats stricts, bien sûr, et sous réserve d'un contrôle rigoureux des modifications

Répondre au changement plutôt que de suivre un plan à
condition qu'un plan détaillé soit en place pour répondre au changement et qu'il soit suivi avec précision


Par souci d'exhaustivité, ce n'est pas seulement les principes agiles dont la politique zéro bug semble s'écarter.

Dans les projets non agiles auxquels j'ai participé, il a été généralement considéré comme imprudent de consacrer du temps aux programmeurs à corriger des bogues qui ne sont pas suffisamment importants pour justifier le retard de la publication de fonctionnalités hautement prioritaires.

Pour cette raison, la direction a généralement dépensé (peut-être serait-il plus exact de dire investi ) quelques efforts pour décider quels bogues pourraient attendre la prochaine version.

  • Travaillez-vous par hasard sur des logiciels critiques? Je demande parce que dans ce cas, la politique zéro bogue est assez logique et vaut la peine de compromettre les principes agiles / non agiles / peu importe. Bien que j'aie du mal à imaginer un processus agile dans ce cas.

Vous savez, à moins que vous ne travailliez sur un logiciel essentiel à la mission, je recommanderais d'évaluer de plus près les compétences et les capacités de réflexion de votre gestion.

Je veux dire, d'après ce que vous décrivez, il semble plutôt qu'ils ne sont tout simplement pas capables de hiérarchiser correctement les bogues et les fonctionnalités. Si tel est le cas, s'ils ne peuvent pas gérer une tâche aussi routinière, de quoi d'autre ne sont-ils pas capables? Offrir un salaire compétitif? opportunités de croissance de carrière? les conditions de travail?

moucheron
la source
1
+1 - J'ai beaucoup aimé la façon dont vous le dites. Bien que ce ne soit pas exactement une solution, cela justifie ce que je ressens quand je soutiens vraiment cette méthode, mais je pense qu'en agile, tout devrait être négociable.
Avi
12

Comme vous l'indiquez à juste titre, une politique zéro bug a le risque que les problèmes non critiques soient ignorés ou bousculés sous le tapis, car ce n'est pas le meilleur moment pour les résoudre.

Ce que vous pourriez faire, c'est quand un nouveau problème est signalé, prendre une décision à trois:

  1. C'est un véritable bug et devrait être corrigé dès que possible: mettre en haut du backlog
  2. C'est un véritable bug, mais n'est pas critique pour le fonctionnement de l'application: transformez-le en une histoire régulière et laissez le propriétaire du produit le prioriser.
  3. Ce n'est pas un bug, ou c'est un doublon ou ça ne vaut pas la peine d'être résolu: rejetez avec une raison appropriée.

De cette façon, les problèmes moins importants ne seront pas entièrement oubliés, mais ils ne forceront pas non plus toutes les nouvelles fonctionnalités brillantes du prochain sprint. Le `` transformer en histoire '' est juste pour que la direction puisse continuer à affirmer que vous suivez une politique zéro bug et que le propriétaire du produit devrait être en mesure d'équilibrer l'importance du problème par rapport à l'importance des fonctionnalités du backlog.

Notez que, avec cette procédure, des problèmes comme la barre de défilement que vous avez mentionnée peuvent toujours ne pas être résolus à la fin du projet, mais c'est parce que personne ne pensait que c'était suffisamment important (y compris les clients), pas parce qu'il n'y en avait pas moment où le problème a été détecté.

Bart van Ingen Schenau
la source
2
Oui, bien que vous deviez vous assurer que la priorisation est effectuée sur des bases appropriées (valeur commerciale) et n'utilise pas l '"origine" (demande de fonctionnalité contre rapport de test contre bogue signalé sur le terrain) comme critère de "tri" où les demandes de fonctionnalité sont toujours venez avant ...
Marjan Venema
2

J'aime votre schéma, cependant, comme vous l'avez identifié, il suffit d'un petit ajustement pour le faire fonctionner - Comme vous l'avez observé, la réalité est souvent qu'une nouvelle fonctionnalité l'emporte sur une correction de bogue .....

Ma suggestion est de forcer l'augmentation de la priorité des bugs à chaque sprint. Disons que vous avez un bug au niveau 5 (échelle 1-haut, 5 = bas). Cela commence comme 5, 4 sprints plus tard, c'est un bug de niveau 1. Cependant, l'état d'esprit nécessaire pour le calcul de la priorité est "Priorité actuelle - Nombre de sprints", plutôt que "Augmenter la priorité des bogues en suspens à la fin de chaque sprint" - cela empêche que la priorité soit "réinitialisée" à faible pour la reporter davantage.

Les bugs de niveau 1 doivent être corrigés dans le prochain sprint ......

Est simple à expliquer, facile à mettre en œuvre ....

Maintenant, mesurez que pour présenter les demandes, peut-être un taux différent. Après un certain temps, la demande doit être traitée - qu'elle soit effectuée ou rejetée, ce qui empêche un arriéré de fonctionnalités qui n'ont aucune valeur ......

mattnz
la source
C'est une bonne idée! Je vais l'apporter à mon équipe pour discussion! Je pense qu'il a encore besoin de quelques améliorations auxquelles j'essaierai de penser. Mais j'adore l'idée de base.
Avi
Ok, donc après en avoir discuté, nous avons réalisé que cela pourrait nous amener exactement au même endroit où beaucoup de bugs se tournent vers le niveau 1: /
Avi
C'est le point - si vous conservez des bogues non corrigés assez longtemps pour qu'ils s'accumulent au sommet de la charge de travail, vous ne suivez pas vos règles. Vous accumulez simplement de la dette technique.
Ross Patterson
0

Vous rencontrez des problèmes lorsque vous essayez d'être trop littéral ou catégorique sur quoi que ce soit dans le développement de logiciels autant que nous voulons tous vraiment que les choses soient coupées et sèches. Les bogues devraient être corrigés avant l'ajout de nouvelles fonctionnalités, mais je considérerais toujours l'importance de chacun lors de la prise de cette décision ainsi que l'ampleur du problème. Il y a des exceptions à tout.

Certaines applications sont si grandes qu'elles ont des sections qui ne sont pas liées du tout. Je ne vois pas pourquoi chaque nouvelle fonctionnalité du module des comptes fournisseurs doit être suspendue, car il y a quelques bugs ennuyeux dans l'interface graphique des avantages sociaux. Si une certaine gêne de l'interface utilisateur de l'étape de l'assistant se trouvait dans la section achats du site Web de la société, corrigez-le, mais de nombreux bogues peuvent ne pas être résolus si la fonctionnalité ajoutée est le résultat d'une sécurité supplémentaire, d'un besoin commercial et, en particulier, de modifications des réglementations.

Mis à part une grande différence dans le temps et les ressources pour terminer l'un ou l'autre, il est préférable d'obtenir une entrée utilisateur / client. S'ils peuvent vivre avec le bogue si cela signifie obtenir la nouvelle fonctionnalité, ajoutez la fonctionnalité. Le but devrait être d'éviter de laisser les bugs s'accumuler, donc ayez un espace d'arrêt. À un moment donné, de nombreux petits problèmes deviennent majeurs.

JeffO
la source
-1

Écrire des tests pour montrer le bogue lors de l'exécution du test est un bon début pour corriger les bogues. Mais lorsque vous essayez de corriger les bogues qui ont la priorité la moins importante, nous devrions réfléchir à deux fois avant de procéder. Je ne voulais pas sauter de le réparer. Mais nous pouvons utiliser des ressources non critiques pour corriger ces bogues. Disons, dans mon équipe, que nous formons les nouvelles ressources avec les bogues les moins prioritaires dans la liste des bogues. De cette façon, nous avons la chance de former la nouvelle ressource et de leur donner une teinte de confiance quant au fait qu'ils ont corrigé leur entrée dans l'application. Cela les rendra certainement volontaires pour la prochaine tâche prioritaire.

J'espère que cela t'aides :)

Arun
la source
Votants: J'ai raté quelque chose? Ou est-ce totalement étrange à la question posée? Veuillez ne pas voter pour aucune raison. S'il y en a un, veuillez fournir.
Arun