Dans notre projet, nous travaillons dans une méthodologie zéro-bug (a.k.a zéro-défection). L'idée de base est que les bugs sont toujours plus élevés en priorité que les fonctionnalités. Si vous travaillez sur une histoire et que vous avez un bug, il doit être résolu 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 arriéré et la résoudre - la priorité absolue.
La raison pour laquelle je dis résolve est que nous ne corrigeons pas toujours le bogue. Parfois, nous venons de déclarer qu'il "ne répare pas" car ce n'est pas si important. Tout compris, il semble super. Nous expédions des produits de haute qualité et ne portez pas une "bosse" sous la forme d'un énorme arriéré de bugs.
Mais je ne suis pas sûr que cette approche est correcte. J'ai tendance à convenir que nous avons toujours besoin de réparer des bugs graves dès que possible et que nous devons jeter des bugs non intéressants. Mais qu'en est-il des bugs importants mais pas aussi importants que de nouvelles fonctionnalités? J'ai tendance à penser qu'ils doivent être classés dans l'arriéré avec une priorité appropriée.
Je vais donner un exemple pour que cela soit plus clair - dans mon projet, nous travaillons avec une interface utilisateur écrite dans Flex. Nous avons un écran de sorcier qui s'ouvre à la même taille pour chaque résolution d'écran. Il s'avère que lorsque nous étends la fenêtre de l'assistant, l'une des pages n'a pas l'air bien (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 bogue est laid. Je suis sûr que cela doit être corrigé. Mais nous sommes sur un horaire serré et nous avons beaucoup de fonctionnalités que nous avons peur ne pas faire la coupe et entrer dans la libération. Je sens que nous pouvons vivre avec un tel bug. Il doit être fixé, mais sur une priorité inférieure à celle des autres caractéristiques (donc, au cas où nous ne pourrons pas la compléter, au moins nous n'avons pas laissé de plus importantes caractéristiques). Mais, nous travaillons dans une politique de 0-bugs et il doit être fixé maintenant (même si nous avons passé plus d'une journée à essayer de le résoudre et nous aurons besoin de bail autre).
J'aimerais entendre des opinions sur la façon de gérer avec des bugs que je ne veux pas marquer comme "ne corrigera pas" mais n'a pas non plus d'importance.
Fixer les bugs Avant de rédiger un nouveau code est en fait l'un des douze points de : Test Joel . Joel explique également pourquoi il s'agit d'un incontournable:
En général, plus vous attendez avant de corriger un bug, le plus coûteux (à temps et en argent), il est à corriger.
Tu as le choix:
Soit vous implémentez une fonctionnalité hautement demandée et de retarder un bogue, ce qui augmentera inévitablement le coût de la fixation,
Ou vous réparez le bogue en ce moment, étant donné que les clients seront déçus que vous êtes si lent à la livraison de la fonctionnalité dont ils ont besoin.
Si le bogue n'est pas très important, lorsque la fonctionnalité est, la direction sera encline à demander à implémenter la fonctionnalité d'abord, puis corrigez le bogue. En ce qui concerne les entreprises, il s'agit d'un choix parfaitement valide, dans la mesure où la direction comprend clairement les conséquences, c'est-à-dire qu'il serait plus difficile de corriger le bogue plus tard que maintenant.
S'agissant de "Pas de nouvelles fonctionnalités tant que tous les bugs ne sont corrigés" peut ne pas être le meilleur choix d'affaires. Vous avez déjà mentionné ses limitations, il n'est donc pas nécessaire de l'expliquer.
Cela étant dit, le risque de laisser des caractéristiques très importantes être mis en œuvre avant de fixer des bugs mineurs a un risque: où mettre les limites? Une fonctionnalité demandée par 1 000 clients est-elle plus importante qu'un bogue 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 pouvez vous voir en quelques années avec un arriéré rempli de bugs qui n'étaient considérés pas assez importants pour être fixés avant juste une autre fonctionnalité de fantaisie.
Outre la plongée en particulier les détails de votre situation, vous feriez mieux de vous assurer que vous avez obtenu le droit fondamental et fondamental.
À cet égard, je pense qu'il est très important de souligner que la politique que vous mentionner, "les bugs sont toujours plus élevés en priorité que les fonctionnalités", en particulier le mot s'écarte d'au moins deux des quatre principes énoncés dans Manifesto agile :
individus et interactions sur les processus et les outils
Répondre au changement après un plan
Je n'insiste pas que vous devriez changer de politique, car je - croire fermement que l'on devrait être agile À propos de très appliquer des principes agiles.
Mais vous devriez être au moins conscient Lorsque vous vous écartez et que vous comprenez si et comment la déviation est justifiée. Mettez simplement, vous feriez mieux de vous assurer que ce que vous appelez "agile", ne glisse pas réellement dans un faux insensé, donc éloquemment couvert dans manifeste agile à moitié arsed :
individus et interactions sur les processus et les outils
[.____] et nous avons des processus et des outils obligatoires pour contrôler la manière dont ces personnes (nous préférons le terme "ressources") interagissentlogiciel de travail sur une documentation complète
[.____] Tant que ce logiciel est documenté de manière exhaustiveCollaboration client sur la négociation de contrat
[.____] dans les limites des contrats stricts, bien sûr et soumis à un contrôle de changement rigoureuxRépondre au changement après un plan
[.____] fourni un plan détaillé est en place pour répondre à la modification, et il est suivi avec précision
Par souci de combineté, ce sont non seulement des principes agiles que la politique zéro-bug semble projeter de.
Dans des projets non agiles, j'ai participé, il a été généralement considéré comme étant ... imprudent Pour passer le temps de programmation sur la fixation de bogues qui ne sont pas suffisamment importantes pour justifier la libération de la libération des priorités élevées.
À cause de cela, la gestion généralement dépensée (peut-être qu'elle serait plus précise de dire investi) Quelques efforts pour décider des bugs pouvant attendre à la prochaine version.
Vous savez, à moins que vous ne travaillez sur des logiciels critiques de mission, je recommanderais de déterminer de plus près les compétences et les capacités de réflexion de votre gestion.
Je veux dire, de ce que vous décrivez, cela semble plutôt incapable de prioriser correctement les bugs et les fonctionnalités. Si tel est le cas, s'ils ne peuvent pas gérer une tâche aussi relativement relativement de routine, qu'elles sont-elles non capables de? Fournir un salaire concurrentiel? Opportunités de croissance de carrière? les conditions de travail?
Comme vous l'indiquez à juste titre, une stratégie zéro-bugs a le risque que les problèmes non critiques soient ignorés ou poussés sous le tapis, car il n'est donc pas le meilleur moment pour les résoudre.
Ce que vous pouviez faire, c'est quand, lorsqu'un nouveau problème est rapporté, prendre une décision à trois:
De cette façon, les problèmes les moins importants ne seront pas entièrement oubliés, mais ils ne forcent pas non plus toutes les nouvelles fonctionnalités brillantes du prochain sprint. Le "tourner en une histoire" est juste pour que la direction puisse continuer à prétendre que vous suivez une politique de bugs zéro et que le propriétaire du produit devrait pouvoir équilibrer l'importance de la question de l'importance des fonctionnalités de l'arriéré.
Notez que, avec cette procédure, des problèmes tels que la barre de défilement que vous avez mentionné peut encore finir d'être non résolu à la fin du projet, mais ce n'est pas parce que personne ne le pensait être assez important (y compris les clients), pas parce qu'il n'y avait pas de temps où le problème a été trouvé.
Vous avez des problèmes lorsque vous essayez d'être trop littéral ou adressant à quelque chose dans le développement de logiciels autant que nous voulons tous que les choses soient coupées et séchées. Les bogues doivent être réparées avant que de nouvelles fonctionnalités soient ajoutées, mais j'envisagerais toujours l'importance de chacun lors de la prise de cette décision avec la portée du problème. Il y a des exceptions à tout.
Certaines applications sont si importantes qu'ils ont des sections qui ne sont pas liées du tout. Je ne vois pas pourquoi chaque nouvelle fonctionnalité du module payable des comptes doit être mise en attente, car il y a quelques bugs ennuyeux dans l'interface graphique des employés. Si une guizanie de l'assistant de l'assistant était située dans la section d'achat du site Web de la société, résolvez-la, mais de nombreux bugs peuvent devoir être insuffisants si la fonctionnalité supplémentaire résulte d'une sécurité supplémentaire, des besoins commerciaux et d'une évolution de la réglementation.
Autre qu'une grande divergence dans le temps et les ressources nécessaires pour compléter l'un ou l'autre, il est préférable d'obtenir une certaine entrée d'utilisateur/client. S'ils peuvent vivre avec le bogue si cela signifie obtenir la nouvelle fonctionnalité, ajoutez la fonctionnalité. L'objectif devrait être d'éviter de laisser des bugs empiler, alors ayez un écart d'arrêt. À un moment donné, de nombreux problèmes deviennent un grand nombre de problèmes.