Notre travail?
Par Jean-Baptiste le mardi 29 juillet 2008, 18:22 - General - Lien permanent
Voilà un beau titre de billet. Derrière ce titre en fait se cache l'interrogation de savoir finalement quel est notre réel travail en tant qu'informaticien. Je vais sans doute paraphraser ce qui a été dit dans plein d'autres endroits, mais je me jette tout de même à l'eau.
Quand j'observe le tissu actuel des SSII, que ce soit en prestation, ou en régie, la tendance est plutôt à dire que le client arrive avec un besoin le plus "carré" possible, et à nous la charge de le traduire en quelque chose de technique. De cette idée découle le fonctionnement en forfait standard: je fais une phase de conception sur ces besoins, je chiffre, et je vends ce chiffre au client.
La faille dans ce monde merveilleux, tout le monde est plus ou moins d'accord pour dire que c'est ce fameux besoin. Les partisans de la rigidité vont alors dire qu'il faut l'encadrer sévèrement, et une fois qu'il est signé, on y touche plus. Les agilistes disent, non nous allons intégrer ces changements au fils de l'eau, c'est normal. Bien entendu, je suis plus partisan de l'école agile, car ainsi le client peut se rendre compte par lui-même plus vite ce qu'il veut ou pas. Mais à cette activité je voudrai ajouter une subtilité supplémentaire: le client ne connait de toute manière pas son besoin.
En cherchant un peu de documentation sur le sujet, je suis tombé sur une belle analogie qui correspond exactement à ce que j'essayais dire.
Pour traduire rapidement, on peut comparer finalement le travail de consultant à celui d'un médecin: Le patient va sans doute exprimer sa demande sous forme d'un "j'ai besoin de me débarrasser de cette maladie", comme d'un "j'ai mal, donnez moi un médicament". Quand le patient arrive en demandant directement le médicament, c'est là même chose que quand un client nous demande un logiciel spécifique supposé résoudre son problème.
Pourtant, le médecin écoute et pose des questions, malgré ces affirmations initiales, pour découvrir les véritables causes du problème. S'il se contente d'écouter le patient, et de lui donner le médicament demandé alors que ce n'est pas le bon, c'est entièrement sa faute. Il en va de même pour nous: nous devons poser les bonnes questions et correctement analyser pour donner une réponse traitant les racines du problème. Le client ne pouvant pas dire ce qu'il veut, c'est notre travail de le découvrir
Dans la réalité, même dans un processus agile, cela se traduit par toujours rechercher les causes premières. Si le responsable produit me demander "je veux un export excell", ma première question est toujours pourquoi? Et ainsi je découvre que le véritable besoin derrière était du reporting et du décisionnel, et je m'oriente vers cette solution.



Commentaires
Je découvre ce blog et j'ai lu avec attention les papiers. Je me pose la question suivante: comment faire pour que les méthodes agiles puissent s'intégrer dans une stratégie d'entreprise.
Prenons le cas d'une SSII qui doit s'engager envers son client sur un planning et un budget ?
Prenons le cas d'une DSI d'une entreprise dont les projets sont maintenant financés par les directions métiers de l'entreprise. Ces mêmes directions métiers ont obligatoirement besoin de provisionner des budgets, et de déterminer des ROI pour justifier les dépenses informatiques (comme tout autre projet). Comment les méthodes agiles peuvent s'accomoder de ces contraintes ?
Par expérience, je constate aussi que les méthodes agiles s'adressent à des gens expérimentés, techniquement à l'aise, capable de comprendre le métier et de discuter avec l'utilisateur. Comment peut-on faire quand les équipes sont hétérogènes, que les motivations et le niveau de chacun sont divers ?
Pour faire une analogie, j'ai l'impression que les méthodes agiles sont à l'informatique ce qu'est Aston martin à l'automobile: du sur mesure, fait à la main par du personnel hyper qualifié et sans contrainte budgétaire forte car très cher. La satisfaction du client utilisateur est certainement satisfaite, la satisfaction du client payeur peut être beaucoup moins.
Stéphane,
Les méthodes agiles répondent très bien aux problématiques de budgétisation des projets logiciels. L'idée est d'estimer, évidemment de manière grossière dans un premier temps, le temps nécessaire au développement du logiciel. Cette estimation se fait en concertation entre les utilisateurs ou experts métiers et les développeurs. Ce sont ces derniers qui estiment évidemment. Cette estimation se fait grâce à un premier découpage en "grosses" histoires utilisateur. Plus tard, ces histoires seront découpées éventuellement en plusieurs histoires de granularité plus fine.
Concernant l'expertise des développeurs, l'idée de base est que tout développeur est moyen et remplaçable. Ce serait mentir que de dire que tous les développeurs peuvent s'adapter à ces méthodes : il faut un minimum d'envie de s'améliorer, de progresser et aimer son travail. Par expérience, on constate que ce sont souvent les plus jeunes développeurs qui s'adaptent le mieux. Ceux qui ont déjà un passif sont plus réticents au changement, moins enclins à s'améliorer et cherchent d'avantage une protection qu'à faire réussir le projet.
Je ne suis pas du tout d'accord avec ton analogie avec Aston Martin. Le sur mesure, toutes les SSII en font. L'hyper qualification, j'en ai parlé et si, bien sûr, il y a des contraintes budgétaires !
Les méthodes agiles permettent de satisfaire tout le monde.
Merci Fabien pour ces précisions.
En te lisant, je comprend qu'il est possible de faire cohabiter une gestion de projet avec des engagements (planning, budget, périmètre) avec les méthodes agiles. Tant mieux.
Mais pourtant, je trouve que cette dimension est très peu mise en évidence lors qu'on défend les méthodes agiles. J'entend plus souvent que les méthodes agiles sont incompatibles par nature avec les notions de prévisionnel et d'engagement.
Et il en est de même pour le ROI des projets Agiles. J'entend souvent dire que les méthodes agiles coutent "moins cheres" pour un niveau de qualité et de satisfaction client équivalent. Cependant, cette appréciation est toujours portée en bilan de projet, c'est à dire après coup et non pas avant le projet, au moment finalement où on choisit les méthodes à appliquer.
Ainsi, je trouve que parmi l'argumentaire qui permet de faire le choix des méthodes Agiles,(qualité, adéquation fonctionnelle,....), il manque des éléments de réponses sur ces aspects "financiers", qui restent malgré tout des éléments qui participent aux décisions.
"J'entend plus souvent..."
"J'entend souvent dire..."
Plutôt que d'écouter des choses déformées, pourquoi ne lirais-tu pas XP Explained de Beck par exemple ? Tu verras que ces "on dit" sont infondés et que plus l'agilité devient d'actualité plus les déformations autour sont importantes.
Je suis un peu étonné de lire que les méthodes agiles laissent de côté l'aspect financier...
Une des caractéristiques principales des méthodes agiles est la gestion du risque.
Si tout le monde ne s'accorde pas complètement sur la définition d'un projet informatique réussi, je crois par contre qu'il n'est pas très difficile de remarquer ceux qui sont des échecs. Je pense à deux symptômes évidents parmi d'autres : le dépassement du budget par explosion des deadlines, ou la livraison d'un outil inutile laissant le besoin intact.
Pour reprendre l'exemple des SSII : le premier est un problème pour la boite qui s'est engagée forfaitairement auprès d'un client, le second est un problème pour le client de la SSII qui se fait piéger par son propre contrat. Ce qui avait été spécifié il y a 6 mois n'a plus de sens aujourd'hui, mais la SSII a respecté son engagement contractuel en fournissant la solution qui avait été demandée à l'époque.
Quand la solution est livrée dans les temps, et qu'elle répond au besoin, il y a encore de fortes chances pour que le niveau de qualité donne aux phases de maintenance ultérieures l'occasion de ruiner le ROI, ou rende impossible les évolutions de la solution qui auraient pu accroitre ce dernier.
Je ne vais pas redéfinir les méthodes agiles ici, mais j'aimerais juste insister sur le fait qu'elles peuvent éviter ces problèmes et donner à la gestion de projet un aspect sain. On pourrait penser en particulier à l'importance que les méthodes agiles accordent aux estimations, aux priorisations, et à la qualité. Les itérations et les livraisons validées régulièrement ne peuvent qu'être une bonne chose, à la fois pour ceux qui livrent et ceux qui valident.
Les contraintes fortes, qu'elles soient temporelles ou budgétaires sont compatibles avec Agile.
Comment peut-on penser que l'approche classique l'est plus ? Ce n'est pas parce qu'on fixe un budget et une deadline qu'on garantit le ROI, ou bien même qu'on peut le calculer. Comment peut-on rejeter l'idée d'avoir, pour un budget et une durée fixés, la meilleure solution possible ? C'est-à-dire celle qui répondra le plus au besoin, et dont la qualité sera supérieure ? Les projets agiles se chiffrent et se planifient, cela fait même partie des valeurs essentielles des méthodes agiles. Il ne s'agit pas d'une utopie technique, ou d'un délire de développeur à la mode.
En quoi les méthodes classiques seraient elles plus sûres au niveau prévisionnel et chiffrage ? Neuf fois sur dix on fait entrer des spécifications plus ou moins bancales dans un tunnel dont on ne connait que la longueur (et encore), sans savoir ce qu'elles seront devenues à la sortie. Si quelque chose sort, évidemment.
Lorsqu'on aborde la question des engagements, il faut juste comprendre que les méthodes agiles n'impliquent pas l'absence d'engagement, mais plutôt la révision des engagements régulièrement, pas seulement en accord avec le client, mais pour satisfaire le client.
Je conseille également la lecture des ouvrages de référence sur le sujet, ainsi que les nombreux retours d'expérience sérieux que l'on peut trouver facilement un peu partout.