Scrum crée-t-il des frais généraux supplémentaires pour les projets où les exigences ne changent pas?

29

Je lis le Scrum - Un guide de poche de Gunther Verheyen et il dit:

Le rapport Chaos de 2011 du Standish Group marque un tournant. Des recherches approfondies ont été menées pour comparer des projets traditionnels avec des projets utilisant des méthodes Agiles. Le rapport montre qu'une approche Agile du développement de logiciels se traduit par un rendement beaucoup plus élevé, même contre les anciennes attentes selon lesquelles les logiciels doivent être livrés à temps, dans les limites du budget et avec toute la portée promise. Le rapport montre que les projets Agile ont été trois fois plus réussis et qu'il y avait trois fois moins de projets Agile ayant échoué par rapport aux projets traditionnels.

J'ai donc un argument avec un de mes collègues qui dit que pour certains projets (comme la médecine / militaire où les exigences ne changent pas), Agile (et, en particulier, Scrum) est au-dessus de toutes les réunions, etc. et c'est plus logique d'utiliser la cascade, par exemple.

Mon point de vue est que Scrum devrait être adopté dans de tels projets car cela rendra le processus plus transparent et augmentera la productivité d'une équipe. Je pense également que les événements Scrum ne prendront pas beaucoup de temps s'ils ne sont pas nécessaires, car nous n'avons pas besoin de passer les 8 heures entières dans Sprint Planning pendant 1 mois de sprint. Nous pouvons consacrer 5 minutes juste pour être sûrs que nous sommes tous sur la même longueur d'onde et commencer à travailler.

Alors, Scrum créera-t-il des frais généraux supplémentaires pour un projet où les exigences ne changent pas?

Artem Malchenko
la source
50
Les exigences des projets militaires changent constamment - c'est ainsi qu'ils finissent massivement au-dessus du budget et sont retardés
HorusKol
26
Les seuls projets où les exigences ne changent pas sont les projets annulés ou terminés. Il se peut que dans certaines industries, le cycle de l'idée au produit déployé soit plus long que dans d'autres industries, mais cela ne change pas le fait que les idées / exigences changent constamment.
Bart van Ingen Schenau
24
J'ai été impliqué dans des projets militaires où les exigences "n'ont pas changé" parce qu'elles étaient si vagues qu'elles étaient inutiles. Par exemple, les exigences de performances pour un moteur d'avion de chasse: "Le moteur fonctionnera de manière satisfaisante sur toute l'enveloppe de vol de l'avion". Cette seule phrase était la spécification entière. La réponse à une demande de détails était "Eh bien, nous ne savons pas quelle sera l'enveloppe de vol complète tant que nous n'aurons pas testé l'avion prototype". Et non, je n'invente pas ça.
alephzero
7
Les rapports du CHAOS ont des problèmes - voir, par exemple, quelques.vu.nl/~x/chaos/chaos.pdf - et bien que, dans l’ensemble, la recherche sur l’efficacité des méthodes agiles et Scrum montre un effet positif, il existe des problèmes systématiques avec les groupes de comparaison puisque "non-agile" est moins bien défini que ce à quoi il est comparé.
Jack Aidley
8
@senseiwu l'idée qu'un ingénieur est "obligé d'expliquer son travail chaque jour à un non-technicien" suggère que vous n'avez jamais rien fait qui ressemble à ce dont parle le Scrum Guide. Ce qui, malheureusement, est assez courant chez les personnes qui prétendent avoir fait Scrum.
Erik

Réponses:

68

Je crois que c'est une hypothèse erronée de dire qu'il y a des projets où les exigences ne changent pas. Ayant travaillé à la fois dans l'industrie de la défense et l'industrie pharmaceutique dans la fabrication de logiciels, je peux vous dire qu'une fois que le logiciel se retrouve entre les mains d'experts en la matière (internes ou externes), il y a des retours. Parfois, ces commentaires portent sur la façon dont l'exigence a été satisfaite et dans d'autres cas, ils sont en fait sur les exigences elles-mêmes erronées ou incomplètes.

L'agilité consiste à réduire ce cycle de rétroaction et à mettre plus rapidement un logiciel fonctionnel entre les mains de quelqu'un, à obtenir cette rétroaction et à décider de la prochaine étape pour s'assurer que ce qui est livré ajoute de la valeur lorsque le client décide d'accepter le logiciel. Même dans des domaines tels que les systèmes embarqués avec du matériel personnalisé (comme vous pouvez le trouver dans des domaines tels que l'aérospatiale, l'automobile ou les appareils médicaux), la fourniture rapide de minces tranches de fonctionnalités à intégrer et à prototyper peut vous aider à vous assurer que le système logiciel et matériel va fonctionner comme prévu et d'une manière qui aidera l'utilisateur final.

La réduction de la longueur du cycle de rétroaction est un énorme facteur de réduction des risques. Du point de vue de la gestion de projet, si vous financez un projet pendant 2 à 4 semaines et obtenez une visibilité régulière sur l'avancement, cela vous assure que vous êtes sur la bonne voie. En étant en mesure de fournir de fines tranches de fonctionnalités, vous travaillez progressivement vers l'état cible et pouvez commencer à prévoir quand vous y arriverez. Si le temps devient une contrainte, vous pouvez réduire les fonctions de valeur inférieure, car le travail effectué en premier doit être soit une fonction de valeur élevée, soit un catalyseur pour une fonction de valeur élevée. À tout moment, vous pouvez décider s'il vaut la peine de continuer à financer l'effort ou aller dans une direction différente et arrêter un projet avant qu'il ne soit trop tard.

Thomas Owens
la source
1
Pour en savoir plus sur l'impact des durées de cycle de rétroaction blog.codinghorror.com/boyds-law-of-iteration
StuperUser
Désolé d'être le (un) randon downvoter, mais pour moi, cette réponse ne répond pas vraiment à la question. C'est juste une déclaration de la façon dont vous pensez que les choses devraient être.
Simon B
12

La réponse très courte est que oui, Scrum est par conception une approche plus coûteuse, mais si vous l'appelez un projet, cela n'a presque certainement pas d'importance et au final, il en résultera presque toujours un meilleur retour sur investissement.

La réponse la plus complète est la suivante:

De manière générale, il existe trois formes de contrôle de processus: le contrôle de processus défini, le contrôle de processus statistique et le contrôle de processus empirique. Le contrôle de processus défini est de loin le moins cher. Cela est possible avec un travail fréquemment répétable qui a été affiné au fil du temps pour trouver la "meilleure" façon de faire le travail. CI / CD dans le développement de logiciels tombe dans cette catégorie. Vous ne voulez pas de variation dans votre processus de construction, vous standardisez donc le processus, ajustez-le jusqu'à ce que vous en soyez satisfait, puis automatisez-le. Ce processus automatisé est évidemment beaucoup moins coûteux à exécuter que de se battre manuellement via un déploiement.

Le contrôle statistique des processus est le deuxième moins cher, mais il tient compte des variations d'un processus connu. Les procédures médicales qui se déroulent conformément au plan entrent dans cette catégorie. Je ne veux pas réinventer un pontage à chaque fois. Je suis le processus de base et je m'adapte aux variations. Cela a une charge cognitive relativement faible et un taux de réussite assez élevé.

Vient ensuite le contrôle de processus empirique, qui est de loin le plus cher car vous devez découvrir le processus au fur et à mesure. L'apprentissage est incroyablement élevé, mais au prix de la productivité et de l'efficacité. Cependant, presque tout le travail de projet l'exige car peu de projets ont été réalisés auparavant. Il y a, bien sûr, des exceptions. La configuration d'un grand environnement Active Directory est plus statistique car vous travaillez à partir d'instructions éprouvées que vous déviez légèrement en fonction des circonstances. Mais à moins que votre projet ne fasse exactement le travail qui a été fait auparavant, cela nécessite presque certainement un contrôle de processus impérial.

Pour le ramener à Scrum, Scrum est conçu pour résoudre les problèmes avec le contrôle du processus impérial. À cet effet, oui, il a plus de frais généraux que d'autres approches. Cependant, comme la plupart des projets nécessitent cette approche, c'est un argument théorique.

Au contrepoint de la médecine et des projets militaires, cela ressemble à une logique défectueuse. Si vous exécutez une commande de 500 avions, alors oui, vous recréez quelque chose exactement et Scrum n'est probablement pas bénéfique. Si vous construisez un nouvel avion et que vos besoins ne changent jamais, je ne piloterais pas cet avion.

Daniel
la source
10

Bien sûr, si vous avez un projet où vous avez des exigences limpides à l'avance, vous pouvez les déposer en cascade devant les développeurs et revenir deux ans plus tard pour rencontrer le logiciel de vos rêves.

Mais la grande majorité des projets logiciels n'est pas comme ça.

Habituellement, le client ne sait pas de quoi il a besoin. Ils ne sont pas en mesure de fournir des exigences complètes et spécifiques. Les approches itératives aident ici: construire une petite chose, puis demander des commentaires au client. Oui, cela "fait perdre" du temps sur les démos et la planification de la prochaine itération. Mais construire la mauvaise chose pour un sprint puis corriger rapidement les exigences est bien mieux que de construire la mauvaise chose pour l'ensemble du projet. C'est-à-dire que si les exigences initiales peuvent permettre un développement plus efficace , les approches itératives seront plus efficaces .

Les développeurs doivent comprendre correctement les exigences s'ils veulent créer des logiciels utiles. Quelle est la bonne façon de découvrir les malentendus avant qu'il ne soit trop tard? Encore une fois, les approches itératives peuvent aider. Mais il est également important que les développeurs eux-mêmes collaborent avec le client au lieu d'obtenir uniquement des informations filtrées via un auteur de document d'exigences.

Enfin, le monde ne s'arrête pas pendant le projet. Les systèmes externes changent, les priorités changent, les gens changent. Prétendre que les exigences d'un projet logiciel ne changeront pas est une mauvaise idée, sauf pour les projets courts.

Tous ces avantages au niveau des processus manquent le gros avantage quotidien des approches agiles: si elles sont faites correctement, l'agilité rend tout le monde plus heureux. Le plus important d'entre eux est que les techniques agiles se concentrent sur la fourniture d'une valeur réelle sur de courts délais. Cela donne de la visibilité au processus de développement, donne aux parties prenantes un niveau raisonnable de contrôle sur le projet et est beaucoup plus motivant que de travailler vers un objectif éloigné. À cela s'ajoute l'idée que les équipes agiles seront largement auto-organisées. Le sentiment de contrôle sur leur travail quotidien donne aux gens le sentiment d'être valorisés, et donc plus susceptibles de donner le meilleur d'eux-mêmes.

Votre collègue n'a pas tort que les projets de style cascade puissent avoir leur place. Et vous ne vous trompez pas que certaines pratiques agiles peuvent être des rituels qui font perdre du temps. Mais il est complètement stupide d'ignorer les avantages des approches agiles et itératives, en particulier une meilleure gestion des risques et le respect des individus. Ce sont des choses que vous voulez dans chaque projet. Si nécessaire, une équipe peut essayer de mettre en œuvre une partie de cela en interne, mais les processus fonctionnent mieux lorsque tout le monde est à bord.

amon
la source
1

Je pense que cela pourrait bien paraphraser ce que dit @Cort Ammon, mais voici mon point de vue:

Les exigences externes (décrivant les "livrables") ne sont pas les seules exigences d'un projet. Même si les exigences externes ne changent pas, les exigences "internes" changeront ou devront être modifiées au fur et à mesure que vous travaillez. Les développeurs découvriront des obstacles ou des problèmes avec une approche, ce qui affectera le travail des autres personnes de l'équipe. Un stand-up quotidien tiendra tout le monde au courant de ces changements internes.

Beejamin
la source
1
oui, j'ai travaillé sur des projets de cascade où aucune exigence n'a changé pendant la construction, mais une personne a passé presque toute la journée à modifier le plan du projet pour tenir compte des maladies, des vacances, des problèmes techniques imprévus.
WendyG
1

Considérez que:

  • Même avec des exigences fonctionnelles fixes, vous devez les traduire en exigences techniques. Et cela peut être mieux fait par itérations. Vous découvrirez peut-être de meilleures façons de résoudre le problème au milieu du projet.

  • Certaines exigences peuvent être trop génériques ou ambiguës: "être facile à utiliser", "être sécurisé". Il est difficile d'analyser la sécurité ou l'utilisabilité d'un système qu'il n'est pas terminé. Certains peuvent avoir des implications cachées ou peuvent ne pas être bien compris.

  • Certaines exigences peuvent être améliorées. Répondre en 200 ms peut être bon, mais 100 peut être meilleur. Vous pouvez viser le meilleur résultat possible mais le sacrifier si nécessaire pendant le projet.

  • Vous pouvez découvrir des exigences cachées qui ne seront pas écrites sur le contrat mais qui peuvent faire passer le projet de l'échec au succès. Même si vous livrez le projet, le client peut ne pas être satisfait. Peut-être qu'ils ont même besoin de modifier le contrat pour ajouter (et facturer) de nouvelles fonctionnalités que vous pouvez concevoir dans le projet moins cher au début.

  • Vous découvrirez peut-être que vous ne pouvez pas répondre à vos besoins dans le délai imparti. Ce n'est pas comme si les projets logiciels n'étaient jamais en retard. Ainsi, offrir la meilleure valeur vous permettra de renégocier les fonctionnalités à supprimer.

  • Livrer quelque chose plus tôt facilitera l'intégration et montrera que ce projet peut produire des résultats.

Borjab
la source
0

On peut faire valoir que si toutes les exigences sont énoncées parfaitement, il existe alors une approche descendante qui répond à ces exigences le plus rapidement possible. Cependant, si ce sont de bonnes exigences, elles vous disent quoi faire, pas comment le faire. S'ils vous disent comment le faire, je choisirais de l'appeler «instructions de travail» au lieu d '«exigences» et nous discuterions d'un type de problème différent.

En conséquence, il existe toujours un processus de développement du «comment» interne à l'entreprise ou à l'équipe mettant en œuvre les exigences. Empiriquement parlant, nous comptons fortement sur une approche hiérarchique où une équipe de concepteurs conçoit le système de haut niveau pour répondre à ces exigences, puis utilise les spécificités de ce système de haut niveau pour fournir des «exigences» aux petites équipes qui étoffent nos détails.

Dans le processus en cascade, cela peut être vu dans la flèche à sens unique entre la conception et la mise en œuvre. Cependant, ces exigences ne sont pas gravées dans le marbre, comme celles fournies par le client. Celles-ci sont définies en interne et ont de la place pour le processus itératif. En pratique, nous constatons que les concepteurs mettent une marge considérable dans le processus pour tenir compte de ce manque d'itération ou recherchent un processus itératif.

SCRUM, et de nombreuses autres méthodes agiles connexes, fournissent simplement un cadre rigoureux dans lequel effectuer ce processus itératif. L'une des marques de commerce des approches agiles est qu'elles considèrent l'optimisation de ce modèle itératif comme étant le cœur du processus, plutôt que de se concentrer sur la couche externe des exigences strictes. Comme d'autres l'ont mentionné, les exigences fixes réelles sont rares, mais même en leur présence, SCRUM utilise l'approche itérative comme méthodologie pour contrôler l'approche contractuelle à laquelle il s'intègre.

La question de savoir s'il réussit à le faire est un sujet de débat ouvert. D'autres ont fourni de nombreuses mesures à cette fin. Je noterai simplement qu'il appartient à la force de la direction de s'assurer que les itérations qui se produisent en dessous d'elles se rejoignent correctement dans le système contractuel ci-dessus. Cela est vrai avec n'importe quelle approche du développement, mais cela est plus visible dans les approches agiles parce que nous avons été amenés à supposer que l'approche la plus descendante est «normale» et que des leaders formés en tant que tels.

Cort Ammon - Rétablir Monica
la source