Le demi-cercle (épisode 16 -- Déplacements)

If errors are actions and if actions are designed, then all errors not due to simple ignorance must also be designed. We can change the design. Chris Argyris

Claudia entre dans le bureau. Elle tient dans ses bras deux énormes classeurs, sur lequel elle a posé son ordinateur portable.

- Bonjour à tous ! Je vois que vous êtes en train de déménager, je peux revenir plus tard si vous voulez ? Tu invites Claudia à rester : - Bonjour, on en a pour 2 minutes; prenez un siège.

Il est déjà 11 heures. L'armoire qui occupait depuis quatre ans le fond de votre bureau est maintenant au milieu de la pièce, vidée de son contenu. Le contenu — une pile de vieilles documentations de projets et d'outils — se trouve dans une grande poubelle près de l'ascenseur. Il ne reste plus qu'à faire de la place sur le bureau de Jérémie pour y poser le rétro-projecteur, et arranger les deux autres tables de manière à ce que l'on puisse voir le mur lorsqu'on s'y assoit.

Tu dis : - Ce n'est pas parfait, mais ça devrait faire l'affaire pour l'instant. Claudia, je vous propose de vous asseoir ici. On peut utiliser le rétro-projecteur pour essayer d’élucider le ticket 4244. - Si vous voulez répond Claudia, mais ce n’est pas la peine : j’ai ramené le plan de tests, et les spécifications détaillées.

Farid s’assoit à son tour et demande : - Justement, on aurait besoin de savoir sur quelle version de la SFD vous vous appuyez pour faire le test, parce qu’il y a eu une évolution l’an dernier. - Attendez que je regarde…

Tu dis : - On peut aussi consulter le document sur le répertoire partagé…

Tu branches le câble. Le mur affiche maintenant une photo somptueuse du lac de Lugano. Tu redémarres ta session et explore le répertoire partagé. Tu trouves trois versions différentes du document de SFD, et décides d’ouvrir la version la plus récemment modifiée.

Claudia continue de parcourir la version imprimée dont elle dispose. Elle dit :

- Oui mais, le problème avec la version du répertoire, c’est qu’elle est souvent verrouillée. Charlène bosse dessus en ce moment, et elle a tendance à laisser sa session ouverte, même quand elle part en réunion, et puis avec ma copie papier, je peux inscrire mes notes, et surligner ce qui est important.

Tu demandes : - Donc, pour reproduire la 4244, il faut créer un budget, non pas from scratch, mais en reversant des reports, n’est-ce pas ? - Hmmm. Ça dépend. Qu’est-ce que vous voulez dire par from scratch ? On peut se tutoyer ?

Je vais essayer.

- Pas de souci. From scratch, c’est à dire, comme lorsque c’est la première année qu’on utilise XXL, et qu’on n’a pas de budget passé. - Ah non. On n’est jamais dans cette situation… Non ce qu’il faut, c’est simplement, initialiser une nouvelle année, mais en ayant pris soin de déclarer les reports de l’exercice précédent.

Farid écoute attentivement. Il semble à l’affût, prêt à interrompre Claudia au moindre décalage entre sa version de la SFD et la réalité de l’application telle que lui la connaît et la comprend.

Tu proposes que l'on essaye de reproduire l'anomalie depuis l'environnement de recette. Tu demandes à Claudia de prendre le clavier et de vous montrer le dysfonctionnement. Claudia reprend les étapes une par une tout en décrivant le mode opératoire; elle le connaît par coeur et n'a nul besoin de consulter son plan de tests.

- Je valide la création, je consulte le budget et j'obtiens… ah tiens, non, 34620. Ça devrait faire 34000 constaté au lieu de 34320 attendu.

Farid pousse une exclamation comme s'il venait d'entendre un bon mot : - Ha!

Tu te demandes s'il jubile ou bien s'il est simplement excité par la curiosité.

On va enfin avoir le fin mot de l'affaire !

Claudia reprend le document de test, et refait mentalement les étapes à nouveau. Elle demande :

- Vous êtes sûrs d'avoir la bonne version ? - C'est la version de recette que tu utilises. Elle n'a pas changé depuis que tu as créé le ticket. - C'est bizarre… Je me suis peut être trompée dans mon test ?

Claudia retourne une des pages du plan de tests, prend un stylo et trace une série d'opérations. Puis :

- Non, rien à dire, ça devrait faire 34320. Mais dans la version de recette ça faisait 34000. Mais si on est sur la version de recette, alors quelque chose à changé ?

Farid demande à Claudia s'il peut lui emprunter son classeur contenant les spécifications, l'ouvre et recherche le chapitre concernant les reports de budget. Pendant ce temps tu ouvres sur un écran séparé, le code de la version en recette.

Farid pointe le doigt sur un paragraphe et dit d'une voix un peu trop dure : - Voilà ! C'est là que la règle a changé. Cette spéc' ne donne plus la bonne règle.

Farid tend le document à Claudia, qui le lit attentivement.

- Ah oui! Exact. Mais alors…

Elle effectue de nouveau des calculs à la main, sur la page même qui contient la spécification incriminée. Elle conclut : - Dans ce cas ça doit faire 34320. Donc je ferme le ticket. Pardon. Il y a une erreur de test.

Jérémie, qui jusque là suivait silencieusement les opérations depuis l'entrée du bureau, fait remarquer :

- Tu peux fermer le ticket, et en créer un nouveau, ou bien mettre à jour celui-ci et le laisser ouvert. - Et pourquoi ? - On obtient 34620. En recette, comme en développement. 34620 ce n'est pas 34000.

Ce ticket commence à me fatiguer. Et j'ai faim.

Tu dis : - Bon. J'ai commencé à regarder le code de cette version. Je vous propose de suivre l'exécution en mode debug pour essayer de comprendre ce qui se passe.

Jérémie s'assoit à la même table que Farid, pose ses coudes sur la table, puis son menton sur ses poings fermés.

Tu entres dans l'application, sélectionnes des options, saisis les montants, confirmes la validation, et soudain le formulaire fait place à une page de code, multicolore, égrenée sur un fond noir.

C'est le troisième étage. Il y fait aussi sombre que d'habitude. Vous êtes arrivés par le toit, puis via la cage d'escalier. L'ascenseur est éventré, hors service. L'escalier est presque aussi dangereux, mais vous êtes encordés. Une responsable de la supervision s'est jointe à votre équipe, ce qui rend l'expédition plus délicate. À chaque point de ralliement, le premier arrivé donne un coup sec sur la corde; le second se glisse jusqu'au premier, puis fait signe au suivant, avec la corde. C'est lent, mais c'est plus sûr. On ne touche à rien. La responsable est au bout de la cordée. En vous rejoignant, elle vous fait signe qu’il faut repartir : l’étage n'est pas conforme. Elle vous laisse un plan. Elle ne peut pas rester, c’est trop poussièreux.

Tu relances l'exécution jusqu'au prochain point d'arrêt suivant; puis le suivant. A chaque point d’arrêt vous scrutez le code en silence (c’est presque gênant). Claudia écarquille les yeux deux ou trois fois, puis s’esclaffe : - Alors là, ce n'est plus de mon ressort. C’est trop cryptique…

Jerémie se lève, se rapproche du mur, et se lance dans une visite guidée : - Oh c’est assez simple, la règle de calcul tient tout entière dans cet appel. - C’est peut-être simple pour vous, mais pour moi c’est cryptique.

Jérémie se tourne vers toi en clignant des yeux, son visage ruissellant de code, à cause du projecteur, et demande : - Est-ce que tu peux entrer dans RG_CalcReport.execute en mode pas à pas s’il te plaît ?

À contre-cœur, tu y entres. Jérémie détaille la règle. Trois minutes s’écoulent. Claudia dit : - Je ne suis pas sûre que ce soit la règle exacte.

Farid répond : - C’est pourtant ce que fait le code, on ne l’a pas inventé, ça vient de quelque part. - Oui mais comment savoir ?

Tu attrapes une feuille blanche, que tu divises en quatre. Tu débranches le câble qui relie le projecteur à ton PC. Jérémie se rassoit. Tu dis : - Il faut qu’on creuse. Merci pour votre aide Claudia. - Mais pas de quoi. N’hésitez pas.

Dans le coin en haut à gauche de ta feuille A4, tu notes quelques faits que tu trouves intéressants à propos de la méthode RG_CalcReport.execute. Jérémie t’observe un instant, puis suggère : - La prochaine fois je peux prendre le clavier, ce sera plus simple. - Hmmm… - Tu sais qu’il existe des tableaux blancs sur lesquels il est possible de prendre des notes, faire des dessins, et tout sauvegarder à la fin ? - J’ai déjà eu du mal à obtenir le rétro…

Tu relis ta feuille A4.

Il se déplace de case en case. Mais on va finir par le coincer.

Farid interrompt ta rêverie : - Pour une fois qu’on avait la Q.A à notre disposition, on n’en profite pas plus ? Claudia pourrait relire le code avec nous…

Jérémie lève la main : - Alors là je t’arrête. La Q.A a un seuil de tolérance assez mince à la technologie. Je ne crois pas qu’on puisse aller beaucoup plus loin… - C’est pas dit. Ça dépend…

Tu te lèves. - Je pense qu’on a les éléments qu’il nous faut, non ? Et en plus j’ai faim. Si on allait déjeuner ?

(à suivre) Episodes Précédents : 1 -- Si le code pouvait parler 2 -- Voir / Avancer 3 -- Communication Breakdown 4 -- Driver / Navigator 5 -- Brown Bag Lunch 6 -- Conseils à emporter 7 -- Crise / Opportunité 8 -- Le Cinquième Étage 9 -- Que faire ? 10 -- Soit... Soit... 11 -- Boîtes et Flêches 12 -- Le prochain Copil 13 -- La Faille 14 -- Poussière 15 - L'hypothèse et la Règle