Le demi-cercle (épisode 31 -- Normalisation)

Hugo arrive, essoufflé parce qu'il a tenté de battre son propre record en montant les escaliers, et lance à la cantonade : - Vous avez déjeuné ? J'ai amené les croissants…

Farid s'exclame sur un ton un peu trop enjoué : - Non ! Ça tombe rudement bien !

Audrey demande : - C'est pour quelle occasion ? - Disons que c'est pour me faire pardonner ma première grosse bourde…

Tu dis : - Fallait pas ! On en fait tous. Mais c'est pas de refus quand même !

Hugo s'adresse à Jérémie : - Hé, Jérémie ? Est-ce que tu acceptes de déjeuner avec nous ? - Je n'ai pas faim, mais je prendrais bien un thé. J'arrive.

Par chance, le coin cuisine est disponible. La machine à café semble opérationnelle. Hugo dispose les croissants sur une assiette, et l’assiette sur une des tables.

Hugo : Je dois dire, ce qui s'est passé la semaine dernière m'a fait réfléchir. Audrey : Merci pour les croissants. Hugo : Avec plaisir. Jérémie (se prépare un thé) : Et peut-on savoir quels sont les fruits de ta réflexion Hugo ? Hugo : J'y arrive. Farid : Délicieux. Tu devrais faire des bourdes plus souvent Hugo.

Rires.

Hugo : Cet incident, c'est un concours de circonstances. Jérémie : Tu veux dire, que c'est arrivé par hasard ? Hugo : Non, pas par hasard… Jérémie : Coïncidence ? Hugo : Non. Laisse moi finir s'il te plaît. OK ce n'est pas vraiment un concours de circonstances. Ce que je veux dire, c'est qu'on a plusieurs séries d'effets aux conséquences inattendues. Audrey : Ah oui ? Hugo : Eh bien oui.

Tout le monde observe Hugo, dans l’attente d’une explication supplémentaire. Hugo mange un bout de croissant, puis reprend.

Hugo : Prenez le programme de préfacturation de Charlène… Jérémie : Ce n’est pas exactement le programme de Charlène… Hugo : Tu vois ce que je veux dire. Il tourne en pré-production. On pourrait se demander pourquoi. Farid : Oui. Je me demande pourquoi. Jérémie : On sait pourquoi. On n’a pas besoin d’y revenir. Hugo : Soit. Ensuite : notre script d’installation, qui tourne aussi en pré-production, exploite la même ressource que le programme de Charlène, à savoir : le répertoire de log. Audrey : OK. Hugo : Soudain, conflit : la ressource n’est plus disponible. Toi : Et voilà. Hugo : Pour qu’il n’y ait pas de conflit, il aurait fallu que notre script ne boucle pas sur la vérification des modules. Ou plutôt qu’il le fasse sans saturer la log avec le même message répété en boucle. Qu’il se dise : ce problème-là, je viens à l’instant de le signaler, je n’ai pas besoin de l’écrire à nouveau dans ma log. Farid : Ça se tient… Hugo : Donc le problème vient de ce que le design de ce script est trop simple. Jérémie : Mais non. Le script était parfaitement adapté au cas d’usage. Hugo : Qui est… ? Jérémie : L’exécution du script est surveillée. S’il boucle, l’opérateur va s’en apercevoir et agir. Farid : Sauf que dans de cas présent, l’exécution du script n’était pas surveillée. Hugo : Donc le problème vient de ce qu’on a exécuté ce script en dehors des conditions initialement posées dans son cas d’usage. Là aussi, on pourrait se demander pourquoi… Jérémie : Facile : les installations se déroulent sans aucune anicroche. On n’a pas besoin de surveiller le script. Il n’y a jamais eu de problème. Hugo : Sauf la semaine dernière… Jérémie : Parce que tu as pris la décision de retirer ce module StatReportDemande sans te méfier. Quand on doit prendre la décision de retirer un module, on s’en parle. Hugo : Mais je vous en ai parlé. Jérémie : Et on t’a dit : on ne peut pas le supprimer en toute sécurité. Hugo : Ce qu’il faudrait, c’est un script qui vérifie l’intégrité de la solution, en développement. Audrey : Ce qu’il faudrait, c’est prendre plus souvent les décisions ensemble. Jérémie : Je t’avais dit, Hugo, qu’il faut qu’on y regarde à deux fois, et qu’on n’avait pas le temps. Farid : On n’avait pas le temps, et au final, on a perdu au moins une demi-journée sur ce problème. Hugo : Oui, maintenant j’ai compris. Jérémie : OK. Hugo : Prend un croissant, Jérémie. Jérémie : Ce serait de bon cœur, mais j’ai déjà mangé, je te remercie.

Pause.

Tu as le script en tête. Tu réfléchis à ce qu’il faudrait changer pour qu’au lieu d’ajouter une erreur dans la log, le script vérifie qu’il ne s’agit pas d'une erreur identique à celle précédemment loguée. Identique, c'est à dire à l’heure près, évidemment.

Quatre agents parcourent le rez-de-chaussée du bâtiment, lampe de poche à la main, à la recherche de leur collègue. Au rez-de-chaussée, le bâtiment communique avec le sous-sol uniquement via un trou dans le sol. En l’absence d’éclairage, le trou a été déclaré dangereux, et à recouvrir d’une plaque de métal, qui servirait de trappe. À défaut d’une plaque de métal, et en attendant, trois épaisses feuilles de carton ont été posées. L’humidité constante du rez-de-chaussée a imprégné les trois feuilles jusqu’à en détériorer la structure. Le cinquième agent se trouve enfoncé dans une boue de carton, les jambes pendantes dans un vide obscur, les bras arqués sur la partie solide de la dalle. La fatigue, et le poids des outils dans son sac mettent ses épaules à l’épreuve. Il est rapidement localisé. Les quatre agents l’entourent et le soulèvent prestement.

Hugo : Reste la question : comment fait-on pour s’éviter de telles conséquences inattendues ? Comment éviter de laisser des bombes logiques comme celle-là ? Jérémie : Pour répondre à ta question, j’imagine qu’il suffit de se demander : qu’est-ce qui a le plus de chance de créer des conséquences inattendues ? Audrey : Facile. Jérémie : Facile ? Audrey : C’est évident, au vu de tout ce qui s’est enchaîné jusqu’à cet incident de la semaine dernière. Jérémie : Et c’est... ? Audrey : Des gens qui travaillent chacun dans leur coin.

(à 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 16 - Déplacements 17 -- Jouer et ranger 18 -- Arrangements 19 -- Mise au point 20 -- Expérimentation 21 -- Échantillons 22 -- Non-conclusions 23 -- Non-décisions 24 -- Épisode neigeux 25 -- Fusions et confusions 26 -- Débarquement 27 -- Tempête 28 -- Embardée 29 -- Aménagement 30 -- Interruptions