Programmation : les erreurs à ne jamais commettre lors du développement d'un produit
Les 11 péchés mortels selon Alan Cohen
Le 2015-06-12 08:59:21, par Michael Guilloux, Chroniqueur Actualités
Le développement d’un produit est une aventure pleine de risques et d’obstacles à surmonter pour garantir le succès du projet. Un projet est plein de pièges et chaque surprise non découverte à temps pourrait s’avérer fatale pour la réussite du projet. Dans un livre intitulé « Prototype to product : a practical guide for getting to market », l’auteur Alan Cohen consacre son premier chapitre à présenter « les 11 péchés mortels pour le développement d’un produit ». Une synthèse de ce chapitre a été faite sur le site Oreilly.com, mais ici nous allons nous limiter aux « péchés mortels » auxquels les développeurs sont couramment confrontés dans leurs différents projets.
La première chose à retenir est qu’il ne faut jamais remettre à demain ce que l’on peut faire aujourd’hui. Cet adage prend tout son sens dans le développement informatique car l’un des péchés mortels dans le développement d’un produit vient du vice de la paresse. Dans son livre, Alan Cohen explique en effet que c’est une erreur grave de faire les tests seulement après que les prototypes soient largement développés. Remettre les tests à la fin du développement peut conduire parfois à effectuer de grands changements alors que le projet est très avancé, ce qui est très coûteux. Les tests devraient vite commencer dans le développement, cela permettra de découvrir les surprises le plus tôt possible et d’entreprendre les actions nécessaires au bon moment.
D’autres erreurs qui pourraient miner le projet découlent des hypothèses que nous faisons sur les besoins des utilisateurs. A ce niveau, le développeur pourrait commettre 2 péchés mortels selon Cohen. Le premier est de supposer que nous connaissons les caractéristiques que le produit doit avoir pour satisfaire l’utilisateur moyen. La plupart du temps, nous ne le savons pas parce qu’en tant que développeurs, nous avons tendance à mettre l’accent sur la technologie. Nous désirons plus de fonctionnalités et plus de personnalisations, alors que l’utilisateur ne veut qu’un outil attrayant qui pourra lui permettre de travailler efficacement.
Une autre erreur à ne pas commettre est de se dire également que les utilisateurs savent ce dont ils ont besoin. Selon l’auteur du livre « Prototype to product », il se trouve souvent que ces derniers ne savent pas non plus ce qu’ils veulent mais plutôt ce qu’ils pensent qu’ils veulent. L’idéal serait donc de leur donner quelque chose à tester le plus vite possible - afin d’identifier leurs besoins réels - au lieu d’attendre jusqu’à la fin du développement.
Le flou ou le manque de spécificité dans la planification d'un produit et son effort de développement est également une source majeure d'échec du projet. Il y a 3 péchés mortels qui découlent du flou : le manque de compréhension des exigences, l’absence d’un bon plan de projet et la non assignation de responsabilité.
Si les deux dernières erreurs fatales liées au flou sont plus ou moins claires, il est important de revenir sur le manque de compréhension des exigences. A ce niveau, il faut noter qu’entre l’utilisateur final et le développeur, chaque intervenant a une certaine compréhension du produit que demande le client. Même si le client a une idée claire de ce qu’il souhaite, en exprimant son besoin, le produit qu’il décrit peut subir une modification et d’ores et déjà être différent de ce qu’il souhaite. Si le besoin est recueilli par une partie intermédiaire entre le client et le développeur, cette personne aura encore une compréhension un peu dégradée de ce que le client a exprimé ; alors le produit souhaité par le client subit une autre déformation. Jusqu’à ce que l’expression des besoins parvienne au développeur, le produit aurait déjà subi une profonde déformation. Le développeur va donc concevoir un produit selon la compréhension qu’il a eu des besoins de l’utilisateur. Il sera donc plus facile par exemple pour le client qui voulait une Lamborghini de se retrouver une Volkswagen.
D’autres erreurs à ne pas commettre dans un projet découlent du vice de perfectionnisme. Le développement d’un logiciel peut avoir de grands enjeux, au-delà de l’obligation du développeur de bien faire son travail. Un logiciel réussi peut apporter la gloire et la richesse alors qu’un échec d’un produit destiné à une utilisation à grande échelle pourrait s’avérer désastreux. Le développeur veut donc produire quelque chose de parfait et cela peut parfois l’inciter à développer de nouvelles fonctionnalités. Ce que certains développeurs ne mesurent souvent pas, c’est que l’ajout de nouvelles fonctionnalités a un coût et un risque de mise en œuvre. Une fois que les exigences sont déjà définies, le calendrier est établi et le budget verrouillé. L’ajout de nouvelles fonctionnalités va donc nécessiter plus de temps et générer des coûts supplémentaires.
Une autre erreur fatale liée au vice de perfectionnisme est de ne pas savoir quand arrêter le développement et livrer quelque chose au client. Un logiciel n’est jamais parfait, mais il arrive un moment où il peut être déjà libéré. Le développeur doit savoir s’arrêter à ce moment et donner quelque chose d’utilisable aux clients. Il y aura toujours la possibilité de faire des mises à jour sur le terrain, après que le logiciel ait été déployé.
L’orgueil est également un vice qui peut miner un projet. Selon Cohen, ce serait une erreur grave pour le développeur d’exclure la possibilité d’un échec. Envisager la possibilité d’un échec ne contribue qu’à aider le développeur, qui sera plus avisé pour ne pas commettre les autres erreurs.
Source : oreilly.com
Et vous ?
Qu’en pensez-vous ?
La première chose à retenir est qu’il ne faut jamais remettre à demain ce que l’on peut faire aujourd’hui. Cet adage prend tout son sens dans le développement informatique car l’un des péchés mortels dans le développement d’un produit vient du vice de la paresse. Dans son livre, Alan Cohen explique en effet que c’est une erreur grave de faire les tests seulement après que les prototypes soient largement développés. Remettre les tests à la fin du développement peut conduire parfois à effectuer de grands changements alors que le projet est très avancé, ce qui est très coûteux. Les tests devraient vite commencer dans le développement, cela permettra de découvrir les surprises le plus tôt possible et d’entreprendre les actions nécessaires au bon moment.
D’autres erreurs qui pourraient miner le projet découlent des hypothèses que nous faisons sur les besoins des utilisateurs. A ce niveau, le développeur pourrait commettre 2 péchés mortels selon Cohen. Le premier est de supposer que nous connaissons les caractéristiques que le produit doit avoir pour satisfaire l’utilisateur moyen. La plupart du temps, nous ne le savons pas parce qu’en tant que développeurs, nous avons tendance à mettre l’accent sur la technologie. Nous désirons plus de fonctionnalités et plus de personnalisations, alors que l’utilisateur ne veut qu’un outil attrayant qui pourra lui permettre de travailler efficacement.
Une autre erreur à ne pas commettre est de se dire également que les utilisateurs savent ce dont ils ont besoin. Selon l’auteur du livre « Prototype to product », il se trouve souvent que ces derniers ne savent pas non plus ce qu’ils veulent mais plutôt ce qu’ils pensent qu’ils veulent. L’idéal serait donc de leur donner quelque chose à tester le plus vite possible - afin d’identifier leurs besoins réels - au lieu d’attendre jusqu’à la fin du développement.
Le flou ou le manque de spécificité dans la planification d'un produit et son effort de développement est également une source majeure d'échec du projet. Il y a 3 péchés mortels qui découlent du flou : le manque de compréhension des exigences, l’absence d’un bon plan de projet et la non assignation de responsabilité.
Si les deux dernières erreurs fatales liées au flou sont plus ou moins claires, il est important de revenir sur le manque de compréhension des exigences. A ce niveau, il faut noter qu’entre l’utilisateur final et le développeur, chaque intervenant a une certaine compréhension du produit que demande le client. Même si le client a une idée claire de ce qu’il souhaite, en exprimant son besoin, le produit qu’il décrit peut subir une modification et d’ores et déjà être différent de ce qu’il souhaite. Si le besoin est recueilli par une partie intermédiaire entre le client et le développeur, cette personne aura encore une compréhension un peu dégradée de ce que le client a exprimé ; alors le produit souhaité par le client subit une autre déformation. Jusqu’à ce que l’expression des besoins parvienne au développeur, le produit aurait déjà subi une profonde déformation. Le développeur va donc concevoir un produit selon la compréhension qu’il a eu des besoins de l’utilisateur. Il sera donc plus facile par exemple pour le client qui voulait une Lamborghini de se retrouver une Volkswagen.
D’autres erreurs à ne pas commettre dans un projet découlent du vice de perfectionnisme. Le développement d’un logiciel peut avoir de grands enjeux, au-delà de l’obligation du développeur de bien faire son travail. Un logiciel réussi peut apporter la gloire et la richesse alors qu’un échec d’un produit destiné à une utilisation à grande échelle pourrait s’avérer désastreux. Le développeur veut donc produire quelque chose de parfait et cela peut parfois l’inciter à développer de nouvelles fonctionnalités. Ce que certains développeurs ne mesurent souvent pas, c’est que l’ajout de nouvelles fonctionnalités a un coût et un risque de mise en œuvre. Une fois que les exigences sont déjà définies, le calendrier est établi et le budget verrouillé. L’ajout de nouvelles fonctionnalités va donc nécessiter plus de temps et générer des coûts supplémentaires.
Une autre erreur fatale liée au vice de perfectionnisme est de ne pas savoir quand arrêter le développement et livrer quelque chose au client. Un logiciel n’est jamais parfait, mais il arrive un moment où il peut être déjà libéré. Le développeur doit savoir s’arrêter à ce moment et donner quelque chose d’utilisable aux clients. Il y aura toujours la possibilité de faire des mises à jour sur le terrain, après que le logiciel ait été déployé.
L’orgueil est également un vice qui peut miner un projet. Selon Cohen, ce serait une erreur grave pour le développeur d’exclure la possibilité d’un échec. Envisager la possibilité d’un échec ne contribue qu’à aider le développeur, qui sera plus avisé pour ne pas commettre les autres erreurs.
Source : oreilly.com
Et vous ?
-
DarkBakuraMembre actifJ'avoue ne pas avoir lu l'intégralité de l'article, parcourant la seconde moitié en diagonale. Mais, bien que je n'aime pas beaucoup le concept "d'évidence" balancé trop souvent à tort (tout le monde ne trouve pas naturel ce que certains prennent pour acquis), ici j'ai du mal à comprendre comment on peut ne pas trouver totalement logique et inné ce qu'affirme Cohen. Il ne nous apprend rien de concret et se contente simplement de défoncer des portes déjà largement ouvertes. Et ce sur tous les points qu'il soulève. Je doute qu'un développeur puisse aujourd'hui agir dans le sens des "pêchés mortels" qu'il évoque, à moins que ce même développeur n'ait tout simplement jamais travaillé pour qui que ce soit d'autre que lui-même. Et encore, même dans ce cas certains ne sont tout simplement pas envisageables pour peu que la personne ait le minimum des compétences requises pour mener un projet jusqu'à son terme.le 12/06/2015 à 9:27
-
berceker unitedExpert éminentPour vous cela semble être une évidence, mais ça l'est au moment ou on vous le met sous les yeux. Dans le feux de l'action, on a parfois tendance à l'oublier car d'autre paramètres vien vous polluer l'esprit. Le manque de temps, l'envie de trop bien faire, l'envie d'utiliser une petite techno, être à quelque jours des vacances, le faite de faire plusieurs chose à la fois, etc.le 12/06/2015 à 10:33
-
tanatielMembre régulierAgile permet de simplifier les choses et de faire communiquer les différents intervenants...à condition de se poser les bonnes questions.
D'expérience quand un sujet a du mal à arriver à terme, je finis par poser la question "C'est quoi le besoin" et là, assez régulièrement, j'ai pu constater une différence assez notable entre la réponse donnée à cet instant et ce qui a été écrit dans les spèc. On en revient souvent à ce" problème d'expression, voire d'identification, du besoin.le 18/06/2015 à 16:29 -
hbombEn attente de confirmation mailJe suis assez d'accord avec DarkBakura, on n'apprend rien de nouveau... Au final, ces recommandations on les retrouve dans les méthodes Agile/Scrum.le 12/06/2015 à 10:00
-
youlikenCandidat au ClubCet article semble n'être vu que sous l'angle technique.
Certains point sont une conséquence justement d'un relâchement dans la qualité des livrables avant développement.
La méthode scrum ne doit pas être un justificatif, ni un palliatif aux mauvaises analyses.
Le développeur ne devrait travailler qu'avec des livrables et pas faire ce qui lui plaît.le 16/06/2015 à 6:28 -
Ymer LeahcimMembre habituéoh mais je l'avais compris.
là où j'ai pas compris, c'est la peur de la personne "chef" et sa non-volonté à vouloir améliorer l'entreprise où elle bosse et la vie de ses saalriés subordonnés en leur faisant faire autrechose de qualitatif.
Depuis j'ai compris que lorsqu'on se rend compte d'une solution comme ça (réduisant les tâches itératives d'un groupe de personnes), il ne faut surtout pas en parler au chef, mais au supérieur hierarchique du chef (1 degrés de subordination plus haut).le 16/06/2015 à 9:27 -
kouskefilFutur Membre du ClubJe suis d'accord avec le fait que Cohen défonce les portes déjà grandement ouvertes, mais dans un domaine où l'autre de la vie, il y a toujours un débutant pour qui des conseils peuvent être donnés !le 18/06/2015 à 7:03
-
tanatielMembre régulierDisons que dans un projet où tout va bien, il est facile de faire des concessions et donc d'assouplir les règles et par conséquent d'accepter des modifications des SFD. Par contre quand le projet va mal et que tout le monde se braque et se cache derrière son contrat, le moindre changement peut poser problème...
Personnellement, quand je pose la question du "C'est quoi le besoin", c'est pour forcer l'interlocuteur à reformuler et ainsi à confirmer son besoin. Ensuite si son besoin correspond bien à ce qui était écrit, pas de souci on continue. Si ça diffère, on se pose et on réfléchit aux impacts de ce changement et à comment le prendre en compte. Agile n'est qu'une boite à outil permettant de gérer cette situation en donnant des règles simples et partagées pour la prise de décision.le 23/06/2015 à 14:24 -
el_slapperExpert éminent séniorMais le décideur? Le décideur qui a soudain besoin d'un projet informatique, lui, ne sait rien de tout cela(et c'est normal).le 12/06/2015 à 14:26
-
berceker unitedExpert éminentEn faite non c'est pas idiot. "il ne faut jamais remettre à demain ce que l’on peut faire aujourd’hui". Si tu peux le faire aujourd'hui c'est que la problématique que tu décris n'existe pas. Si nous suivons ta logique, tu attendras le dernière jour avant livraison en attendant d'être sur d'avoir tout le besoin.le 15/06/2015 à 11:33