Est-ce mal d'utiliser Agile alors que les exigences des clients ne changent pas du tout?

12

J'ai vu beaucoup de messages récemment disant que l'une des principales raisons pour lesquelles Agile est utilisé est que les clients changent souvent les exigences.

Cependant, supposons que les clients ne changent pas souvent les exigences . En fait, les clients ont des exigences fermes mais peuvent être un peu vagues (mais rien de déraisonnablement vague), mais j'utilise quand même Agile.

La raison pour laquelle j'emploie Agile est que le logiciel est suffisamment complexe pour qu'il y ait des détails, des problèmes que je ne reconnaîtrais pas avant de les affronter. Je pourrais faire une approche de planification lourde à grande échelle comme une cascade, mais cela prendrait quelques mois pour finaliser toutes les signatures de conception de haut niveau et de codage de bas niveau. Il existe cependant une conception architecturale très spécifique et fixe pour le système.

Ma question est: Serait-ce considéré comme mauvais, codage cowboy, anti-pattern, etc.? Doit-on utiliser la cascade et planifier autant que possible dans les moindres détails avant de commencer à coder lorsque les exigences sont stables au lieu de cette mentalité «faisons-le» dans Agile?

EDIT: Le point principal ici est le suivant: nous NE POUVONS PAS blâmer les clients pour l'évolution des exigences. Supposons que les clients nous ont signalé un problème très concret, donnez-nous une liste de souhaits dans des détails très raisonnables et laissez-nous tranquilles (c.-à-d. Que les clients ont leurs propres choses productives à faire, ne les boguez plus. fin lorsque vous avez un prototype fonctionnel minimum). Serait-il mal d'utiliser Agile dans ce scénario?

InforméA
la source
2
@randomA: en fait, à mon humble avis, vous ne devriez jamais essayer une cascade pure uniquement si vous voulez créer un produit qui nécessite plus d'une semaine d'efforts.
Doc Brown
10
Veuillez me donner vos clients
razethestray
7
Je donnerai 2x plus pour vos clients que @razethestray
Euphoric
2
Si votre client ne veut pas "être dérangé quotidiennement", apprenez à communiquer efficacement avec lui. Par exemple, au lieu de faire des suppositions (probablement fausses) sur des points peu clairs, recueillez les questions dans une liste et envoyez la liste à votre client à intervalles réguliers. Encore mieux: organisez une réunion pour discuter des points. Si les exigences sont si claires que la liste reste vide: pas de réunion (mais je suppose que non). Si vous commencez à implémenter de fausses hypothèses dans votre logiciel, vous aurez beaucoup plus d'efforts pour changer cela plus tard.
Doc Brown
3
@randomA: vous pouvez garder votre client heureux pendant un certain temps en ne demandant rien, puis, lorsque vous livrez la dernière chose, le rendre très mécontent car il s'avère que vous avez tellement manqué les exigences que vous pouvez jeter votre programme et commencer dès le début (que le client ne sera pas disposé à payer). Ou vous le rendez un peu mais malheureux après un certain temps en lui en demandant assez entre les deux pour construire le bon programme, mais très heureux à la fin quand le programme fera réellement ce qu'il veut et qu'il obtiendra ce qu'il a payé. Choisissez votre choix.
Doc Brown

Réponses:

16

Serait-ce considéré comme mauvais, codage cow-boy, anti-modèle.

Réponse courte: non. Faire «agile» correctement ne signifie pas «pas de planification», cela signifie ne pas trop analyser les choses.

l'une des principales raisons pour lesquelles Agile est utilisé est que les clients modifient souvent les exigences.

C'est une déclaration trop simplificatrice. La «modification des exigences» concerne également l'évolution de la compréhension de l'équipe des exigences. Et il s'agit de la façon dont les priorités du client concernant l'exigence changent lorsqu'il voit effectivement quelques versions du logiciel.

En fait, "agile" fonctionne le mieux à mon humble avis exactement dans la situation que vous décrivez - le client a une bonne connaissance de ses besoins globaux, vous pouvez en rédiger un plan général, remplir votre carnet de commandes avec de nombreuses "user stories" et avoir déjà suffisamment d'informations pour choisir la bonne architecture du système. Les courtes itérations d'une stratégie de développement agile contribueront alors à rendre les «exigences vagues» plus précises, avec beaucoup de retours si vous allez toujours dans la bonne direction. Il vous donnera également des informations précoces sur les efforts et les coûts réels (ce que vous pouvez toujours échouer dans une approche en cascade, même si vous connaissez en détail chaque exigence).

Doc Brown
la source
3
Faire correctement la «cascade» ne signifie pas «tout planifier», cela signifie ne pas sous-analyser les choses.
Giorgio
1
@Giorgio: faire correctement la "cascade" signifie ne pas l'appliquer lorsque les exigences sont "un peu vagues" et "le logiciel est suffisamment complexe pour qu'il y ait des détails, des problèmes que je ne reconnaîtrais pas avant de les affronter" (citons les question d'origine).
Doc Brown
6

Utiliser l'agilité dans cette situation est toujours une très bonne idée. L'agilité présente de nombreux avantages, dont un seul est la rétroaction régulière du client et la capacité de répondre aux exigences changeantes comme vous le mentionnez.

L'une des principales raisons de l'échec des projets en cascade est le problème `` presque terminé '' - tester des tas de bogues produits à la fin, laissant un produit non libérable et aucune idée s'il a besoin de deux jours ou de deux ans pour corriger les bogues en suspens. Agile supprime entièrement ce risque. Si un projet agile est en cours d'exécution, vous pouvez toujours fournir une version de travail qui:

A) Prouve au client que vous êtes presque là grâce aux démos ("Toutes ces histoires sont faites, nous pouvons faire les dernières si vous le souhaitez") et un peu plus de temps obtiendra exactement ce qu'il veut.

B) Potentiellement, c'est assez bon pour qu'ils soient de toute façon heureux et libérés.

Pour moi, supprimer ce risque d'échec complet est une raison suffisante pour qu'une entreprise passe à un processus de développement agile, la capacité de créer de meilleurs logiciels qu'initialement prévu est la cerise sur le gâteau. Comme mentionné dans d'autres réponses, ces exigences «concrètes» sont encore étonnamment malléables.

SpoonerNZ
la source
Je ne comprends pas de quelle manière A) résout le problème que vous avez mentionné au début de votre réponse: comment savoir si les dernières histoires prendront quelques jours ou deux ans? Vous ne savez vraiment que quand vous les faites, n'est-ce pas?
Giorgio
1
Vous avez raison, mais la différence est que vous avez un produit libérable dans son état actuel, plutôt qu'un logiciel buggé à 90% qui ne peut pas être publié. Vous avez également des preuves empiriques du temps qu'il vous a fallu pour fournir les fonctionnalités qui sont disponibles, et vos estimations du travail restant qui sont susceptibles de donner plus de confiance qu'aucune preuve que tout ce que vous avez fait fonctionne réellement.
SpoonerNZ
Cela dépend: si toutes les fonctionnalités prévues sont essentielles, alors un produit avec 90% de fonctionnalités est inutilisable / non libérable: il ne peut être utilisé que pour donner une démo de ce qui existe déjà. D'après mon expérience, l'agile n'est pas préférable dans toutes les situations: il existe des projets pour lesquels l'agile est plus adapté (exigences changeantes, petites fonctionnalités autonomes et indépendantes) et des projets pour lesquels il ne l'est pas (exigences stables, complexes et / ou critiques pour la mission) Caractéristiques).
Giorgio
Je suis d'accord - la sous-livraison n'est pas bonne dans les deux cas, mais en tant que partie prenante, feriez-vous confiance à l'équipe qui produit une version pleinement fonctionnelle de votre logiciel pour jouer avec tout ce qui fonctionne mais certaines fonctionnalités manquent, ou l'équipe qui vous donne un pile criblée de bogues de code source qui a théoriquement toutes vos fonctionnalités mais se bloque beaucoup et a beaucoup de comportements inattendus? Je sais en qui je ferais plus confiance.
SpoonerNZ
Bien sûr, je ferais confiance à la première équipe, mais je ne suis pas d'accord pour dire qu'en utilisant une méthode non agile, vous vous retrouvez toujours avec "une pile de code source criblée de bogues qui a théoriquement toutes vos fonctionnalités mais plante et a beaucoup de comportements inattendus" . Du moins, cela n'a pas été mon expérience jusqu'à présent.
Giorgio
3

Agile est idéal si vous avez besoin d'une boucle de rétroaction fréquente avec le client. Cela peut être dû au fait que les exigences changent fréquemment, mais cela peut également être dû à d'autres raisons.

D'un autre côté, Agile peut fonctionner aussi bien si les exigences sont entièrement stables et que le client ne s'attend qu'à une seule livraison big-bang, mais vous devrez peut-être adapter les choses un peu pour la quantité d'implication que le client attend d'avoir pendant la projet. Cela signifie que le rôle de Product Owner doit être rempli au sein de votre propre organisation et que cette personne doit avoir suffisamment de mandat du client pour prendre des décisions.

Bart van Ingen Schenau
la source
1
Je me demande souvent si les clients qui ne veulent pas trop s'impliquer ont un réel besoin commercial. J'ai souvent vu cela se produire dans des projets où une application existante est «traduite» en une nouvelle technologie. Vous pouvez vérifier le code si vous avez des questions, c'est ce qu'ils vous disent. Personne n'attend le remake.
user99561
@ user99561: vous avez raison, mais dans de telles situations, les exigences ne sont généralement pas vagues, elles sont limpides - tant que le nouveau programme se comportera exactement comme l'ancien. Dans une telle situation, une approche "agile" n'est en effet pas nécessaire. Une approche itérative, basée sur des kilomètres (sans grande interaction avec le client) sera en effet suffisante.
Doc Brown
Clair comme de l'eau de roche? Bonne chance pour savoir quel est le comportement exact et quelles sont les exceptions. La plupart du temps, même les hommes d'affaires ne comprennent pas ce qui se passe dans l'application. Mon conseil: fuyez le plus vite possible ces projets. Parce que vous savez quand le projet démarre, mais vous ne savez pas quand le dernier bug posté car les applications se comportent différemment sera corrigé.
user99561
0

Vous pouvez toujours diviser la grande version en versions plus petites (sprints) et demander des commentaires à votre client. De cette façon, vous êtes sûr de faire la bonne chose et le client peut suivre vos progrès.

S'il y a quelque chose qui ne va pas, vous pouvez offrir à votre client la possibilité de vous corriger plus tôt, ce qui est très bien. Il vaut mieux corriger vos erreurs le plus tôt possible, plutôt que de lui montrer une connerie à la fin et essayer de la réparer quand vous ne savez même pas par où commencer.

Silviu Burcea
la source
Je viens d'ajouter une modification pour clarifier. Les clients ont montré un problème avec suffisamment de détails et une liste de souhaits claire et ne veulent plus être dérangés. Supposez donc, aucun retour client jusqu'à la fin lorsque vous pouvez faire la démonstration d'un prototype fonctionnel.
InformedA