Vous regardez l’écran de votre ordinateur avec frustration. Il a planté, encore une fois. Il est lent. Il est inutilisable. Il lui faut dix minutes pour s’allumer. Les pages web mettent tellement de temps à charger que vous avez le temps de boire un café entre chaque e-mail ouvert. Vous pensez à le jeter par la fenêtre, ou encore mieux sur la tête de l’esprit tordu qui l’a conçu, et qui n’a pas pu faire en sorte que, tout simplement, ça marche. Est-ce vraiment si compliqué ? Est-ce vraiment trop demander ? Oui. Pourquoi ?
Réaliser un programme informatique, c’est comme préparer un grand repas (pas vraiment en fait, mais on va faire comme si). Lorsque vous préparez votre menu, vous n’allez pas tout faire à partir de zéro. Vous n’allez pas planter et récolter les légumes, traire les vaches, élever les cochons, moudre le blé. Non : vous allez sélectionner les ingrédients dont vous avez besoin, et essayer de les mettre ensemble au mieux. Vous allez les préparer, les découper, les combiner, les assaisonner, jusqu’à obtenir le résultat voulu : des plats équilibré, un menu construit et cohérent, réfléchi. Vous vous imaginez dans votre tête le client dégustant chaque pièce de nourriture dans le bon ordre, tel que vous l’avez préparé.
Ça, c’est la théorie. Ensuite, le vrai travail commence. Il y a beaucoup à faire, vous vous entourez d’une équipe de cuisiniers. Chacun insiste pour travailler avec sa marque de couteau, sa poêle fétiche. L’un veut que les tomates soient coupées dans un sens, l’autre refuse de les servir comme ça. On s’engueule un peu, mais au final tout le monde s’y met. Les préparatifs avancent, tout prend forme. Vous serez prêt à servir dans une heure.
Le patron du restaurant arrive : “Ah oui, j’ai oublié de vous prévenir, le client adore le chocolat. Je lui ai promis qu’il y en aurait dans chaque plat. Vous allez faire ça bien, je vous fait confiance !”
Vous n’avez pas le temps de réagir qu’il est déjà parti. Vous voyez la catastrophe arriver : vous n’avez même pas de chocolat ! Vous trouvez vite un fournisseur qui est prêt à vous en donner, mais il n’accepte de vous le vendre que si vous achetez aussi ses pommes. Votre pâtissier râle, parce que ce n’est pas ses pommes habituelles, mais il finit par accepter. Vous accommodez tant bien que mal le reste du repas pour ajouter des morceaux de chocolat partout sans trop détruire le reste. Vous voyez bien que ce ne sera pas aussi bon que vous l’aviez prévu, mais bon, tant pis, si c’est pour satisfaire le client… Le service démarre. Quelques minutes plus tard, on vous appelle en salle. Il y a un problème. Vous craignez le pire : est-ce qu’un cheveu s’est glissé dans la soupe ? Est-ce qu’un morceau de viande était de mauvaise qualité ?
Le client vous montre son assiette du doigt. “Ce n’est vraiment pas bon, le Ketchup masque complètement le goût de tout le reste.” Le vide se fait dans votre cerveau. Vous n’avez pas mis de ketchup. Vous voyez une bouteille sur la table. Vous demandez poliment : “pourquoi avez-vous ajouté du Ketchup ?” Immédiatement, il se braque : “Je n’ai rien ajouté du tout ! C’était comme ça !”. Vous soupirez, reprenez le Ketchup et l’assiette, en ramenez une autre. Cette fois-ci, vous restez dans les parages pour vérifier qu’il n’ajoute rien. Peine perdue : dès que vous détournez le regard, un paquet de sauce, du sel, du poivre ou de la sauce piquante arrivent comme par magie entre ses mains.
Le repas touche à sa fin. Il vous rappelle une dernière fois. “C’était pas mal du tout. Par contre, pourquoi avez-vous mis du chocolat partout ?”
Est-ce vraiment si compliqué, donc ? Oui. Chaque fois que vous utilisez votre ordinateur, vous vous reposer sur des dizaines, des centaines d’applications différentes, conçues par des équipes de parfois plusieurs centaines de personnes qui n’ont chacun qu’une vision partielle du produit qu’ils sont en train de développer. Des programmes qui se reposent sur des technologies datant d’il y a entre un mois et cinquante ans, qui n’ont jamais été conçus pour fonctionner ensemble mais qui ont été bricolés pour que “ça marche” — la plupart du temps.
Les interactions entre les différents programmes se passent dans équilibre fragile. À chaque mise à jour, cet équilibre peut être brisé : une application est modifiée, une autre cesse de fonctionner. Pas de chance : ses développeurs ont fait faillite, il n’y aura pas de correction. La solution : ne rien mettre à jour ? Félicitations, vous vous rendez plus vulnérable à des failles de sécurité qui sont découvertes tous les jours, dans tous les programmes un peu populaires.
Alors quand votre ordinateur plante, où quand il devient lent, on vous dit : redémarrez. Désinstallez un maximum de programmes. Nettoyez la mémoire. Retirez les Malwares, les Spywares, les Virus. Redémarrez encore. À chaque redémarrage, les millions de rouages qui font tourner l’ordinateur se remettent dans une position plus ou moins cohérente, plus ou moins connue. Dès que les programmes se mettent en marche, dès que les rouages tournent, ils commencent à bouger, à se gêner les uns les autres, jusqu’à ce qu’ils se bloquent à nouveau. Si vous faites bien attention, si vous prenez soin de votre ordinateur, que vous n’installez pas de programmes superflus, que vous prenez garde à ce que vous téléchargez, aux pages web que vous visitez, vous pouvez reculer l’échéance. Mais lorsque l’inévitable fini par arriver, que vous devez une nouvelle fois changer d’ordinateur, sachez que ce n’est pas uniquement de votre faute (même si vous avez peut-être accélérés sa déchéance) : voyez-y le résultat des tentatives de milliers d’informaticiens, partout dans le monde, de garder un minimum de cohérence dans ce fouillis de technologies. Tentatives, aussi, de se convaincre qu’ils comprennent encore comment fonctionne vraiment le programme qu’ils viennent d’écrire.