Colombo 2.0
Dés qu'elle est entrée dans mon bureau, j'ai su que l'affaire ne sentait pas bon. On ne fait pas carrière dans ma branche si on ne développe pas un solide sixième sens pour flairer les problèmes. Et manifestement, mon embrouillomètre me criait que je ferais mieux de me planquer sous mon bureau la tête cachée dans une des poches de mon imper.
Malheureusement, mon vieux fauteuil donnait des signes de fatigue, la machine à café agonisait, et j'avais un besoin urgent de renflouer mes caisses. Je n'avais pas les moyens de faire le difficile.
D'un signe de main, je l'invitai à s'asseoir. Pendant qu'elle s'exécutait, je l'examinais à la dérobée. Mon boulot m'amenait plutôt à côtoyer de gros barbus aux dents jaunies par la clope et le café, et portants des tee-shirt rigolos. Aussi, cette belle brune élancée en tailleur élégant avait immédiatement éveillé mon attention. D'un point de vue professionnel, j'entends.
— Alors m'dame, que puis-je faire pour vous être utile ?
J'ai toujours pensé qu'un bon détective était comme un médecin. Pas de bon diagnostic sans connaître les symptômes. Le problème, c'est que mes clients me prenaient souvent pour une espèce de devin vaudou, et j'étais obligé de les soumettre à un interrogatoire digne d'un inquisiteur espagnol pour espérer obtenir le minimum d'indices.
Les performances ! Un grand classique. 90% de mes affaires concernaient des sites qui se trainaient comme des escargots neurasthéniques. Parfois, rajouter quelques caches rendait le problème supportable, mais la plupart du temps, la conception de base était tellement médiocre qu'il n'y avait rien à faire. Allez expliquer ça à un client désespéré.
Bref ! Cela s'annonçait comme une petite enquête de routine. Alors pourquoi mon instinct me criait-il qu'il y avait anguille sous roche ?
C'était louche. Soit elle me mentait, soit elle ignorait quelque chose, mais son histoire n'était pas crédible, et elle même ne semblait pas convaincue. Je décidai de la titiller.
J'avais touché juste. Je posais la question pour la forme, j'aurais été bien surpris d'apprendre l'existence de tests automatisés. La plupart du temps, je devais m'estimer heureux si des conventions de codages étaient définies et respectées. Mais bon, la question avait le don de rendre mes clients mal à l'aise, et un client qui n'est pas droit dans ses chausettes est moins enclin à discuter mes tarifs. Et puis, ça me distrait.
Je masquai un petit sourire. Quand un client ne rechigne pas à vous donner l'accès à la prod, c'est qu'il y a toujours autre chose.
— Un grand salon d'agriculture a lieu dans deux jours. Une présentation publique du site est prévue. C'est un site subventionné par le ministère, vous comprenez. Et si la situation n'est pas revenue à la normale d'ici là, nous risquons de nous retrouver dans une situation délicate.
Ben voyons ! J'aimais travailler dans le stress du temps qui passe. Corriger un bug qui semblait insolvable est gratifiant, mais aucune sensation n'est plus exaltante que celle de le faire dans un délai aussi court. Et puis, ça me permet de gonfler mon tarif.
— Je prends l'affaire en main m'dame. Envoyez moi les données dont j'ai besoin, et je commence sur le champ.
Une fois qu'elle fut sortie, je m'abandonnais à une méditation contemplative. Réfléchir représente une part importante de mon temps de travail. Je dirais même que c'est la part la plus importante. Il m'est même arrivé de résoudre des affaires sans poser les mains sur mon clavier bépo.
L'ennui, avec la réflexion, c'est qu'elle passe facilement pour de l'oisiveté pour les non-inités. C'est pour ça que je prends toujours l'air affairé et soucieux quand j'attends un client. Pour avoir l'air compétent et efficace.
C'est important, les apparences, dans mon métier. Pourquoi croyez-vous que je laisse traîner toutes ces piles de dossiers poussiéreux ? Pas pour le travail, tout est numérisé. Non, c'est simplement parce qu'un détective sans imper et qui ne pue pas le tabac froid. Ça ne fait pas sérieux.
Je suis bien resté deux heures, les pieds sur mon bureau couvert de paperasse bidon, sirotant mon infusion à la verveine (que je ne bois qu'en cachette, un vrai détective est censé carburer au café noir dégueulasse), avant de parvenir à la conclusion suivante : j'étais dans une impasse. J'avais le crime, mais pas le mobile.
Quelqu'un aurait-il saboté volontairement le site pour plomber la présentation publique ? Un hacker ? Un script-kiddie ? Un concurrent ? Je n'arrivais pas à m'en persuader. Les gens regardent trop la télé. Ils s'imaginent que nous autres, détectives TMA, passont notre temps à combattre le crime virtuel organisé, sauver des demoiselles en détresse et empêcher in-extremis des fusées d'exploser. Tout ça, c'est la faute à Colombo.
La réalité est toute autre, et le quotidien d'un détective TMA est finalement assez banal. Point de grand bantitisme. Point de course poursuite effrénée dans les limbes du web. Simplement quelques corrections orthographiques par ci, un petit bug css (damn IE!) par là. Et puis, métro, popote, dodo. Comme tout le monde, finalement.
C'est justement pour cette raison que je ne parvenais pas à accepter l'idée d'un acte de piraterie. Règle n°1 du détective TMA : « N'attribue jamais à la malveillance ce qui peut s'expliquer par l'incompétence ». Quelqu'un avait merdé dans cette histoire, et il fallait trouver qui.
C'est maintenant que les choses sérieuses allaient commencer. Je commençai par vérifier la justesse des informations envoyées par ma cliente, et récupérais le trunk du site. Haha ! Quelqu'un avait commité un « Thumbs.db » dans le dossier « img ». Quelle bande de newbies ! Mais !? Ils avaient également commité leur répertoire de backup, rempli de dumps sql ?! Seigneur ! Je sentis mes yeux tenter de jaillir hors de leurs orbites.
Pris d'un doute, je récupérai également en local la version de production du site. Autant vous dire qu'à ce moment, je m'attendais à tout. Pour le plaisir, j'ouvris quelques fichiers au hasard grâce à mon éditeur de geek préféré (vim, car tout le monde sait que les vrais pros n'utilisent jamais emacs). La syntaxe hasardeuse, l'indentation erratique, et les caractères de saut de lignes aléatoires me firent vite tourner la tête, le cœur au bord des lèvres.
— « Fiston, dans la vie, on ne mélange jamais les espaces et les tabulations », me disait souvent ma grand-mère, de son air sage et pénétrant de vétéran qui avait connu le Cobol. Il faut croire que tout le monde n'a pas eu la chance d'avoir une grand mère comme la mienne.
En dernier recours, je décidai de jeter un coup d'œil à l'historique svn. En parcourant rapidement les derniers messages de commits, quelque chose attira mon regard. Serait-il possible que… Quelques diffs plus tard, j'étais fixé. Les mains derrière la tête, je me laissai aller en arrière, un sourire sur les lèvres. Voilà une affaire rondement menée.
Le cœur léger, je décrochai le téléphone, et appelai ma cliente.
Sans attendre sa réponse, je raccrochai. Pour ma peine, je décidai de me préparer une autre infusion. Demain promettait d'être une belle journée.
Le lendemain, je me rendis au siège de S… S.A., dans ma vielle guibarde fumante. J'ai l'habitude de me déplacer en vélo, mais pour les rencontres avec mes clients, ça me donne un genre.
Quand j'arrivai à la réunion, tout le monde était déjà présent, et à l'heure, preuve s'il en est de la gravité de la situation. Les croissants étaient chauds, le café finissait de glouglouter dans le percolateur, les choses s'annonçaient bien.
Je m'emparai d'une viennoiserie, et demandai à chacun de se présenter.
Après ce petit tour de table, je leur tournai le dos, et m'approchai de la fenêtre, faignant de contempler le paysage bétonneux des alentours d'un air inspiré. Dans mon métier, il faut savoir ménager ses effets. Lorsque je jugeai la tension nerveuse suffisante, je me retournai, et commençai mon numéro.
Je les parcourus tous de mon regard de détective pénétrant. La tension était à son comble, chacun était pendu à mes lèvres, retenant son souffle.
— Mesdames, messieurs, il s'agit d'un acte interne. Qui plus est, j'affirme que le coupable se trouve dans cette pièce !
L'annonce fit son effet. Des exclamations d'indignation éclatèrent, des cafés furent renversés, certains manquèrent s'étouffer avec leur croissant. J'attendis, inflexible, que le calme revienne, et imposai le silence de mon œil de lynx (la bestiole, pas le navigateur).
— Lucie S., vous m'avez annoncé lors de notre premier entretien qu'aucun changement n'étais survenu sur l'application au moment du début des anomalies. Et bien, madame S., vous vous êtes trompée. Il y a bel et bien eu une livraison ce jour là.
Le chef de projet bondit alors de sa chaise, en renversant son café, hurlant presque.
Je les observai d'un air amusé, avant de reprendre.
— J'ai en effet pu constater que ces trois environnements n'étaient pas synchronisés. Il ne peut y avoir qu'une seule explication. Quelqu'un n'a pas respecté votre procédure de déploiement.
L'assistance resta muette. Des murmures incrédules se firent entendre. Le chef de projet, hagard, bafouilla.
Suspense. J'observai une pause théâtrale, avant de m'écrier :
— Votre log svn est en effet truffé de messages de commits vides !
Stupeur dans l'auditoire. Le chef de projet, le souffle coupé, retomba sur sa chaise, effondré. Je m'emparai d'un croissant, leur laissant le temps de reprendre leurs esprits avant de continuer.
— Plus intéressant. J'ai également remarqué que ces commits félons se sont multipliés depuis quelque temps.
Je pointai alors un doigt vengeur vers l'un de mes auditeurs.
— Monsieur Anatole P. Pourriez vous nous indiquer à quel moment vous avez commencé à travailler sur ce projet ?!
Le pauvre stagiaire, au comble de l'embarras, parvint à peine à bredouiller une réponse intelligible.
Dans la folie qui s'ensuivit, le chef de projet, rouge de colère, tonna.
Stupéfaction.
— Monsieur Frédéric B., chef de projet du site www.….com, je vous accuse d'avoir confié les accès de votre plate-forme de production à un stagiaire inexpérimenté. Je vous accuse de l'avoir laissé travailler sur un projet sans l'avoir formé à vos méthodes. Je vous accuse de ne pas avoir mis en place de procédure systématique de vérification ni de validation de son travail par ses pairs plus expérimentés. Enfin, au nom d'Ada, sainte patronne des geeks et codeurs, je vous accuse de contribuer à la médiocrité logicielle générale, en omettant de mettre en place et de promouvoir des bonnes pratiques de développements. Arrêtez-le !
Deux gorilles de la sécurité se saisirent du félon, et l'emmenérent tandis que ses cris de rage et menaces de vengeances raisonnaient dans les couloirs.
Quand le silence revint, je savourai les regards admiratifs qui se posaient sur moi. Ma cliente ne put s'empêcher de me demander :
Tout en m'installant derrière le volant ma fidèle guibarde, je sortis mon agenda et vérifiai mon emploi du temps du reste de la semaine. Rien. Parfait, j'allais pouvoir partir en vacances quelques jours. Je l'avais bien mérité.
– FIN –