Que faire à propos du «développement piloté par les défaillances»?

28

Dans notre boutique, nous nous efforçons d'être agiles. Et je dirais que nous faisons de grands progrès. Cela dit, quelques-uns d'entre nous ont repéré un modèle que nous avons commencé à appeler le «développement axé sur les échecs».

Le développement basé sur les échecs peut être décrit comme un cycle de libération / itération agile où les bogues / fonctionnalités sont guidés non par des tâches et des histoires avec des critères d'acceptation, mais par des défauts entrés dans le logiciel de suivi des défauts.

Notre équipe a un grand chef de projet qui s'efforce d'obtenir les critères d'acceptation du client (s), mais ce n'est pas toujours possible. De mon président de développement, cela est dû au fait que le client ne sait pas exactement ce qu'il veut ou (et c'est le kicker) deux "camps" différents au siège du client en conflit avec la façon dont une histoire doit être mise en œuvre. Le Camp A dictera vaguement que la fonctionnalité X fonctionne comme ceci , puis le Camp B échouera car il ne fonctionne pas comme ça . D'où le terme "FDD". Le processus est entraîné par des «échecs».

Cela m'amène à ma question: quelqu'un d'autre a-t-il rencontré cela et si oui, des conseils / suggestions pour y faire face?

Nous avons, bien sûr, essayé d'obtenir l'accord préalable des camps A et B, mais tout le monde sait que ce n'est pas toujours le cas.

Merci

DevSolo
la source

Réponses:

19

Des exigences extrêmement conflictuelles ne sont pas inhabituelles dans le monde de l'entreprise. Et c'est souvent la raison pour laquelle les projets d'automatisation des processus métier «échouent». Cela peut être aussi simple que «le manuel des politiques et procédures dit de faire X» tandis que les personnes qui font réellement le travail font Y. Faire en sorte que le logiciel fasse Y signifie que les personnes qui paient pour le logiciel insisteront pour que le logiciel soit défectueux par rapport à leur la perspective. Faire fonctionner le logiciel X signifie que les personnes qui font réellement le travail ne peuvent pas le faire.

Normalement, la plupart des entreprises de développement choisissent ce que les gestionnaires disent plutôt que ce que les travailleurs déclarent parce que c'est ainsi que les factures sont payées. Dans le monde idéal, il n'y a pas de décalage d'impédance entre les politiques écrites et réelles; dans le monde réel, une grande partie du travail de bureau est divisée de manière informelle et sans papiers.

Le camp A dictera à tort que la fonctionnalité X fonctionne comme ceci, puis le camp B échouera car il ne fonctionnera pas comme ça.

L'inadéquation entre CampA et CampB est un problème politique et non un problème logiciel. Résoudre le problème impliquera de parler aux gens et d'obtenir un gagnant clair.

Tangurena
la source
5
Compte tenu du commentaire «l'inadéquation entre CampA et CampB est une question politique ...» Je marque cela comme la réponse «correcte».
DevSolo
Dans Scrum, c'est le rôle du propriétaire du produit de conduire CampA et CampB vers une solution commune. Pour l'équipe de développement, il ne devrait y avoir qu'une seule vérité fournie par le propriétaire du produit.
k3b
@ k3b c'est vrai, mais l'OP ne dit pas qu'ils ont l'intention de faire Scrum. On dirait qu'ils n'ont personne qui corresponde au rôle de «propriétaire de produit» de la mêlée.
bdsl
7

L'une des principales raisons d'utiliser le développement itératif est que vous avez un groupe de clients qui n'a pas une bonne idée de ce qu'il veut.

Ce n'est pas un échec. De nombreux clients n'ont tout simplement aucune idée de ce dont ils ont besoin tant qu'ils n'ont pas quelque chose entre les mains. C'est pourquoi la première fois que le client voit que le système ne devrait pas l'être après que tout l'ajustement et la finition ont été effectués. Qu'ils le voient tôt et souvent.

En d'autres termes, si c'était le seul problème, il n'y a pas lieu de paniquer à moins que vous ne vous retrouviez dans une situation où vous avez juste des tentatives sans fin.

Le problème de désaccord entre le corps du client est un problème de chef de produit qui ne devrait pas vous arriver. Le plus que vous devriez voir est le backlog / tâches / quoi que ce soit. Bien sûr, le PM s'exprimera souvent en termes de développement, car c'est le seul endroit où il le peut, mais cela ne devrait pas vous affecter.

La façon dont il sera géré dépendra grandement de qui sont les camps A et B.

Si le Camp A et le Camp B représentent deux niveaux supérieurs, faites venir quelqu'un qui utilisera réellement le système pour vous dire ce dont vous avez besoin. Parfois, vous obtenez de l'air raréfié dans les terres de gestion, ce qui entraîne une déconnexion avec la réalité. Une personne pratique peut souvent couper l'idéalisme et souligner ce qui est vraiment nécessaire.

D'un autre côté, si A et B sont des groupes d'utilisateurs, vous utilisez la solution inverse pour amener quelqu'un de la direction à établir la loi.

Dans tous les cas, la perfection est l'ennemi du bien.

MIA
la source
5

Ce que vous décrivez est une mauvaise implémentation typique d'Agile. Vous n'embrassez pas le changement, vous en êtes l'esclave .

Avez-vous un propriétaire de produit? Pouvez-vous leur parler au besoin? Faites-vous une revue de sprint avec les utilisateurs? Les utilisateurs sont-ils impliqués dans le processus (via le propriétaire du produit) dans la planification du sprint? Avez-vous des testeurs dans l'équipe principale?

Je vous suggère fortement d'engager un coach Agile et / ou d'envoyer votre équipe à une formation.

Une autre solution est d'arrêter de faire de l'Agile.

Phrancis
la source
Nous avons en fait un coach Agile. J'aurais dû le mentionner. C'est lui et moi qui avons inventé le terme FDD. En ce qui concerne le propriétaire du produit, c'est aussi le client. Qui est suffisamment grand pour que son entreprise soit propice à ce comportement.
DevSolo
@DevSolo: est-il CSM, CSC ou CST? S'il est CSM, il ne suffit pas de coacher.
@ Pierre303 Qu'entendez-vous par CSM, CSC ou CST?
Songo
Scrum Master certifié, Scrum Coach certifié, Scrum Trainer certifié
1
@gnat: oui c'est moi
4

S'ils font du ping-pong (A dit faire x, B rejette, dit y, puis A rejette et revient à x), alors vos prospects (PO ou tout ce que vous avez) doivent les battre pour se faire une opinion. .

Ce n'est pas grave si le premier coup finit par ne pas répondre à leurs besoins (le but de tout cela est de leur donner quelque chose à regarder) mais s'ils s'assoient là et se balancent d'avant en arrière sur les itérations suivantes, vous ne serez jamais fait.

Michael Kohne
la source
3

Le problème ici ne semble pas être "je le saurai quand je le verrai". Les wireframes peuvent aider (jusqu'à un certain point) avec ce problème particulier.

Le problème ici est, il me semble, les deux factions concurrentes au sein de votre client. Idéalement, les camps A et B proposeraient une vision commune négociée qu'ils pourraient vous présenter.

Peut-être qu'ils pourraient être forcés à la table en expliquant combien les combats leur coûtent alors que vous refaites à nouveau ce que A a demandé pour B (ou vice versa).

Garder des notes détaillées de votre dépense de temps serait utile ici. (Mon travail a écrit une application de suivi du temps légère: facile à utiliser et facile à rapporter, et rend compte du temps en segments de 15 minutes. Il est facile de dire "j'ai passé n heures sur la fonctionnalité X.")

Cela signifie que vous risquez un peu de bouleverser le client ou d'avoir mauvaise mine, peu importe ce que vous faites, car ce que vous faites pour B peut bouleverser A (ou, encore une fois, vice versa).

J'espère que vous pourrez trouver un champion chez le client qui pourra s'occuper des luttes intestines pour vous.

Frank Shearar
la source
3

À mon avis, le problème ne peut être résolu efficacement qu'en un seul endroit, chez le client, ce qui va être difficile.

Vous mentionnez que vous vous efforcez d'être agile, donc je vais le prendre du point de vue de la mêlée, qui est le processus agile que je connais le mieux.

Selon Scrum, vous avez un rôle spécifique, le propriétaire du produit, qui est responsable de la hiérarchisation des user stories / bugs / releases, etc. Idéalement, il ne devrait s'agir que d'une seule personne. S'il existe de nombreuses parties intéressées ayant des vues différentes sur le même logiciel, il est de la responsabilité du propriétaire du produit que le produit satisfasse toutes les parties intéressées.

Il me semble que votre chef de projet a ce rôle. Mais comme il est appelé chef de projet et non chef de produit, je suis amené à croire qu'il est également chargé d'autres tâches (traditionnelles, non agiles, tâches de gestion?), Et n'a pas assez de temps pour poursuivre rôle de propriétaire de produit.

Je pense donc que vous avez besoin d'une personne chargée de coordonner les besoins entre les différentes équipes chez le client, en s'assurant que les exigences / user stories qui sont livrées aux développeurs ont été vérifiées par les deux équipes chez le client. Poursuivre ce rôle peut facilement être un travail à temps plein, en particulier avec le client que vous avez.

Ce qui serait vraiment idéal, c'est de transférer cette responsabilité au client, de confier à l'un de ses employés le rôle de chef de produit. Tant que le client n'a pas ce rôle, le client ne s'engage pas à résoudre ses propres désaccords internes et il vous laisse le soin de résoudre ce que vous ne pourrez probablement pas. Et c'est pourquoi je pense que la seule solution efficace est de responsabiliser le client.

Mais étant donné que vous avez déjà commencé une collaboration, je pense que vous aurez du mal à mettre en œuvre ce changement.

Pete
la source
Cela ne me semble pas comme si le PM était propriétaire d'un produit. La question indique que le PM "s'efforce d'obtenir les critères d'acceptation du client (s), mais ce n'est pas toujours possible". Pour moi, «propriétaire de produit» signifie quelqu'un qui établit lui-même les critères d'acceptation, plutôt que de le demander à une autre partie. Le problème principal ici semble être qu'il n'y a pas de politique claire sur qui a exactement le pouvoir de fixer les critères d'acceptation.
bdsl
2

Pour que votre logiciel soit accepté par votre client, il doit répondre aux exigences définies par le client selon les critères d'acceptation.

Vous avez un ensemble d'exigences utilisateur sous la forme d'histoires et de critères d'acceptation, mais certaines parties de l'organisation cliente ont des interprétations différentes des histoires utilisateur, ce qui crée une ambiguïté.

Vous pouvez sortir de cette situation en décrivant la conception fonctionnelle et les règles commerciales mises en œuvre et en les faisant signer par le client. Ce sera alors ce contre quoi sera testé lors de l'acceptation. Ceci doit être convenu au préalable par le client pour éviter des discussions sur la signification de toute la documentation par la suite.

Tant que votre groupe ne peut pas décrire le logiciel que vous construisez de manière à ce que les deux groupes en conviennent, vous êtes toujours dans la phase d'analyse des exigences du projet.

Votre chef de projet pourrait / devrait offrir une consultation rémunérée dans le cadre du projet pour résoudre l'ambiguïté des exigences fonctionnelles.

rsp
la source
1

Je pense que nous avons tous vu le cas où nous obtenons des exigences détaillées de l'utilisateur, les mettons en œuvre, puis entendons de l'utilisateur "Attendez, ça ne marchera pas pour moi" une fois qu'il sera mis en œuvre.

Une chose qui aiderait serait de faire une forme d'AQ sur les exigences en donnant à l'utilisateur des exemples détaillés avec le comportement attendu du système. Par exemple, vous pourriez dire: "Voici un exemple. Si nous implémentons X, alors Y sera le résultat et Z l'une des conséquences." De cette façon, vous pouvez accéder à «Attendre, ça ne va pas fonctionner» avant d'écrire le code au lieu de l'après.

Larry Coleman
la source