Il y a une chose que je me suis toujours demandée en lisant toutes ces choses sur le "développement agile" ici sur SE et sur d'autres sites:
En génie logiciel "traditionnel", vous
- recueillir les besoins de l'utilisateur,
- rédiger une spécification basée sur ces exigences,
- le remettre au client et le facturer pour le travail effectué jusqu'à présent,
- faire une conception technique (grossière), de façon à pouvoir estimer le coût de mise en œuvre,
- donner à l'utilisateur un devis pour la mise en œuvre,
- attendre que le client signe le cahier des charges et accepte l'offre,
- concevoir, mettre en œuvre, tester,
- facture.
Si, au cours du processus, les exigences changent, vous envoyez une offre (avec un prix) pour les changements souhaités (ou faites-le gratuitement si le changement est petit, vous aimez le client et le client ne le fait pas trop souvent) .
Alors, comment cela fonctionne-t-il (financièrement) dans un projet agile, où de fréquents changements d'exigences font partie du processus?
- Écrivez-vous une offre pour chaque changement de conception? (Ce ne serait pas tout à fait un gâchis?)
- Ou négociez-vous un prix fixe et espérez que le client ne change pas trop souvent les exigences? (Cela pourrait être risqué, je connais des clients qui utiliseraient cette opportunité pour demander de nouvelles fonctionnalités pendant des années avant d'accepter la fin du projet.)
- Ou facturez-vous simplement au client le temps total requis? (Cela pourrait être risqué pour le client, qui ne connaît pas le coût à l'avance.)
Réponses:
Dans un monde Agile idéal, vous convenez d'un prix à l'avance et d'un nombre d'heures, mais pas de portée. Le client décide quel est le produit utile minimum, plutôt que le produit qu'il veut vraiment, et cela devrait être bien en deçà du nombre d'heures convenu.
Ensuite, vous leur livrez de manière itérative et ils changent d'avis tout ce qu'ils veulent, mais vous ne dépassez jamais le nombre d'heures convenu. En théorie, et souvent en pratique, ils se retrouvent avec le produit dont ils ont vraiment besoin plutôt que le produit qu'ils veulent vraiment.
Et s'ils veulent continuer à vous payer des heures supplémentaires après la valeur convenue à l'origine, c'est bien aussi. Si vous faites assez bien pour rendre les progrès visibles, par le biais de cartes récit, de Greenhopper ou autre, vous pouvez indiquer très clairement au client quelles fonctionnalités il perd (ou au moins dépriorise) chaque fois qu'il ajoute quelque chose de nouveau, ce qui met largement un arrêt aux changements frivoles.
Il y a deux risques à noter ici. Premièrement, le client peut être effrayé s'il n'a pas compris Agility dès le départ. Il semble qu'il prenne tous les risques. Seule l'expérience montre qu'il ne l'est pas vraiment.
La seconde est qu'ils doivent être engagés tout au long du processus, sinon tout le monde y perdra. De nombreux clients ne comprennent pas à quel point ils doivent être engagés jusqu'à ce qu'il soit trop tard.
Mais si vous, en tant qu'entreprise, l'expliquez assez bien, tout le monde est gagnant.
la source
Certaines personnes ont tenté de donner des solutions pour utiliser Agility dans des projets à prix fixe dans le passé. Personnellement, je pense que ce n'est généralement pas possible.
Scrum en particulier convient aux sociétés de logiciels de produits et est moins utilisé dans les sociétés de services.
Vous pouvez utiliser une certaine agilité dans vos projets, tels que des itérations, des stand-ups quotidiens, burndorn, etc., mais je peux vous assurer que si vous offrez une certaine quantité de choses pour un certain prix et livrez moins que ce qui était dans le contrat, vous aurez un problème.
Veuillez ne pas servir Agility à toutes les sauces . Nous devons utiliser la solution appropriée à un problème donné.
la source
Ce n'est pas vraiment lié à la programmation Agile ou au modèle que vous utilisez. En tant que pigiste, j'utilise un mélange de Waterfall et de V-model, mais j'ai toujours le même problème: que se passe-t-il si le client veut changer quelque chose lors de la conception détaillée? Et s'il fait des changements pendant la mise en œuvre?
L'approche que vous devez utiliser dépend du client et de vos relations.
Si un contact est indispensable pour tout ce que vous faites pour ce client, car vous savez qu'il essaie de ne pas payer quand il le peut, ou il essaiera de vous poursuivre dans la mesure du possible, alors oui, vous devez rédiger une offre pour chaque petit changement dans les exigences. Ce n'est pas un gâchis: si vous êtes bien organisé, il peut ne pas être trop difficile de répondre à une nouvelle exigence pendant le développement. Mais c'est sûr, c'est une perte de temps et d'argent, et c'est plutôt étrange de devoir signer une offre de changement qui vous prendra deux heures à mettre en œuvre.
Pour les autres clients, l'approche qui fonctionne bien est la suivante:
Lors de la signature de la première offre, précisez le coût estimé et le coût maximum. Le coût estimé ne veut rien dire légalement: c'est juste une estimation. Le coût maximum a une valeur légale: si vous dites que le produit coûtera 3000 $ à votre client, et qu'il vous en coûtera finalement 3157,24 $, le client devra toujours payer 3000 $. En pratique, dans la plupart des cas, le coût réel sera inférieur au maximum donné et plus proche de votre estimation.
Lorsque le client demande de modifier une exigence, estimez son coût et comparez-le au coût réel et à l'état. Si vous avez presque terminé le produit et que le coût réel est de 2 108,36 $ et que le coût du changement est estimé à 150 $, faites-le. Si, en revanche, il existe un risque d'atteindre le maximum, dites à votre client que vous devez réévaluer le coût global ensemble.
la source
Agile et 'Rédiger une offre' semble être une antithèse :) - ce dernier n'est pas un génie logiciel productif: D
D'accord, maintenant que nous avons la blague à l'écart - revenons à la vraie chose.
"Comment ça marche en Agile ?" - le contrat complique les choses mais j'espère être clair. Agile est fondé sur le principe de `` confiance '' et de `` collaboration '', ce qui signifie que le client est autorisé à changer quoi que ce soit, à chaque fois et comprend que cela peut coûter un peu plus ou s'il n'est pas intrusif, peut-être sans frais supplémentaires.
Qu'est-ce que ça veut dire? Cela signifie que le contrat stipule que nous (le client) fixons une estimation initiale des coûts et le pourcentage de variance +/- que nous pouvons gérer, par exemple une offre de 100 000 $, mais je suis prêt à aller jusqu'à 120 000 $ (cela NE PEUT PAS être partie du contrat, mais dans l’esprit du client).
Maintenant, quand un changement de conception arrive, vous devenez agile avec l'estimation et la planification - vous rassemblez votre équipe et leur demandez l'estimation du «point de l'histoire» par rapport à la complexité de la prise en compte des changements. En raison d'une estimation de la vitesse, vous pouvez les multiplier et donner une estimation du calendrier. Il devrait être relativement facile de faire baisser le coût par point d'histoire si vous connaissez l'équipe et leurs salaires relatifs (veuillez ne pas faire la moyenne du salaire de TOUS, vous succomberez à la faille des moyennes).
Avez-vous besoin de retourner au client avec les données financières? NON. Pas nécessairement. Vous demanderez au client de les hiérarchiser et de les insérer au bon endroit dans le backlog. Maintenant que vous connaissez la taille de l'arriéré (vous devriez si vous ne l'avez pas déjà fait) et sur la base des données financières (coût par point d'histoire), vous savez quelles exigences de faible priorité peuvent ne pas être réalisables avec le budget donné. Montrez-leur le backlog repriorisé avec l'estimation des fonctionnalités réalisables selon le contrat $$. Ensuite, laissez-LES décider s'ils sont prêts à payer plus pour obtenir plus si / quand vous / ils y arrivent. S'ils le veulent gratuitement ... prenez position et dites-leur que cela coûtera plus cher.
Cela devrait vous aider sans que vous reveniez constamment avec les données financières si vous pouvez avoir ce graphique quelque part pour que le client puisse le voir.
J'espère que cela t'aides!
la source
L'expérience des autres variera probablement, mais une façon dont je l'ai vu se faire est en grande partie la même que votre "traditionnelle" avec quelques choses à noter:
Souvent aussi, les projets agiles commencent en tant qu'élément «de base» et s'en échappent de manière modulaire selon les besoins (j'ai vu cela se produire un peu sur les projets avec lesquels j'ai participé). Donc, vous commencez avec un produit de base, disons que c'est une application de cartographie. La première implémentation n'est qu'une carte centrée sur votre emplacement actuel (ce que le client a initialement commandé).
Le client décide alors qu'il souhaite avoir des épinglettes de certaines attractions autour de vous. D'accord, c'est un gros morceau (relativement parlant), donc vous le facturez comme un nouveau "module" ou un bon de commande. Les modifications apportées à des éléments tels que la couleur ou le design de ces épingles sont intégrées au coût de cette commande. Les directions et les superpositions constituent un autre bon de commande, car elles n'ont été demandées qu'après le lancement de l'autre bon de commande, etc.
la source