Les ratés informatiques du gouvernement du Québec — Partie 1
Important : ce qui suit reflète uniquement mon opinion et non celle de mon employeur.
Je n’ai encore jamais publié d’article en français sur cette plateforme. Comme le sujet est particulièrement pertinent pour le Québec, et afin de donner une meilleure portée à mes idées, j’ai choisi de l’écrire en français.
Généralement, la plupart des métiers ne sont pas un grand mystère pour ceux qui ne les pratiquent pas. Si je vous dis que mon amie est journaliste, vous avez une petite idée de ce que cela implique. Si vous rencontrez le pilote de l’avion pour votre prochain voyage outre-mer, vous avez aussi une compréhension, même minime, de ce que cette personne fait. Même pour les médecins, infirmiers, dentistes, postiers, mécaniciens, soldats, travailleurs de la construction, etc. Mais si je vous dis que je suis programmeur, ou encore développeur de logiciels, ou architecte de logiciels, qu’est-ce que cela vous dit ?
Si vous avez travaillé dans l’industrie ou si vous avez suivi des cours sur le sujet, vous n’aurez pas beaucoup de confusion. D’autres questions vous viendront à l’esprit. Par exemple : Qu’est-ce qu’un logiciel exactement ? Programmer, programmation, mais je fais ça avec mon enregistreur vidéo numérique, non ? N’est-ce pas ce que le gars au magasin Vidéotron a fait avec mon téléphone ?
J’ai toujours aimé et détesté les technologies
Quand j’étais jeune, j’ai fait de l’argent en travaillant comme figurant sur des films produits par ma mère. Oh ! Que parfois, ça payait bien ! Tellement que j’avais réussi à me payer un ordinateur personnel. Mais comme toute technologie, j’ai vite rencontré des problèmes avec. Mon ordinateur avait été pris en otage par un trojan. Comme dans l’histoire de Troie, mon ordinateur avait laissé passer un logiciel malveillant.
J’ai dû, pour pouvoir réutiliser mon ordinateur, apprendre comment le réparer. C’est ainsi que mon aventure dans les technologies de l’information (TI) a commencé.
J’ai lu CompTIA A+ pour comprendre comment un ordinateur et un système d’exploitation fonctionnent à la base. J’ai continué avec d’autres livres qui couvraient divers concepts fondamentaux de l’informatique.
Mon père avait une auberge et avait employé un développeur de site Web. Mais avec le temps, mon père a voulu l’actualiser. Le développeur Web n’était plus joignable. Alors, je me suis porté volontaire pour l’aider. J’avais aussi reçu pour Noël un livre de la collection “Pour les nuls”, avec comme sujet le PHP et MySQL.
Sans hésiter, j’ai dévoré le livre en moins de deux semaines et refait le code du site Web. Ainsi, mon père pouvait désormais éditer le menu de son restaurant sur le site Web, sans l’aide de personne. J’ai créé un petit CMS (Content Management System), un gestionnaire de contenu. Rien de trop compliqué.
Plus tard, j’ai créé un CMS pour deux maisons d’édition afin qu’elles puissent ajouter des livres, des auteurs, ou toute autre information en lien avec leur entreprise. Ces informations se retrouvaient sur leurs sites Web.
Oui, j’ai fait cela pour l’argent. Je faisais un bon petit revenu. Mais aussi, je voulais résoudre des problèmes comme j’avais fait pour mon père. Les maisons d’édition avaient des données partout et avaient besoin d’aide pour centraliser tout cela. C’était un peu comme un jeu de casse-tête, ou encore mieux, comme le Lego. C’était aussi bien pour mon côté créatif. Difficile à croire pour certains, mais beaucoup de programmeurs sont des artistes, tout comme des chanteurs, des musiciens, etc. Beaucoup vous diront qu’ils programment parce qu’ils aiment créer. Et comparé à d’autres médiums, c’est parfois plus accessible.
Mais n’existe-t-il pas des applications pour ça ?
Wix, Squarespace, WordPress, etc. Ou encore Microsoft Office avec Word ? Et là commence la confusion ! D’une part, ces services n’existaient pas à l’époque. D’autre part, pour ce qui est de l’exemple avec les maisons d’édition, ce qu’elles avaient besoin était trop spécifique à leur industrie. Les services listés sont bons pour des sites Web en général. Mais quand il s’agit de gérer des données spécifiques à une industrie et d’intégrer des logiques d’affaires, ces services et applications rencontrent un mur !
Et oui, il est possible de faire un site Web avec Microsoft Word. Mais bon, ce n’est pas ce qu’il y a de mieux !
C’est aussi la réalité du gouvernement du Québec. Le gouvernement a ses propres modèles de données, logiques d’affaires (logique de gouvernement ?), etc.
Logique d’affaires ? Modèle de données ?
Une application dans le gouvernement doit répondre à certains requis du gouvernement.
Si une personne X est une femme de plus de 65 ans et qu’elle est diabétique, elle a droit à recevoir XYZ du gouvernement. Si la personne clique sur ce bouton X, Y doivent arriver. Et ainsi de suite. Tout ce que vous faites sur les sites Web du gouvernement du Québec doit être programmé. Rien n’est magique !
Un modèle de données est une représentation structurée des données et de leurs relations au sein d’un système d’information. Pensé à un tableau dans Excel.
Du détails !
Une des raisons pour lesquelles beaucoup ne comprennent pas bien l’industrie de la programmation, c’est la gestion des détails. Nous devons penser à chaque petit élément. Quand vous cliquez sur un bouton, je dois, en tant que développeur, penser à la manière dont cette information sera envoyée, comment les différents systèmes vont réagir. Si ceci fait cela et si cela fait ça.
Ce sont des instructions
Comme dans une recette pour faire un gâteau aux anges ou un soufflé. Il faut suivre chaque instruction, sinon… poof ! Le soufflé dégonfle et le gâteau va en enfer !
Nous, programmeurs, passons la majeure partie de notre journée à écrire des instructions pour que les applications et services Web fonctionnent correctement.
Ouf! Je trouve ça plate !
Il est important de comprendre ce que le développeur fait pour commencer à saisir les échecs en TI du gouvernement. Comme mentionné plus tôt, nous sommes une industrie très mal comprise.
La faute du gouvernement !
Mes amis libertariens diront : “Mais voilà encore la preuve que l’État est nul et que le privé est mieux !”
Mes amis socialistes diront : “Mais voilà, la faute revient aux cupides de ce monde qui sont là que pour profiter du portefeuille de l’État !”
Mes amis programmeurs diront : “Je n’ai pas le temps, j’ai besoin d’une nouvelle certification !”
Blague à part, il se peut que les deux aient raison en partie, et même en même temps. Je ne peux pas vraiment parler du degré de responsabilité du gouvernement et des entreprises impliquées.
Mais je peux vous parler de la perspective d’un “écrivain d’instructions de soufflé (parfois réussi, parfois raté)”.
Une aventure !
Quand nous recevons un nouveau projet, nous nous transformons en petits enfants le jour de Noël ! Oui, les biscuits ont été dévorés par papa Noël, mais nous avons tous de nouveaux jouets !
Les jouets ! Rien n’excite plus un programmeur que les jouets. Parfois, on a droit à des bonbons. Mais les jouets sont vraiment les préférés. Beaucoup d’entre nous, sommes sceptiques. Nous avons déjà eu quelques Noëls avec des jouets ratés. Mais beaucoup oublient.
Nous explorons les jouets. Nous essayons d’imaginer cette nouvelle aventure avec les jouets qui se présentent devant nous.
Comme des enfants gâtés, parfois on nous permet même de changer de jouet pour un autre.
Les responsabilités !
Même avec ces jouets, nos parents nous demandent de faire nos tâches ménagères, de suivre les instructions ! Oui, parfois les instructions ne sont pas claires et changent n’importe quand, n’importe comment. On a parfois du mal à suivre.
Cela dit, nous sommes parfois irresponsables. Nous nous obsédons sur des jouets, faisant croire à nos parents que, cette fois-ci, les tâches seront faites et bien faites ! Bien sûr, avec l’aide des jouets.
Le jouet ?
Pour ne pas faire grimper la valeur des actions des entreprises de Ibuprofen, j’essaie de garder une certaine distance avec des termes trop techniques.
Un jouet est n’importe quelle technologie, application, bibliothèque, logiciel, gabarie… Peu importe ce que les développeurs utilisent dans le cadre de leur travail.
Quand je code, je ne fais pas tout. Avec l’aide de bibliothèques, logiciels et autres, je m’aide à travailler. Comme le gâteau aux anges, je ne fais pas les œufs, mais la poule les pond.
Le meilleur jouet !
Quand le pharmacien ou le médecin vous prescrit un médicament, il s’assure qu’il ne causera pas de réaction allergique et que vous êtes apte à le prendre.
Mais en informatique, nous ne prenons rarement une décision aussi réfléchie pour la prescription d’un jouet. Parfois, oui, d’autres fois nous faisons de notre mieux, mais nous ne savons jamais comment, à 100%, un logiciel ou une bibliothèque réagira une fois intégrée avec les autres composants, et quand le public l’utilisera. Et d’autre fois : C’est le futur ! Tout le monde utilise ça ! Sans blague, j’ai entendu ce genre “d’argument” plusieurs fois en réunion.
Pourquoi les coûts dépassent-ils ?
Pour ne pas finir avec un livre, je vais me limiter à deux raisons de la perspective d’un développeur. Avec tout ce qui a été écrit depuis le début de cet article, vous ne devriez pas être trop confus.
- Le cloud ! Depuis les menaces économiques du Président Donald Trump, plusieurs demandent que nous trouvions des alternatives aux services cloud américains comme AWS.
- Les bibliothèques dodues front-end. Un autre jouet trop souvent choisi pour des raisons de “c’est populaire !” et “c’est le futur !”
Je pourrais donner d’autres raisons, mais pour commencer, cela vous donnera une petite idée. Je ne vais pas vous faire manger tout le soufflé d’un coup ! Je suis programmeur, pas un sadique !
Cloud… Nuage
Non, non, pas dans les vrais nuages ! Mais dans plusieurs ordinateurs interconnectés, qui peuvent être loués ou délaissés à la demande. Longtemps, il était difficile de s’adapter au changement de demande de service sur Internet. Si le trafic augmentait trop et que vous n’aviez pas assez de machines, votre service tombait. Il fallait alors trouver de nouvelles machines, les commander, et cela pouvait prendre des jours, voire des mois. Cela n’était pas acceptable. Et pour les moments où vous n’aviez pas besoin de toutes ces machines, vous deviez payer pour des ordinateurs qui ne faisaient rien.
La promesse d’AWS et d’autres services cloud était que tout cela allait être plus facile et abordable. Mais comme beaucoup de jouets en TI, cela s’est avéré être un mirage.
David Heinemeier Hansson (DHH), co-propriétaire et CTO de 37Signals, fait beaucoup de bruit à ce sujet depuis quelques années, avec le hashtag #CloudExit. Ce n’est pas seulement le gouvernement qui s’est aventuré avec le cloud. Les entreprises privées aussi. Et 37Signals a fait partie des premières entreprises à revenir à avoir leurs propres machines au lieu d’utiliser un service cloud comme AWS.
Comme il l’argumente, pourquoi nos coûts augmentent-ils avec le cloud, en considérant la loi de Moore ? Et la confusion générale qu’il ressent, ainsi que d’autres, avec les factures qu’ils reçoivent d’AWS.
Il affirme aussi que son entreprise dépensait 3,4 millions USD par an. À noter qu’AWS fonctionne avec une marge bénéficiaire de 40 %. Il prévoit économiser environ 10 millions en cinq ans en utilisant ses propres machines.
Il est probable qu’une partie des coûts dépassés par le gouvernement du Québec soit liée aux coûts imprévisibles et exorbitants des services cloud.
Front-End!
“En développement web et logiciel, le front-end (ou l’interface utilisateur) désigne la partie d’une application avec laquelle l’utilisateur interagit directement. C’est ce que l’on voit et avec quoi on clique sur un site web ou une application mobile. Il comprend la conception visuelle (apparence) et l’interface utilisateur (ce que l’utilisateur ressent).” — Google AI
Depuis le début des années 2010, des frameworks comme Angular, React et plusieurs autres sont arrivés dans le monde du front-end. Encore des promesses d’un futur meilleur et de faire partie des “cool kids on the block” ! Hey ! Tout le monde les utilise.
Ces prétendus arguments me font toujours penser à Jonestown et le Kool-Aid.
Avant l’apparition de ces frameworks modernes, nous utilisions des outils plus simples comme Mootools et jQuery. À un moment donné, la promesse d’un avenir meilleur, porté par des frameworks plus populaires, nous a poussés à adopter ces technologies dernier cri.
Bien que ces nouvelles technologies aient apporté des avantages, elles ont également introduit une complexité inutile. Par exemple, une entreprise privée qui utilisait l’un de ces frameworks depuis des années a décidé de revenir à une solution plus simple. Résultat : la moitié de son équipe de développeurs a été licenciée. Et malgré ce changement, leur application Web est devenue bien plus rapide, tout en restant visuellement la même. Pour les utilisateurs, le site semblait identique, mais il était nettement plus performant.
Voici un poste que j’avais fait sur LinkedIn en lien avec le sujet :
Conclusion
Beaucoup blâment l’État pour sa mauvaise gestion, et d’autres blâment les entreprises privées. Mais il existe un troisième acteur à qui incombe une part de la responsabilité : les architectes de logiciels et les développeurs (programmeurs).
Dans cette première partie, j’ai mis l’accent sur le cloud et le front-end. Deux aspects du développement des services TI qui ont dérapé ces dernières années et que même le secteur privé a payé cher.
Difficile à croire, peut-être même une première, mais je crois qu’il est temps que l’on nous blâme, nous, les programmeurs, pour une fois !
J’ai encore beaucoup à dire, mais ceci est une petite partie qui explique la situation.
