Contre-temps de dernière minute, je n’ai pas assisté ce soir à la deuxième réunion du Paris Java User Group (PJUG) et à la présentation sur Selenium. Ce sera pour une prochaine fois. Tout cela pour une histoire de correction en urgence pour un client… vous connaissez l’histoire : branche svn, correction et test rapide en croisant les doigts… Mais si nous avions fait comme cela pour construire la Tour Eiffel, croyez-moi il n’y aurait rien…
Lisez bien vous allez comprendre…
J’ai la confirmation que j’assisterai fin mars à la certification Scrum Master avec Jeff Sutherland, organisée par Xebia. Passer d’un mode de développement à l’ancienne (spécifications,codage,livraison,recette) à une méthode Agile comme Scrum, c’est une petite révolution qui se prépare. Pour moi c’est vital. Il nous faut de l’Agilité pour répondre efficacement à la complexité de notre secteur. C’est un peu bateau je l’avoue. Il me faut aussi de quoi évangéliser (car je ne vois pas d’autre mot) les 3 équipes autour de moi, puis ensuite les 4 clients actuels internes qui utilisent notre framework. Par ailleurs nous avons un projet qui sera le candidat idéal pour mettre en application tout cela. J’ai cependant le sentiment que finalement, le plus gros effort sera la partie humaine et la communication. Il va être difficile de faire passer un message et de demander à notre environnement de s’adapter à notre nouvelle méthode. Mais comme disait un grand savant chinois : « Qui n’avance pas… recule ».
Le développement d’un logiciel est finalement assez proche de la croissance d’un arbre. Une branche pousse, des fleurs puis des fruits sortent sur les branches. Parfois la branche est malade, et on tente de la réparer avec un bout de ficelle… alors que finalement il vaut mieux parfois couper net et proprement afin que la maladie contractée par cette branche ne se propage pas à l’arbre tout entier… (je suis le roi de la métaphore de supermarché).
J’ai appris il y a quelques jours que Gustave Eiffel avait construit sa Tour en 26 mois avec à peine 200 personnes. Vous imaginez un Gustave Eiffel ingénieur ? qui dessine ? Pas du tout. Mr Eiffel était à la fin de sa carrière. Plus rien à prouver, 25 ans d’expérience. Par contre un sens de la communication et de la politique ultra-développé. Bref lorsqu’il entend parler d’un projet pour l’exposition universelle de 1889, il se débrouille pour faire gagner son projet au concours organisé par la ville de Paris.
En 1887 il demande à 2 de ses meilleurs ingénieurs de travailler sur les plans (il fait de la délégation) en prenant pas mal de temps pour regarder ce que font les concurrents (veille technologique). Les premiers plans sont prometteurs mais… moches ! Il contacte un architecte afin de demander un dessin qui donne une touche esthétique à son idée de Tour (appel à un prestataire qualifié externe).
Par la suite il subit 2 grèves pendant la construction. A la première grève les ouvriers veulent 40 centimes d’augmentation. Il fait une promesse plus généreuse à 50 centimes s’ils reprennent le boulot… et les ouvriers n’ont rien finalement (exploitation acharnée de prestataires). Deuxième grève, avec cette fois-ci des ouvriers bien décidé à obtenir un peu plus par mois. Il refuse encore mais promet une prime énorme de 100 Fr si le chantier est terminé à temps pour l’exposition universelle de 1889. Les ouvriers, pour le coup vraiment motivés par cette prime, termineront le chantier avec 2 mois d’avance en mai 1889!
Gustave Eiffel payera la prime de 100 Fr (tenir ses promesses et motiver par une prime).
Pour revenir aux méthodes Agile, une chose m’a marqué. Lors de la construction de la Tour Eiffel, Gustave Eiffel avait demandé aux personnes manuelles qui montent la Tour de refuser toute pièce comportant le moindre défaut. Le zéro défaut à la Toyota avant l’heure.
Un journaliste demande à Eiffel :
– « Attendez… vous payez cher ce fer qui vient de Lorraine, vous faites fondre les pièces à Levallois, et si la pièce a un défaut, vous la jetez ? »
– « Oui tout à fait… »
– « Mais pourquoi par exemple ne pas la raccourcir lorsqu’elle est trop longue ? »
– « Vous avez raison… et vous avez tort. Si nous demandons à un monteur manuel de recouper la pièce dans l’urgence, sur les calculs d’un ingénieur sur le site qui sera stressé, qui aura le vertige et froid, pensez-vous que la correction de la pièce sera parfaite ? »
– « …euh non… et vous ne pouvez pas rallonger la pièce ? »
– « Les monteurs sont des personnes qui sont dédiés à une tâche: assembler les éléments. Les ingénieurs font les calculs et s’assurent que la Tour ne va pas s’écrouler. Donc ce n’est pas au monteur de décider ce qu’il faut faire »
– « Quelqu’un surveille le travail des monteurs ? Qu’ils ne font pas exprès de rejeter trop de pièces ? »
– « Nul besoin. Les monteurs sont fiers d’avoir la possibilité de s’opposer aux Ingénieurs. Et croyez-moi, pour rester crédible ils ne refusent les pièces que lorsque c’est vraiment nécessaire… »
– « … »
Gustave Eiffel venait d’inventer une méthode utilisée ensuite 100 ans plus tard par Toyota pour construire leurs véhicules: le Zéro Défaut.
Et si nous revenons à nos logiciels ? Imaginez parfois un bout de code que vous avez écrit tard comme ce soir pour moi… Vous êtes à 95 mètres du sol, entrain de tailler votre bout de code Java pour le faire tenir tant bien que mal… vous savez que si vous ne mettez pas cette correction, il ne sera pas possible de continuer à monter la suite de votre logiciel…
Le client est en bas qui attend une solution miracle pour traiter de gros volumes…
Alors vous codez, vous sciez, et vous pensez qu’en 1888 s’ils avaient fait comme vous, la Tour serait certainement aujourd’hui une horreur bien couteuse à maintenir. Et pour le coup, ce n’est plus la branche mais l’arbre qu’il faut abattre…
Allez je retourne à la mine.
Faire du code rend humble.
Bravo et merci pour ces billets précis, souriants et souvent pratiques 🙂 . Pour celui-ci avec les métaphores tour eiffel-esques, il existe aussi la technique du « faisons vite pour livrer de toute facon on réécrit tout sous peu alors…. » genre une tour eiffel par an, à force les gens seraient habitués et ne critiqueraient plus les défauts… puisque la prochaine arrive sous peu 😉
Très sympa ce petit flashback 🙂
C’est du solide en effet, mais bon
imagine qu’il faille changer un pied de la tour 😉 c’est pas gagné… L’idéal reste quand même de faire du solide modulaire et pour ça heureusement qu’on a Spring etc…
Prochain billet, il faudrait que tu parles du plus vieux bout de code qui tourne encore en production!
Peut-être est-il qq part dans l’espace! Et peut-être tournera-t-il encore après la chute de la tour Eiffel!