Au sein de l’agence de SFEIR Lille, je suis considéré comme un “vieux”. Je ne peux pas en vouloir aux jeunes : j’ai déjà 43 ans, et je raconte, parfois avec nostalgie, mes anecdotes à base de camping en ex-Allemagne de l’Est, de disquettes de boot, de modem Olitec et même de processeurs 486 DX33 avec des câbles réseau 10base-2.
Parmi toutes ces anecdotes, il y en a une qui date de mes premières années dans le monde professionnel, à l'époque où l'on produisait encore des logiciels vendus dans les rayons de la Fnac, avec un manuel papier, une configuration minimale d’OS, de RAM/processeur et surtout un CD contenant LA version finale qui se trouvait dans toutes les boîtes. Produire une version finale et la distribuer était un véritable évènement.
Se balader dans les rayons et faire un fier selfie (non) en tenant la boîte entre les mains au milieu de celles de Sim City, Coreldraw, WinZip, Gene6 FTP Server et autres antiquités était quand même un sentiment extraordinaire.
Jusqu’à l’incident… L’affaire “Vieille Flûte”.
Vite Marty, à la Delorean !
Même si à cette époque le développement logiciel n’en était pas vraiment à ses débuts, beaucoup des bonnes pratiques qui semblent évidentes (ou pas) aujourd’hui étaient loin d’être répandues. Et si nous testions un maximum de choses, rien de tout ça ou presque n’était automatisé. Nous étions au tout début des années 2000.
L'équipe technique d’une grosse vingtaine de personnes était organisée par produit sur lequel nous travaillions : le serveur, l’outil graphique de création, le plugin pour Netscape ou Internet Explorer, etc. Nous avions aussi une équipe transverse (la mienne) qui construisait les démos ou use-cases. Cette équipe faisait office de studio de création pour mettre en avant notre technologie et nos produits. Last but not least, il y avait une “équipe” QA d’une personne, qui sera au cœur de l’affaire.
Imaginez bien qu’à l’époque, pour un logiciel B2B comme le nôtre, il fallait s’assurer que l’installation de nos différents logiciels se passerait bien sur un maximum de configurations existantes. C’est-à-dire qu’il fallait le tester sur Windows 95/98/NT, mais aussi toutes les versions avec les différents service packs (les gros patchs annuels), dans un maximum de langue, avec ou sans les framework .NET, pour des écrans de différentes résolutions, et des utilisateurs avec des droits ou non.
Tester tout cela était le travail de Nicolas (le prénom a été changé) de l’équipe QA. Il avait installé chacun des OS dans chacune des configurations possibles sur des machines, et créé des “ghosts” sur CD-Rom pour pouvoir effacer / recommencer autant de fois que nécessaire. L’opération prenait de longues minutes, parce qu’il fallait réinstaller tout l’OS à chaque fois pour tester une nouvelle version des softs sur chacune des machines. Et il ne disposait que d’une demi-douzaine de machines pour faire ça.
La procédure était relativement simple mais prenait donc un temps fou: il fallait démarrer une machine avec le CD-Rom de ghost dans le lecteur pour réinstaller l’OS dans la bonne version. Il fallait ensuite se connecter à la machine avec un compte Windows, installer le logiciel, vérifier que l’installation se passait bien, et enfin que le logiciel fonctionnait correctement. Et c’était Nicolas qui cliquait sur l’icône, démarrait un projet dans le logiciel, et vérifiait les actions des différents menus, etc. La partie "tests automatisés" était vraiment rudimentaire, faute d’outils et/ou de moyens. D'autant plus qu'avec très peu de machines et toute la panoplie d'OS à tester, il fallait souvent tout recommencer. Même graver un CD-Rom de ghost prenait du temps.
“Vous avez un appel”
Notre logiciel arrive quand même en boîte à la Fnac à quelques centaines d’exemplaires. Et dans le cadre de la promotion de notre bébé, nous expédions des exemplaires à la presse spécialisée pour gagner en visibilité. Tout se passe bien. Les quelques magazines qui s’intéressent au segment reçoivent leur copie et la commercialisation commence.
L’équipe se repose un peu, exténuée par les dernières semaines de préparation de la release, du packaging, d’écriture et relecture du manuel, de production des démos, et de recrutement des premiers clients.
Puis un jour, le téléphone sonne au bureau. C'est un journaliste au bout du fil. Il nous explique qu’il a reçu sa copie dans une boite flambant neuve, et qu’au moment de l’installer, il a eu un message d’erreur pour le moins surprenant.
Il se trouve que ce monsieur est un professionnel et qu’il n’utilise pas une version grand public de Windows, mais une version en anglais de Windows NT, avec un service pack pas forcément récent. Disons qu’on était au Service Pack 6 et qu’il avait la version 3 installée. Pour comparer avec aujourd’hui, c’est un peu comme s’il était sous MacOS 13.1 alors qu’il existe et est recommandé d’installer la version 13.4.
Et effectivement, à la fin de l’installation du logiciel, une alert box s’affiche en plein milieu de son écran, avec un message en langage peu châtié qui s’adresse à lui et que j’ai volontairement édulcoré ici : “Vieille flûte !” (le vrai message rime avec flûte, c'était vraiment une bonne grosse insulte)
Un peu surpris, le journaliste nous appelle pour savoir s’il s’agit d’une blague potache de développeur ou s’il est victime d’un virus ou autre joyeuseté qui se serait immiscée dans le code d’installation de notre logiciel. Dans les bureaux, l’ambiance est à la fois à la stupéfaction, à l’hilarité et à la discrétion car tout le monde n’est pas au courant (notamment le CTO...).
Le téléphone de la boîte se trouve de notre côté des bureaux et nous traversons l’open-space en direction de l’équipe de développement pour mener l’enquête. Le chef d’équipe lance Visual Studio et une recherche de l’insulte proférée à l’encontre du pauvre journaliste, que nous avons d’ailleurs toujours en ligne pendant ce temps-là. Et là, c’est le drame…
Blague potache
Nous découvrons, au milieu du code, dans la partie qui sert à installer le logiciel sur les postes Windows NT service pack 3 en anglais, un bout de code alert(“Vieille flûte !”) qui traîne. Le développeur responsable et le testeur qui s’envoyaient des formules de politesse de ce genre n’en mènent pas vraiment large: utiliser ce mode de communication pour vérifier l’OS et la version du service pack n’était peut-être pas la meilleure idée.
Le reste de l’équipe se bidonne joyeusement, tellement la situation semble improbable. De l’autre côté de la ligne téléphonique, on s’impatiente et une personne du commerce prend le relais pour gérer le shitstorm. Finalement, pour le journaliste, la blague potache entre développeurs n’est pas une si mauvaise nouvelle: ça n’est pas un virus.
Mais pour nous, c’est une vraie mauvaise nouvelle: tous les CD-Rom dans toutes les boîtes à la Fnac sont donc des versions collector “Vieille flûte”. Combien d'utilisateurs en ont été victimes ? S’en sont-ils seulement rendu compte ? Nous n’avons jamais su, car il n'y a pas eu d’autres appels de ce genre.
Imagine-t-on aujourd’hui arriver sur un site web ou installer une app et avoir un énorme message de développeur avec une insulte qui s’affiche parce qu’on est sous une version précise d'iOS / Android, ou qu’on bosse avec une version spécifique de Java ? Et pourtant cela arrive encore, surtout dans la console des outils de développement avec un console.log() qui traîne, fruit de la frustration des développeurs. Mais cela arrive, tout comme les SMS ou notifications de test envoyées à toute la base client…
Il y a quelques années, j’avais cherché sur Github différentes insultes pour voir s’il était répandu de mettre ce genre de message dans des logs ou autre. Et oui, j’avais constaté que beaucoup de développeurs passaient effectivement leurs nerfs dans les commentaires ou dans les logs d’applications pendant les longues séances de debug, à tenter de comprendre un comportement ou un enchaînement d’étapes dans une fonction. Des choses parfois hallucinantes: on se plaint que ça ne marche pas pour telles ou telles raisons, en insultant la terre entière et en maudissant tous les Dieux connus ou inconnus.
Enfin, s’il fallait tirer une morale de cette histoire, et parce qu’on ne cessera probablement jamais de débugger avec des echo "test", console.log("ici") ou des pprint("là"), pour éviter d’envoyer par erreur un message pas franchement agréable à nos utilisateurs, un bon vieux “Pipo !” vaut toujours mieux qu’une “Vieille flûte !".