it-swarm-fr.com

Comment gérez-vous des exigences changeantes?

Dans mon travail actuel, on ressent que nous avons beaucoup de changements d'exigence. Nous sommes une boutique "agile", alors je reçois que nous sommes censés ajuster et ce qui n'est pas, mais parfois le changement est grand et rien de trivial.

Ma question est que comment communiquez-vous efficacement le coût du changement? En raison d'être agile, si un changement est assez gros, quelque chose sera chuté du sprint actuel, mais il suffit généralement d'ajouter la prochaine fois. Étant donné que notre modèle est SaaS, le client final est effectivement l'entreprise elle-même et elles savent qu'ils obtiendront la fonctionnalité CUT N Semaines plus tard.

Je suppose que ce que j'essaie d'obtenir, c'est que la suppression d'une fonctionnalité n'est vraiment rien à utiliser pour la communication car elle n'a été que retardée par n semaines. Quelles autres façons devez-vous avoir l'affaire de comprendre quels coûts de changement?

14
user81

@Joe "Nous sommes une boutique" agile ", alors je reçois que nous sommes censés ajuster et ce qui n'est pas, mais parfois le changement est grand et rien de trivial."

Si votre processus ne vous permet pas de contrôler le taux de variation des exigences, votre processus n'est pas agile, mais le hasard. Agile ne signifie pas "prendre quoi que ce soit qui vient de mon chemin".

Pour contrôler les exigences, vous pouvez adopter - dans votre processus - la notion selon laquelle une exigence ne change pas (une notion que c'est au cœur de Scrum.) Traitez une nécessité de changement comme remplaçant une ancienne exigence avec un nouveau. Vous devez avoir un arriéré d'exigences et vous devez avoir l'utilisateur de choisir lesquels il/elle souhaite avoir mis en œuvre.

Vous vouliez x et y dans deux semaines, mais tout à coup, vous voulez Z. Eh bien, je peux alors vous livrer les trois en 4 semaines. Ou je peux donner une paire (x et z) ou (x et Y) ou (y et z) dans deux semaines et remettez le restant plus tard. Choisissez.

C'est ainsi que vous négociez avec les clients. C'est ainsi que vous communiquez le coût du changement d'exigence. Si votre groupe n'a pas ce pouvoir, vous n'êtes pas dans un magasin agile et que vous ne pouvez rien faire à ce sujet. Ça craint, mais c'est vrai.

Dans le cas où vous pouvez négocier, vous devez suivre (avec précision) le temps nécessaire pour mettre en œuvre les exigences et les modifications requises. C'est-à-dire que vous devez collecter ces données de projets passés et présents.

Vous collectez l'estimation de l'heure d'origine et le temps d'achèvement réel (en plus des ressources telles que le nombre de développeurs) par demande (ou module affecté par N demandes). Mieux encore, estimez la taille de la demande de demande/demande (en termes de lignes de code ou de points de fonction dans les projets et demandes passés.)

Dites que vous avez une métrique que vous pouvez parler à l'utilisateur. Vous savez qu'une nouvelle demande prendra, disons, 1k lignes de code ou 10 pages Web avec une moyenne de 5 champs d'entrée chacun (50 points de fonction).

Puis, en regardant des données historiques spécifiques à vos projets passés (certains par des lignes de codes, certains par pages Web, certaines par des points de fonction réels), et vous pouvez estimer la manière dont chacun de ces coûts est absolu le temps d'achèvement. Pour ceux qui ont des données suffisantes, vous pouvez également identifier ces exigences qui suivent un compte de tête de développeur réel.

Ensuite, vous utilisez cela et vous dites à votre client que sur la base de données historiques; Vous soutenez que les échecs de projet ont tendance à suivre une répartition exponentielle suivant; Et puis vous êtes armé de l'argument suivant pour votre client:

Sur la base des données de nos projets passés et présents et de ressources disponibles, l'exigence que vous demandez prendra

  1. X de temps pour compléter avec une probabilité d'échec de 25% (ou 75% du succès)

  2. 1,5 * x Temps de temps pour atteindre 5% de l'échec (ou 95% du succès)

  3. 0,5 * x Temps de temps pour atteindre 95% de l'échec (ou 5% du succès)

La probabilité d'échec en fonction de la quantité de ressources temporelles augmente généralement de 95%, 25% et 5% (ressemblant à une distribution exponentielle.) Vous transmettez le message qu'un certain montant de base donne une chance de réussite quelque peu décente (mais avec des risques réels ). 1,5 de cela pourrait donner une certaine mesure de succès avec un risque minimal, mais aussi bien que cela (0,5 de l'original garantit presque certains échecs.)

Vous les laissez digérer à ce sujet. S'ils vont toujours pour la proposition risquée (Terminé hier!) au moins vous avez par écrit que vous leur avez dit ainsi. S'il y a de l'espoir de votre groupe de non seulement d'être agile, mais comme l'ingénierie, le client peut alors mettre un examen sérieux dans vos numéros et planifier cela et les demandes futures en conséquence.

C'est votre travail d'ingénieur à expliquer en ingénieur, vérifiables et clairs sur lesquels demande des modifications ne sont pas un repas gratuit.

15
luis.espinal

D'après ce que vous avez décrit, vous n'avez pas de problème. Ils demandent une modification et sont prêts à attendre que vous le disiez peut être fait ou désireux de reporter une autre fonctionnalité. Semble être un équilibre entre: temps, ressources et exigences.

8
JeffO

Vous pouvez essayer de définir un nouvel âge d'une nouvelle addition/modification (non applicable aux corrections de bugs). Par exemple, aucune nouvelle modification ne peut être travaillé jusqu'à 3 semaines.

Avoir un âge minimum d'une tâche est agréable, car au début, chaque tâche ressemble à ce qu'elle est extrêmement importante, mais si vous attendez un peu de temps, il est important de tomber beaucoup de manière significative. En fonction de votre intervalle de temps, cela vous donnera au moins ce temps de stabilité dans les tâches que vous travaillez.

Pour suivre l'âge, vous permetriez d'ajouter les tâches à une liste, mais elles ne seraient pas considérées comme des tâches de travailler jusqu'à ce que cette période ait expiré.

4
Brian R. Bondy

C'est un problème très courant, peu importe la rapidité avec laquelle un projet évolue sur des termes techniques que le client le perçoit comme étant beaucoup plus lent et se sent libre de modifier les exigences telles qu'elles aiment penser que les développeurs ne doivent pas faire beaucoup de même.

Cette perception imparfaite provient de trois tâches de développement majeures qui consomment du temps et ne seront jamais comptabilisées correctement par les clients:

  1. CODE Avis/Nettoyer: Le code ancien se fait ballonner et foiré et a besoin d'examens réguliers et de nettoyages, cela prend beaucoup de temps et le client ne le croira jamais.
  2. Audit de sécurité et correctifs: surtout si vous avez des membres juniors de l'équipe, vous aurez de nombreux problèmes de sécurité liés au code et vous voudrez aller régulièrement à travers tout ce nouveau code qui a été écrit et réécrire des trucs qui ne sont pas beaux d'une sécurité. Perspective, le client ne saura jamais et ne tiendra jamais compte de cette heure.
  3. ARCHITECTURE CHANGEMENTS CONNEXES: Une base de code en croissance peut (et la plus probable) à plusieurs points nécessitent une repense structurelle et le refactoring Ceci peut impliquer: des modifications/optimisations liées à la performance (modifications d'algorithme, remplacements de bibliothèque, moteurs de cache, ... etc.) OU: B - Modifications/optimisations liées à la productivité (lisibilité, codes-réutilisabilité, facilité de compréhension, de nouvelles conventions de codage, un nouveau cadre, etc.).

Aucune de ces réponses ne sera jamais comprise et comptabilisée correctement par les clients de fin.

Fondamentalement tout ce qui n'a pas de "vues" (éléments d'interface graphique) n'a pas été fait.

Appelons ceci the Projenix Theorem, Haha non, je plaisante: D

1
Projenix