Margaret Hamilton, la pionnière du code des missions Apollo et du génie logiciel, est décédée à 90 ans
Margaret Hamilton est décédée le 30 septembre à 90 ans, a annoncé le MIT cette semaine. Si son nom ne vous dit rien, vous avez sûrement déjà croisé sa photo la plus célèbre : une jeune femme debout à côté d'une pile de listings du code d'Apollo aussi haute qu'elle.

Figure du logiciel de vol d'Apollo, le programme de la NASA qui a posé les premiers hommes sur la Lune, elle a passé sa carrière à défendre une idée qui n'allait pas de soi à l'époque : écrire du logiciel, c'est de l'ingénierie.
Elle arrive au MIT en 1959 pour programmer un logiciel de prévision météo, puis commence à s'intéresser à la fiabilité logicielle sur SAGE, le premier système informatisé de défense aérienne des États-Unis.
En 1965, son mari repère une petite annonce : le laboratoire d'instrumentation du MIT cherche du monde pour envoyer l'homme sur la Lune.
Elle postule et devient la première programmeuse du projet Apollo au MIT, et dirige en 1968 l'équipe du logiciel du module de commande et de service, alors que plus de 400 personnes planchent sur le code d'Apollo.
Ça n'arrivera jamais en prod
Les soirs et les week-ends, Margaret Hamilton emmène souvent au labo sa fille Lauren, alors âgée de 4 ans. Celle-ci adore jouer à l'astronaute (naturellement) sur le simulateur du module de commande.
Un jour, en pianotant un peu au hasard, elle lance P01, le programme de prélancement, en pleine simulation de vol. Résultat : le simulateur plante.
Pour sa mère, ce n'est pas une simple bêtise d'enfant, c'est un bug.
Hamilton décide d'investiguer et comprend que rien n'empêche un astronaute de lancer ce programme une fois en vol. Elle alerte ses collègues, mais sa proposition de correction est refusée : des astronautes aussi entraînés que ceux de la NASA ne commettront jamais pareille erreur !
Elle se contente alors d'une note dans la documentation, qui interdit de sélectionner P01 pendant le vol.
Mais une doc, c'est bien connu, personne ne la lit : en décembre 1968, pendant Apollo 8, l'astronaute Jim Lovell déclenche P01 par erreur en plein vol, et les données de navigation s'évaporent.
L'équipe de Margaret Hamilton est appelée à la rescousse, et le correctif finit par être intégré. C'est d'ailleurs l'un des premiers exemples de programmation défensive, une approche qui consiste à concevoir un logiciel capable d'anticiper les erreurs, voire de les corriger lui-même.
Eh ouais, à l'époque, on n'a pas attendu l'IA pour gérer ça.
Houston, on a une alarme
Le 20 juillet 1969, quelques minutes avant l'alunissage d'Apollo 11, l'ordinateur du module lunaire se met à enchaîner les alarmes. Surchargé à cause d'un problème matériel lié à un interrupteur, il risque de ne plus suivre la procédure d'atterrissage.
Sauf que le logiciel de vol conçu par l'équipe de Hamilton sait faire le tri : plutôt que de s'effondrer, il abandonne les tâches secondaires pour se consacrer à celles dont dépend l'atterrissage.
À Houston, les contrôleurs lui font confiance et donnent leur feu vert. Eagle se pose, et la suite, vous la connaissez.

Pas de débogage héroïque en direct (quoi qu'en dise parfois la légende), mais une version presque plus belle : une décision de conception prise bien avant le décollage, qui fait son travail le jour J.
On y retrouve le fil de toute sa carrière : traquer les erreurs avant qu'elles surviennent, et d'une certaine manière prévoir l'imprévu.
Une blague qui a fait carrière
À l'époque, le logiciel reste une boîte noire qui n'a pas le prestige du matériel. Comme d'autres pionnières de l'informatique, Margaret Hamilton doit se battre pour faire reconnaître la valeur de ce travail.
Pour que le logiciel soit pris au sérieux comme une discipline d'ingénierie à part entière, elle se met à parler de software engineering (ce qu'on appelle chez nous le génie logiciel). Pendant longtemps, le terme fait surtout rire ses collègues.
La blague a plutôt bien vieilli : "software engineer" s'affiche aujourd'hui sur les offres d'emploi, et sans doute sur le contrat de travail de pas mal d'entre vous.
Après le MIT, elle cofonde Higher Order Software en 1976, puis Hamilton Technologies une dizaine d'années plus tard, deux entreprises bâties autour de la prévention des erreurs.
Barack Obama lui remet la médaille présidentielle de la Liberté en 2016, et l'année suivante arrive une consécration d'un autre genre : sa propre figurine Lego, dans un set consacré aux femmes de la NASA.

La pull request de 1969
Le code source des ordinateurs de guidage d'Apollo 11 (module de commande et module lunaire) est consultable sur GitHub, où le dépôt dépasse les 72 000 étoiles.
On y croise des noms de fichiers comme PINBALL_GAME_BUTTONS_AND_LIGHTS.agc (littéralement, les boutons et lumières du flipper), le programme qui gère le clavier et l'affichage des astronautes.
Dans le fichier CONTRACT_AND_APPROVALS.agc, le logiciel du module de commande est soumis par Margaret H. Hamilton, Colossus Programming Leader, le 28 mars 1969, et approuvé le même jour par six responsables du programme.
Une fois la fusée partie, pas question de pousser un correctif : il n'y avait pas de seconde chance, rappelait-elle en 2009, et toute l'équipe le savait. Moins de quatre mois après cette signature, ce code guidait Neil Armstrong, Buzz Aldrin et Michael Collins sur le chemin du retour.
À propos de l'auteur
Nicolas Lecointre
Fondateur des Joies du Code, je suis l'actualité et la culture des développeurs depuis 2012. Ancien développeur, je me consacre aujourd'hui entièrement au média.
Articles similaires
C++26 est officiellement finalisé : la plus grosse mise à jour du langage depuis C++11
Java 26 : Oracle enterre les applets et embarque JavaScript et Python dans la JVM
TypeScript 6.0 est sorti : la dernière version en JavaScript avant le grand saut vers Go
Des neurones humains cultivés en laboratoire jouent à DOOM (oui, vraiment.)
C++26 est officiellement finalisé : la plus grosse mise à jour du langage depuis C++11
Java 26 : Oracle enterre les applets et embarque JavaScript et Python dans la JVM
TypeScript 6.0 est sorti : la dernière version en JavaScript avant le grand saut vers Go
Des neurones humains cultivés en laboratoire jouent à DOOM (oui, vraiment.)
Plus de contenu
Quand je rouvre un projet laissé de côté depuis 6 mois et que je relis mon code comme celui d'un inconnu
Quand j'écoute le commercial dérouler sa présentation alors qu'il n'a rien compris au projet
Quand je parviens à corriger le bug sur lequel on galère depuis 2 heures
Quand je quitte le bureau après avoir cassé la prod
Quand le stagiaire me dit "t'inquiète, je m'occupe de ce bug !"
Quand je ne parviens pas à reproduire le bug du client
Quand mon projet obtient une étoile sur GitHub
Quand je découvre la conteneurisation
Quand je rouvre un projet laissé de côté depuis 6 mois et que je relis mon code comme celui d'un inconnu
Quand j'écoute le commercial dérouler sa présentation alors qu'il n'a rien compris au projet
Quand je parviens à corriger le bug sur lequel on galère depuis 2 heures
Quand je quitte le bureau après avoir cassé la prod
Quand le stagiaire me dit "t'inquiète, je m'occupe de ce bug !"

