Articles Tagués ‘bug’

Des Systèmes d’Information en amélioration continue

Aussi simple de s’en servir que d’y contribuer

Tout ce qui n’est pas explicitement interdit est autorisé, mais tracé et réversible

Supprimez votre propre poste, vous êtes promu

Publicités

« Les conneries, c’est comme les impôts, on finit toujours par les payer. »
Michel Audiard

Il est 17h30 lorsque je me rends dans le bureau de mon responsable des systèmes Internet. Je ne le trouve pas à sa place, mais un sous-responsable vient à ma rencontre, manifestement mal à l’aise. Il me raconte que le programme a été mis en production par un prestataire il y a un mois, mais que le premier gagnant n’est arrivé qu’hier. Comme le projet était fini, la prestation a été terminée, conformément à la règle.

J’interroge :

– Donc vous me dites qu’il n’y a plus personne pour réparer ce programme qui sélectionne les gagnants et envoie des messages ?

– C’est-à-dire qu’il est compliqué, il touche à d’autres programmes, j’ai commencé à réunir les différents intervenants…

– Comment ça compliqué ? Vous plaisantez ! Un programme qui sélectionne un nom et envoie un mail ?!

– En fait le programme est en deux parties puisque pour l’envoi des messages nous utilisons la plate-forme de messagerie multi-canal du Groupe. C’est un gros sponsor du projet.

– Pfff… Et quelle est la technologie là-dessous ?

– Ça dépend où, mais du côté du problème c’est en gros du XSB12 et du NET43. Autour, il y a bien sûr des plates-formes GB3, des bases DUBI8, des interface SQOP, des..

– Bien, merci, je vais dépêcher quelqu’un directement. Prévenez ce qu’il reste de vos troupes sur le terrain que quelqu’un arrive.

– Mais, il n’y a plus personne, M. Boulier, comme je vous l’ai dit ….

– C’est vrai qu’il n’y a plus un seul sachant. Alors vous pouvez partir en week-end ! Ou peut-être est-ce le moment d’organiser un comité de réflexion transverse sur la stratégie de résolution des incidents ?

Respirer. Se calmer. Il va falloir trouver des pompiers de service, mais qui ? Réfléchissons. Il y a Jérôme, un jeune trentenaire, à l’aise dans plusieurs technologies, dont celles qui nous préoccupent. Il peut agir dans tous les compartiments du jeu informatique – de l’interprétation des besoins à la mise en service de programmes – là où plusieurs de nos ressources standards sont nécessaires et doivent de plus être coordonnées.

Je l’appelle :

– Allo les pompiers ?

– Ah non Monsieur Boulier. On est en week-end là !

– Ecoutez Jérôme on a un gros problème ici. Un mailer soi-disant intelligent s’est mis à distribuer des cadeaux à tous nos clients.

– Pff. Il faut que cela arrive alors que j’ai une pinte de bière à la main. Vous ne pouviez pas appeler une autre poire ! Au fait, c’est quoi les cadeaux ?

– Le compteur est resté bloqué sur un voyage en Martinique…

– Waw ! Vous m’en offrez un si je vous tire d’affaire ?

– Vendu !

– Avec ma copine ?

– D’accord.

– J’arrive.

*

Je me tiens derrière le dos de Jérôme dans un grand open space déserté. Il a pris connaissance du problème depuis une heure, et la seule chose que je puisse faire est d’essayer de lui simplifier au maximum les choses. C’est comme dans un épisode de 24 H mais je ne suis pas Jack Bauer. Je ne comprends rien à ses manipulations sur le clavier et à l’écran.

Tout à coup Jérôme tape du poing.

– ‘Tain on n’y arrivera pas comme ça, c’est un plat de spaghetti, j’ai rarement vu ça. J’ai fait quelques modifications mais il y a des bouts du système que je ne peux pas atteindre, ni même tester d’ici. Je suis dans un environnement restreint au programme de sélection des gagnants, or il utilise tout un tas d’autres programmes comme la plate-forme de messagerie Groupe et le référentiel client central.

– Qui pourrait nous aider à atteindre les autres programmes ?

– Ben si on veut faire vite, les types de la production. Sinon vous devrez monter une « équipe transverse » qui mobilise tous les acteurs de la chaîne.

– Si j’appelle à cette heure je n’aurai que des opérateurs qui ne sauront pas aller au-delà de la procédure standard, or là on ne fait pas vraiment du standard …

– Oui c’est vrai, il faudrait joindre un gars qui connaît à peu près tout et qui a accès à tout. Bernard Gropiset vous connaissez ?

– Je ne connais que lui ! Je l’appelle.

Bip Bip Bip.

– Bon, Jérôme, il ne répond pas. J’ai laissé un message pour qu’il nous rejoigne au plus vite. Je suis sûr qu’il sera là demain à la première heure. Vous pourrez être présent également, disons vers neuf heures ?

– J’essaierai de penser aux îles … allez, à demain.

*

Samedi.

Il est 9h28 quand Jérôme pénètre dans l’open space, toujours empli de ma seule présence :

– Bernard ne devait pas venir ? dit-il.

– Il est là depuis une demi-heure, figurez-vous, et il est au téléphone sur haut-parleur.

– Salut champion ! résonne une voie sortant d’un combiné décroché. Le patron m’a dit qu’avec toi on en aurait à peine pour quelques minutes. Un test de bout en bout, une mise en production d’un programme, et hop retour dans ma campagne.

– Espérons. Pourquoi n’es-tu pas ici, avec nous, au 22e ?

– Je travaille au 2e sous-sol. Parce qu’on ne peut pas changer les programmes à distance, ni du 22e, ni de chez moi.

– Ah.

Jérôme utilise les accès de Bernard et déploie son programme modifié dans les environnements de test du référentiel client. OK, les deux systèmes ont l’air de fonctionner ensemble, un client « test23 » sera utilisé pour l’essai. Un virement de test lancé.

Maintenant la plate-forme de messagerie. Nos yeux sont rivés sur l’écran de contrôle des messages aux gagnants qui est pour l’instant vide. L’instant dure une éternité. Le virement pour le client Test23 apparaît enfin à gauche. Que va faire le programme ? Le silence règne, je retiens mon souffle en observant l’écran des gagnants. Jérôme pousse un cri. Ce n’est pas un mais deux messages qui viennent d’apparaître !

– J’étais sûr qu’ils ne nommaient pas leurs variables de la même manière dans les différents programmes que j’ai dû modifier. J’ai dû m’emmêler les pinceaux entre deux données. En même temps il n’y a pas deux programmes qui se ressemblent, à croire qu’ils ont été triturés par mille mains connectées à des cerveaux qui ne se seraient jamais parlé !

– Pas impossible, une partie de la maintenance est mutualisée dans nos usines near-shore et off-shore… suis-je obligé de reconnaître.

Me laissant abattu, Jérôme saute sur son clavier et se met à taper comme un fou, le téléphone coincé sur son épaule.

– Allo Bernard ? Marche arrière toute. Il y a un nouveau bug. 2 messages à la fois.

– Ah ben bravo le p’tit génie. Je ne te félicite pas.

– N’en rajoute pas s’il te plait.

– Je vais faire ma petite enquête dans ce plat de spaghetti de mon côté … je vous tiens au courant.

– Tu as vu, il neige !

– Sous mille tonnes de béton, on n’est pas dérangé par des visions bucoliques. Les néons néonnent toujours. Va donc bosser au lieu de contempler le paysage !

Quelques minutes plus tard :

– OK c’est bon cette fois-ci ! éructe Jérôme.

– J’active les mêmes programmes ? répond Bernard.

– Oui, les mêmes.

Cette fois la peur est palpable. Dans le système en production, on est à plus de 10 000 opérations, c’est-à-dire 10 000 voyages en Martinique, alors que l’on attendait à peine 200 gagnants, et un seul voyage. Le compteur continue de tourner sur l’écran de contrôle…
Cette fois-ci la correction fonctionne enfin. Plus de messages dans la plate-forme de test. Il ne reste plus qu’à remplacer les programmes en production.

– Bernard, ça roule. Tu peux tout passer en production !

– Go ! entend-on résonner gaiement dans le haut-parleur… Alors ?

L’écran de contrôle s’est arrêté depuis 1, 2, 3, secondes … pas de message, malgré un virement passé …
… 4, 5, 6. Nous retenons toujours notre souffle. 10 secondes, l’hémorragie semble endiguée. Enfin. Nos regards se croisent, heureux et complices.

Bravo les gars ! Je ne vous offre pas un verre qui abuserait encore de votre précieux temps de week-end. Je ferai le point avec vos responsables dès lundi. Reposez-vous bien.

*

Dimanche

J’ai mal dormi. Ce bug m’a fait cauchemarder toute la nuit. Il est à peine six heures du matin quand je décide d’allumer mon ordinateur pour tuer le temps avant le réveil du foyer. Tiens je vais faire mes comptes. Bonne nouvelle, un peu de liquidité traine sur le compte courant, j’opère un virement vers mon compte épargne.
Une vision d’horreur s’échappe alors de l’écran : « Bravo Paul, vous avez gagné notre super cagnotte, un voyage en Martinique ! ».
Je dors encore, ce n’est pas possible. Je me pince. Toujours le message à l’écran. Je vérifie mes mails. Un nouveau message de la Générale et daté d’aujourd’hui 6:13 est apparu : « Cher gagnant …».

Non !

Je ronge mon frein jusqu’à 8h30 avant d’appeler Bernard et Jérôme. Bernard est en colère, et Jérôme en piteux état, il est sorti tard hier soir…

Quand nous nous retrouvons à dix heures, je décide de réunir l’équipe au sous-sol chez Bernard pour être plus efficaces ensemble.

Jérôme a la migraine. C’est finalement Bernard qui diagnostique rapidement le problème :

– Un programme de nuit[1] qui n’a pas été modifié hier a effacé les informations gagnant/pas gagnant en mettant à jour les données client du site Internet à partir du référentiel central. Du coup notre programme de gestion du concours repart comme en quatorze, pensant qu’il n’a pas encore de gagnant.

– Mais, cela signifie que ce deuxième bug existait depuis le début ? interrogé-je.

– Le premier bug a occulté celui-ci, mais effectivement si nous n’avions pas déjà 3000 gagnants par jour, mais seulement les 200 prévus, nous recommencerions à zéro le lendemain !

– Et personne n’a jamais testé cela ?

– Ce programme se lance dans les chaînes de traitement nocturnes qui sont difficilement testables vu les volumes de données énormes à gérer… poursuit Bernard. En revanche, je peux le désactiver assez facilement.

– Ah oui ? Et demain on éteint quoi ? La comptabilité ? tance Jérôme.

Je réfléchis. Si je leur demande de réparer encore cette erreur maintenant, la dette technique va continuer à empirer : un nouveau bout de code au milieu d’un patchwork métastasé par copié/collé, et encore un programme sans test incapable de dire s’il marche ou pas. A ce rythme, mieux vaut éteindre tout ce qui ne satisfait aux critères minimaux de qualité, au lieu d’essayer de réparer désespérément l’irréparable. On verra plus tard comment réagira l’organisation.

Je lance :

– Bernard, pouvez-vous recharger les données client d’hier et éteindre ce programme de nuit ?

– Cela doit être faisable.

– Mais vous êtes fou ? s’énerve Jérôme. Vous n’imaginez pas toutes les manipulations que réalise ce programme : il recopie les nouveaux clients, les anciens, ceux qui changent de nom, de sexe ou que sais-je encore ! Si nous le neutralisons, plus rien ne fonctionnera !

– Pour l’instant, ce programme contient des fonctionnalités cachées qui ne font partie d’aucun cahier des charges. Pour celles que vous citez, ce sera peut-être l’occasion de secouer les gens en vue d’améliorer la testabilité du système. Jusqu’à ce week-end je pensais que la dette technique était due à l’obsolescence technologique, mais je m’aperçois que c’est plutôt le manque de clarté et de testabilité des programmes qui tue notre productivité.

– Effectivement, les technologies changent mais les programmes restent. Dans la vie rien ne se crée, tout se transforme ; mais dans le SI, rien ne se transforme, tout se garde, philosophe Bernard.

– C’est vrai qu’au cours du week-end, nous avons finalement passé 99% de notre temps à comprendre des systèmes obscurs et à tester avec les moyens du bord… renchérit Jérôme.

Je conclue, paradoxalement enthousiaste :

– Imaginez ce que serait la vie dans notre Système d’Information si « clarté » et « testabilité » devenaient la norme !

Au bout de quelques heures tout est enfin réglé. Enfin, « réglé », rien n’est réglé. Le bug s’est arrêté, mais il est toujours là, et nous avons désactivé une chaîne de traitement qui avait très probablement son utilité. Tout commence en fait.

En rentrant chez moi je réfléchis et me demande pourquoi il y a dans notre organisation tant de responsables encadrant des ressources obéissantes et spécialisées, et si peu de Jérôme ou de Bernard. Peut-être parce qu’ils gagnent moins qu’un manager ? Ou que leurs perspectives de carrière sont moins intéressantes ? Difficile à accepter, mais c’est sans doute parce que nous ne valorisons pas les profils de ce type « contremaître » que nous n’en avons pas. Le système est polarisé sur le management, faire est donc devenu sale…

Quand j’introduis la clé dans la serrure de mon domicile, il est presque onze heures du soir. Tout est silencieux. Je monte lentement les marches du grand escalier. Un rai de lumière échappe de la chambre de Luc, mon aîné, à qui j’ai pourtant interdit de veiller pour mieux se concentrer sur ses études, jusqu’à présent peu brillantes. J’ouvre délicatement la porte pour m’apercevoir qu’il dort en fait profondément, un bras pendant hors du lit, et a simplement oublié d’éteindre sa lampe de chevet. Tandis que je m’approche de l’interrupteur, un détail attire mon attention. L’aiguille d’une seringue dépasse de sous le lit, et à ses côtés traine une petite cuillère noircie. Saisi de panique, j’attrape son poignet pour prendre son pouls. Dieu soit loué, son cœur bat. Le mien en revanche s’est arrêté. Que s’est-il passé ? Comment n’ai-je rien vu venir ? Mais quel aveugle ! Et tout de me revenir en mémoire : les déjeuners où il était si « bizarre », son mutisme de plus en plus fréquent, ses absences …

Mais il y a des choses qui vont changer ici ! D’abord lui parler, et obtenir la vérité : depuis combien de temps ça dure ? D’où vient la drogue, d’où vient l’argent ? Où en est-il avec ça ? Ensuite, checkup médical discret à la clinique de Jean-Hugues mon beau-frère et cure de désintoxication dans la foulée. Au fait, préparer la communication pour la famille… Bon, je descends me servir un Whisky pour me calmer et mieux réfléchir.

3 heures du matin. Je remonte dans la chambre de Luc, qui dort toujours aussi profondément.

Mais au fond que sais-je de lui vraiment ? Depuis sa naissance, je pars au travail avant qu’il ne se réveille, et n’en rentre qu’après son coucher. Nous avons dû avoir au mieux une demi-douzaine de moments de complicité ces dix dernières années, et lorsqu’exceptionnellement nous avons une discussion, je m’évertue à le bombarder de jugements définitifs sur ce qu’il devrait faire de sa vie ! Lui ai-je jamais demandé ce qu’il désirait, lui ? Lui ai-je jamais demandé ce qui le bloquait dans ses objectifs ? Lui ai-je jamais fait confiance ? Au fond c’est moi son overdose. Je fais partie du problème, tout autant que lui.
Il faut absolument que je change quelque chose. Il faut que l’on se parle enfin. Il faut que je sois là tous les jours avant 18 heures dorénavant. Un point c’est tout. Un point c’est tout nom de Dieu ! Je ne peux donc plus micro-piloter mes équipes, je dois leur faire confiance, déléguer vraiment. Je vais seulement les aider à définir leurs buts, mais plus leurs moyens. Piloter par la vision, plus par le manuel de procédures.

Je fonds en larmes. Luc, papa revient.

[1]Programme dit « batch », de traitement par lot.

-> Chapitre 4