La cause principale de votre frustration face à la situation est probablement la perception et les termes trompeurs / erronés utilisés par le client. Le client ne vient généralement pas vers vous avec une liste d' exigences , mais une liste de souhaits de tout ce à quoi il pourrait penser pourrait lui être utile. Ce ne sont pas toutes des exigences, car le client n'a pas encore passé le temps de vraiment penser si chaque fonctionnalité est vraiment requise .
Ce n'est pas nécessairement toujours un problème
Si votre client a l'argent pour toutes ces fonctionnalités et est prêt à s'en séparer, et que vous ne vous souciez pas vraiment de résoudre les problèmes réels et réels du client, cela pourrait être un projet très lucratif. Cela arrive, juste très, très rarement, et pour la plupart des développeurs, c'est un travail qui tue l'âme parce que vous pouvez sentir à l'avance que le projet ne réussira pas pour le client à la fin (même s'il est financièrement réussi pour vous en tant que développeur). C'est également un risque élevé, car vous risquez de vous retrouver avec un projet à coût fixe avec beaucoup d'incertitude, et il est vraiment difficile de mal évaluer le risque sur les grands projets.
Et si c'est un problème?
Supposons que vous n'êtes pas dans cette situation rare. Dans ce cas, vous souhaiterez combler les deux principales lacunes de la liste de souhaits comme indiqué:
- Il est peu probable que le client ait une idée correcte des coûts de développement d'une telle liste d'exigences, il est donc peu probable d'obtenir le contrat pour le montant d'argent dont vous avez réellement besoin pour le faire.
- Il est peu probable que cette liste de souhaits décrive avec précision et succinctement le véritable problème que le client a et veut résoudre.
D'après mon expérience, vous devez aborder 2 pour corriger 1. L'exploration du problème réel signifie que vous, le développeur, avez maintenant les informations nécessaires pour faire des sauts créatifs dans la résolution du problème d'une manière à laquelle le client lui-même n'a jamais pensé. Ces solutions sont susceptibles d'être beaucoup moins chères et plus rapides que la mise en œuvre de la liste de souhaits complète.
Comment corrigez-vous cela?
Comme Matthew Flynn le dit dans sa réponse - commencez par faire en sorte que le client priorise les exigences. Ce n'est pas toujours facile, mais forcez-les à le faire. Si nécessaire, utilisez la phrase "Si quelqu'un tenait une arme à feu sur votre tête, quelle seule exigence maintiendriez-vous?". Au cours de ce processus, vous constaterez souvent que le client n'a pas vraiment une idée très claire de la signification des exigences individuelles. Dans ce cas, faites ce que Peter Rowell suggère et demandez au client de parcourir les User Stories. Vous et le client commencerez à mieux comprendre le problème et les exigences, puis vous pourrez revenir à la priorisation. Répétez ces étapes aussi souvent que nécessaire jusqu'à ce que vous vous sentiez à l'aise d'en savoir suffisamment pour résoudre le problème du client .
Comment cela répond-il à la question du développement d'une solution?
Une fois que vous avez une liste d'exigences priorisée, vous disposez des informations dont vous avez besoin pour suggérer un processus de développement incrémentiel à votre client. Vous n'avez pas à l'appeler Agile, mais vous pouvez suggérer de diviser le contrat en petits morceaux pour chaque exigence (ou ensemble indivisible d'exigences) et de les livrer un par un avec validation par le client. Ou vous pouvez tout faire et utiliser les nombreuses ressources disponibles en ligne et hors ligne pour convaincre le client qu'il est dans son intérêt de coopérer dans l'un des styles de développement Agile. Dans tous les cas, vous pouvez fournir votre proposition de contrat / projet sous une forme qui suggère clairement ces blocs de construction d'exigences par ordre de priorité, chacun avec son propre coût et sa propre conclusion. Tenez cette carotte devant le client,