Antoine Grondin
écritsà proposrss···
← writing
February 25, 2016english·한국어·français

Un fantassin apprend à coder§

Antoine Grondin

Avant de me lancer dans cette affaire de logiciel, j'étais officier d'infanterie. Ma description de tâches ressemblait à peu près à ceci :

Les officiers d'infanterie accomplissent une vaste gamme de tâches, notamment commander et diriger des soldats [...] déployés partout dans le monde, dans toutes sortes d'environnements [...]. Le rôle premier de l'infanterie durant les opérations est de participer au combat.

Au travail, je ressemblais à peu près à ça :

L'auteur en tenue de combat à l'entraînement

D'une manière ou d'une autre, j'ai fini par apprendre à coder alors que j'étais en mission en Afghanistan.

Recul rapide vers 2009§

En 2009-2010, j'étais officier d'infanterie à l'aérodrome de Kandahar, au sein d'un QG de brigade connu sous le nom de Force opérationnelle Kandahar ; un QG canadien à l'époque. Mon travail consistait à recevoir tous les comptes rendus du terrain et à diffuser cette info dans tout le QG et vers nos « hauts » et nos « côtés ».1

Le QG traitait des choses comme des évacuations sanitaires, des missions d'appui-feu, des comptes rendus de contact. La façon de faire était d'une inefficacité très frustrante. Par exemple, une mission médicale se déroulait comme ceci :

  • Une unité rapportait une explosion d'EEI avec des blessures critiques (en utilisant un 9-liner2).
  • L'unité transmettait une demande MEDEVAC par radio à sa compagnie -> bataillon -> QG de brigade (nous).
  • Nous étions alors le centre de répartition des hélicoptères et de la synchronisation de l'espace aérien et de l'hôpital et tout.

La demande arrivait ~30 s à 1 min après l'explosion elle-même. Je criais après un militaire de l'aviation qui se levait de sa chaise, marchait jusqu'à la carte centrale et, avec sa règle, mesurait la distance en milles entre l'aire d'atterrissage de l'hôpital et l'explosion. Il calculait ensuite les ETA des hélicoptères en fonction de divers paramètres, puis demandait au QG des hélicoptères d'envoyer un hélico sur place. Ce n'est qu'à ce moment-là qu'il tapait lentement un message dans un format prédéfini, puis publiait ce texte dans le canal de communication (ça fait ~5 min après l'explosion).

Cette latence de 5 min pour envoyer la demande aux hélicos, et pour retourner l'info ETD/ETA à l'unité au sol, faisait que des gens mouraient de leurs blessures ou restaient dans des endroits dangereux/exposés plus longtemps que strictement nécessaire (en attendant les ETA des hélicos). Cette latence de 5 min mettait des gens en danger et tuait du monde.

Toute l'affaire était très frustrante. Le travail de ce gars-là criait pour être informatisé, mais je ne connaissais rien à la programmation à l'époque. J'ai googlé un peu et je suis tombé sur des gens qui disaient que pour programmer, il fallait apprendre Java ou C, et qu'il fallait un compilateur pour ça. Je ne connaissais rien à toute cette affaire de « programmation » à l'époque, le mot ne voulait pas dire grand-chose pour moi. Je vous laisse imaginer ce que l'officier de l'escadron des transmissions a pensé quand j'ai demandé :

« Peux-tu installer un compilateur C sur mon ordinateur ? »

Donneriez-vous un compilateur C à un officier d'infanterie ?§

Le feriez-vous ? L'officier des transmissions a plus ou moins ri de moi et m'a dit d'utiliser Excel. Alors j'ai écrit un outil pour automatiser le travail de ce gars-là dans Excel. J'ai appris ce que je pouvais en utilisant des techniques sophistiquées comme le théorème de Pythagore et la concaténation de chaînes.

Qualité du code : quand un fantassin se met au VBA

Au final, l'outil était très rudimentaire mais accomplissait quelque chose de très utile :

  • Il avait un déroulement qui garantissait que tous les comptes rendus requis par les gens au sol, et au-dessus, étaient envoyés en temps voulu et en bon ordre.
  • Chaque étape de ce déroulement était presque entièrement automatisée.
    1. Chaque bouton remplissait un gabarit et mettait le texte dans le presse-papiers pour le copier-coller dans le chat.
    2. Les événements étaient chronométrés automatiquement.
    3. Les distances et les temps de parcours étaient calculés automatiquement.
    4. Un menu déroulant facilitait la saisie des valeurs courantes.
  • De gros signaux d'avertissement étaient visibles quand une étape à temps critique était en cours, ou quand des données importantes manquaient.

Le résultat était ce chiffrier :

Capture d'écran du chiffrier de répartition MEDEVAC

... et il a réduit la latence « de la réception du 9-liner au retour de l'ETA » de ~5 min à ~15 s.

Étant l'armée canadienne, ils n'ont pas cette tendance qu'ont nos alliés du Sud à donner des médailles pour avoir déjeuné. Mais j'ai quand même eu ceci :

Mention élogieuse du commandant de l'Escadre aérienne, août 2010

J'ai fini par découvrir qu'il y avait un langage de script derrière Excel appelé VBA. Alors j'ai écrit des outils pour automatiser bien d'autres parties du QG, comme un outil pour gérer l'espace aérien des missions d'appui-feu ou une base de données pour gérer plusieurs incidents critiques simultanés :

Capture d'écran du gestionnaire d'incidents simultanés
Capture d'écran du formulaire de saisie du 9-liner

Après avoir écrit tout ce code, quelqu'un a remarqué je suppose. Nos opérations tournaient bien mieux, la capacité de notre TOC à gérer plusieurs incidents simultanés avait grandement augmenté. Alors j'ai aussi reçu un challenge coin3 du chef d'état-major de la Défense du Canada (CEMD, le général le plus haut gradé à l'époque) :

L'auteur debout avec des dignitaires et le ministre de la Défense nationale
Aérodrome de Kandahar, 21 juillet 2010. De gauche à droite : pm 1 Robert Cléroux, adjudant-chef des Forces canadiennes ; gén Walter Natynczyk, chef d'état-major de la Défense ; moi-même ; gén Jonathan Vance, commandant de la Force opérationnelle Kandahar, plus tard chef d'état-major de la Défense ; Peter MacKay, ministre de la Défense nationale. Photo : sgt Daren Kraus, imagerie de la Force opérationnelle Kandahar.

Puis j'ai réalisé que j'aimais cette affaire de programmation bien plus que courir partout avec des guns.

Puis je suis revenu au Canada (2010) et j'ai commencé un baccalauréat en génie logiciel (2011).

Puis j'ai appris à coder en Go (2012) et j'ai fait un stage chez Amazon (2013).

Puis j'ai travaillé chez Shopify (début 2014).

Puis j'ai rejoint DigitalOcean (fin 2014) pour bâtir leur cloud.

Puis j'ai obtenu mon diplôme (2016).

Puis je suis ici aujourd'hui.§

Quand je me suis enrôlé dans l'armée, j'ai eu le sentiment d'avoir commencé une deuxième vie. Une vie où j'apprendrais à être une personne disciplinée et organisée. Quand j'ai commencé mon baccalauréat, j'ai commencé une troisième vie. Maintenant que j'ai obtenu mon diplôme, je ne sais pas trop quoi faire. C'est la première fois depuis des années que j'ai autant de temps devant moi, avec seulement un emploi à temps plein.

Je me rappelle quand j'ai commencé à écrire ce truc de VBA, en réalisant que je faisais quelque chose qui comptait, que je changeais le statu quo. Et j'ai réalisé que ce n'est pas difficile de faire différent, de faire quelque chose qui compte. Tout ce qu'il faut, c'est vaincre l'inertie et se lancer.

Note§

Voici un échantillon des premières lignes de code que j'ai écrites de ma vie. (attention : ça pourrait heurter votre sensibilité)

https://gist.github.com/aybabtme/89e1f475c731ae985a1f

  1. 1
    Haut : la formation à laquelle nous rendions compte. Côtés : les unités sur nos flancs, qui avaient besoin du même tableau de situation pour leurs propres raisons.
  2. 2
    Neuf lignes numérotées, toujours dans le même ordre : emplacement du point de ramassage, fréquence radio et indicatif d'appel, nombre de patients par priorité, équipement spécial requis, nombre de patients par type, sécurité au point de ramassage, comment le site sera marqué, nationalité et statut des patients, et contamination NBC. Ordre fixe pour que rien n'ait à être demandé deux fois ; la norme accorde 25 secondes pour transmettre la demande au complet.
  3. 3
    Un challenge coin. Les hauts gradés en portent sur eux et les remettent en personne, dissimulés dans la paume au moment d'une poignée de main. Il n'y a pas de citation et rien ne va dans votre dossier — le challenge coin est toute la récompense.
tamuning - séoul