Je travaille pour une société de développement de logiciels où le travail de développement nous a été abandonné. L'équipe à terre s'occupe du soutien et parle directement aux clients. Nous ne parlons jamais directement aux clients, nous parlons simplement aux gens de l'équipe à terre, qui parlent directement aux clients.
Lorsque les exigences viennent, l'équipe à terre parle aux clients et établit les documents d'exigence et nous informe. Nous réalisons des documents de conception après avoir étudié les exigences (nous suivons le modèle traditionnel en cascade).
Mais il y a un problème dans tout le processus: personne dans l'équipe off-shore ou on-shore ne comprend parfaitement les fonctionnalités de l'application. Nous savons que c'est une grande application Web complexe qui gère le traitement complexe des commandes, la gestion des catalogues, la gestion des campagnes et d'autres activités. Nous avons du mal avec le document de conception car les exigences ne seraient pas claires. Il va ensuite dans une série de questions / réponses entre l'équipe à terre, l'équipe à terre et les clients. On nous disait souvent de comprendre les fonctionnalités du code. Mais ce n'est généralement pas possible car la base de code est énorme et même la compréhension d'un élément de menu simple prend des jours, voire des semaines. Nous avons essayé de dire aux clients de nous donner le transfert de connaissancessur l'application mais en vain. Notre responsable nous disait souvent de commencer à coder même si le document de conception n'est pas complet ou si les exigences ne sont pas claires. Nous commencerions par coder la partie des exigences qui semble claire et attendons le reste.
Cela retarderait généralement le déploiement d'un mois. Dans les cas extrêmes, nous aurions de très faibles erreurs dans le développement et la production, mais les clients diraient que ce n'est pas ce qu'ils ont demandé. Cela lancerait un jeu de blâme et une série de demandes de changement et nous finirions par développer quelque chose de très différent.
Ma question est de savoir comment feriez-vous du travail de développement si vous ne connaissez pas pleinement les fonctionnalités de l'application?
MISE À JOUR
La méthodologie de développement ce n'est pas vraiment mon choix et je ne suis pas le chef d'équipe. C'est comme ça que ça a commencé. J'ai essayé de parler aux gens des avantages de l'agilité, mais en vain. De plus, je ne pense pas que mon équipe ait l'état d'esprit nécessaire pour travailler dans un environnement agile.
Réponses:
Version courte:
Savoir quoi faire ≠ connaître votre client.
Imaginez ceci: vous êtes une entreprise liée au développement immobilier. Vous demandez à votre partenaire de construire un grand complexe. Le partenaire dit que malgré tous les documents que vous lui avez remis, il doit également parler directement aux personnes qui achèteraient les appartements de ce complexe. Sérieusement?
Version longue:
Il est toujours agréable de savoir comment une application spécifique sera utilisée, car c'est amusant d'apprendre des choses, mais ce n'est pas toujours possible sur de grands projets.
Certains domaines sont tout simplement trop complexes. Si vous n'êtes qu'un développeur et que vous travaillez sur plusieurs applications de plusieurs domaines, vous ne pouvez pas toujours comprendre ce que fait l'utilisateur final , car cela vous obligerait à passer cinq ans à apprendre la comptabilité, dix ans à la faculté de médecine, six ans en droit, etc.
D'un autre côté, un produit logiciel fabriqué sans aucune compréhension du domaine spécifique sera au mieux un peu inutilisable .
C'est pourquoi les exigences fonctionnelles et non fonctionnelles doivent être écrites par des personnes qui comprennent parfaitement le domaine. En général, la collecte des exigences implique en même temps:
Techniciens (par exemple des développeurs qui diraient qu'une fonctionnalité spécifique est impossible, que cette autre peut être bien meilleure si elle est effectuée de cette façon, et celle-ci coûtera des milliers de dollars alors qu'il existe une alternative beaucoup moins chère),
Des personnes spécialisées en gestion de projet,
Des personnes spécialisées dans le domaine du client , qui ont une parfaite compréhension de ce domaine et des besoins précis du client. Bien sûr, cela peut être le client lui-même.
Une exigence fonctionnelle et non fonctionnelle est écrite et suffisamment précise, vous n'avez besoin de rien d'autre en tant que personne dont le travail consiste à traduire ces exigences en code.
Quant à votre cas spécifique, vous décrivez vous-même la cause du problème:
Ce n'est pas le manque de connaissances sur le client qui cause tous les ennuis , c'est la faible qualité des exigences. Dans un projet correctement géré, les exigences fonctionnelles et non fonctionnelles doivent être parfaitement claires et sans ambiguïté. Si le document d'exigences n'est pas clair ou s'il vous dit que "le design visuel du produit doit être attractif" ou d'autres bêtises comme ça, c'est parce qu'il a été écrit par des gens qui ne savent pas l'écrire.
Sachant cela, vous devez agir différemment:
Si vous savez que l'équipe qui recueille les exigences est désespérée et que votre propre équipe a des personnes qualifiées pour la collecte des exigences, expliquez la situation à votre supérieur et dites que l'autre équipe doit être remplacée par une personne compétente , par exemple des personnes de la vôtre.
Sinon (c'est-à-dire s'ils ne sont pas désespérés), essayez de déterminer la cause interne de ces faibles exigences et persuadez-les que faire leur travail correctement ne fera que réduire le coût global du projet . Montrer les statistiques sur la façon dont les exigences mal écrites ont influencé le projet en augmentant le coût (combien?) Et le risque de ne pas être prêt pour la date limite est une bonne idée ici.
Le document des exigences est probablement incomplet. Je le vois tout le temps: les chefs de projet inexpérimentés sont juste convaincus qu'un document d'une page suffit, et ne comprennent pas pourquoi ils écriraient jamais trois à quatre cents pages au lieu d'une. Si c'est le cas dans votre entreprise, montrez que consacrer plus de temps aux exigences diminuerait les coûts.
la source
Vous utilisez exactement la mauvaise méthodologie de développement pour les problèmes que vous rencontrez.
En utilisant Waterfall, vous vous engagez à:
Envisagez d'utiliser, si possible, une autre façon de gérer le projet. Le développement logiciel agile possède plusieurs fonctionnalités conçues pour résoudre les problèmes auxquels vous êtes confronté.
Une comparaison décente de Waterfall vs Agile a été écrite il y a quelque temps, prenons quelques citations qui mettent en évidence vos problèmes:
Manquer la marque:
Attaché...
... et incapable de bouger
Où vous êtes maintenant est mauvais; vous ne répondez pas aux exigences du client et, si vous êtes dans le blâme du développement de logiciels, la productivité va disparaître, la méfiance va augmenter et les choses vont probablement empirer, pas mieux.
La relation avec le client est critique ; ici, il semble que vous ne puissiez pas collecter efficacement leurs problèmes et vous adapter à leurs besoins changeants dans la façon dont vous travaillez actuellement; vous devez donc chercher des moyens de changer cela.
la source
Ce n'est pas ainsi que cela fonctionne. L'un des sujets de ma formation actuelle est celui de l'analyse et de la relation avec un client. L'accent a toujours été mis sur la définition claire du projet. Imagine ça:
À moins que vous ne soyez très sûr de pouvoir (partiellement) créer les fondations correctes pour l'application, je dirais simplement au client qu'il n'y a pas d'autre moyen de le faire qu'avec des objectifs et des fonctionnalités clairement définis. Parce que si vous essayez simplement ce que cela pourrait être, vous risquez de jeter beaucoup d'argent et de perdre du temps.
la source
Voici quelques éléments qui aideront à surmonter les problèmes:
la source