Margaret Hamilton, primera ingeniera de software de la NASA, llevó al hombre a la Luna.


Margaret Hamilton (Paoli, Indiana, 17 de agosto de 1936) es una científica computacional, matemática e ingeniera de software estadounidense.

Fue directora de la División de Ingeniería de Software del Laboratorio de Instrumentación del MIT,​ donde con su equipo desarrolló el software de navegación "on-board" para el Programa Espacial Apolo. En 1986, se convirtió en la fundadora y CEO de Hamilton Technologies, Inc. en Cambridge, Massachusetts. La compañía se desarrolló alrededor del lenguaje universal de sistemas basada en su paradigma de "desarrollo antes del hecho" (DBTF, del inglés Development Before the Fact) para sistemas de diseño de software.​ Acuñó el término «ingeniería de software» para distinguir entre el trabajo de hardware y otras ingenierías. A pesar de que su idea no fue bien recibida al inicio, eventualmente el software generó el mismo respeto que otras disciplinas.​

El 22 de noviembre de 2016, Hamilton recibió la Medalla Presidencial de la Libertad, entregada por el expresidente de Estados Unidos Barack Obama, por su trabajo en la NASA durante las misiones Apolo.​

Su enfoque del diseño de software fue pionero para la época, ya que los requisitos de robustez y tolerancia a fallos eran una prioridad para la seguridad y supervivencia de los astronautas durante los viajes a la Luna, es por esto que para muchos Margaret Hamilton es considerada una de las primeras personas en convertirse en Ingeniera de Confiabilidad del Sitio (del inglés Site Reliability Engineer).

Hija de Ruth Esther Partington y Kenneth Heafield, fue educada en un ambiente familiar con un padre filósofo-poeta y abuelo pastor cuáquero que la alentó a estudiar y a ser lo que ella quería ser.

Conoció a su marido (del cual se divorció más tarde) James Cox Hamilton mientras estudiaba en Earlham College y se casaron a finales de los años 1950 después de obtener su licenciatura. Tienen una hija llamada Lauren.

Tras licenciarse en Matemáticas, quiso seguir estudiando, pero tuvo que dejar sus estudios durante un periodo de tiempo para que su marido terminara su carrera en Harvard, y trabajar de profesora de matemáticas y francés en un instituto.

Tras mudarse con su familia a Míchigan, Margaret finalizó los estudios en el instituto Hancock High School en el año 1954. Estudió matemáticas en la Universidad de Míchigan en el año 1955, antes de cambiarse a Earlham College, donde su madre estudiaba. Allí obtuvo el grado en matemáticas con filosofía en el año 1958. Citó a Florence Long, el director del departamento de matemáticas en Earlham como ayuda en su deseo de investigar en las matemáticas abstractas y convertirse en profesora de matemáticas. Otras de sus inspiraciones fueron su padre (filósofo y poeta) y su abuelo (director de instituto y ministro de Sociedad Religiosa de los Amigos), por incluir aspectos e intereses filosóficos en sus estudios.

En Earlham, Margaret conoció a su primer marido, James Cox Hamilton, que terminaba sus estudios de química. Se casaron el 15 de junio de 1958, una vez Margaret se había graduado en Earlham. Trabajó una temporada como profesora de matemáticas y francés en un colegio público en Boston, Indiana, hasta que su marido se graduó. Se mudaron a Boston, Massachusetts, donde James continuó sus estudios de postgrado en química en la Universidad de Brandeis.

Tuvieron una hija llamada Lauren el 10 de noviembre de 1959. Finalmente, la pareja se divorció en 1967. Dos años después, Margaret se casaría con Dan Lickly.

Su hija, Lauren, a veces tenía que ir al trabajo con ella. De ello deriva una de sus más famosas anécdotas:

"Mi hija Lauren venía a menudo a trabajar conmigo por las noches y los fines de semana porque eramos muy dedicados. No había un momento en el que no estuviéramos trabajando. A ella le gustaba jugar a ser astronauta porque me veía hacer ciertas simulaciones. En una simulación de hardware que queríamos probar, la simulación de Lauren se bloqueó y pensé: "Dios mío, ¿cómo ha pasado eso? Lo comprobamos y vimos que había hecho algo que el astronauta no debía hacer. Ella seleccionó P01, el programa de pre-lanzamiento, durante el vuelo. Se lo enseñé a la gente, a quienquiera que estuviera involucrado. No sé quienes, de la NASA o del MIT, dijeron: 'Bueno, nunca va a suceder porque los astronautas están muy bien entrenados. Simplemente no va a suceder'. Yo dije: 'Pero, ¿y si ocurre?'. Todo mi énfasis fue siempre el '¿qué pasa si?'. Quería que alguien hiciera un código de recuperación y detección de errores que dijera: 'Este no es el momento adecuado para seleccionar P01'. Pero siguieron diciendo que no iba a suceder. Así que escribí una nota de programa porque eso se convierte en parte de la especificación para que el astronauta sepa que está ahí. Pueden encontrarlo y las notas del programa decían simplemente no seleccionar uno durante el vuelo. Eso es lo que decía la nota. Bueno, en el siguiente vuelo, el Apolo 8, lo mismo que ocurrió con Lauren volvió a ocurrir. Después de eso dijeron: 'Sí, Margaret, puedes poner ese cambio allí'. Este nuevo código se incluyó en el siguiente vuelo".

Se mudó a Massachusetts con la intención de hacer estudios de postgrado en Brandeis, pero en lugar de ello tomó un puesto en el MIT como desarrolladora de software. De 1961 a 1963, trabajó para el Proyecto Sage Philco-Ford, donde usó radares para seguir trayectorias de aeronaves desconocidas. También escribió código para el Laboratorio de Investigación Cambridge de la Fuerza Aérea. Trabajó para ganar experiencia de primera mano en una época donde las ciencias computacionales y la ingeniería de software no existían ni como disciplinas, ni como cursos universitarios.

Margaret Hamilton era parte del Charles Stark Draper Laboratory en el MIT, donde en 1965 se convirtió en la responsable del desarrollo del software de vuelo a bordo de las computadoras de la misión Apolo en el que trabajaba el equipo del laboratorio, y posteriormente dirigió y supervisó los desarrollos de la misión de la estación espacial Skylab.

De 1961 a 1963, Hamilton trabajó en el Proyecto Semi-Automatic Ground Environment (SAGE) en el MIT Lincoln Lab, donde fue una de las programadoras que escribió software para el prototipo de computadora AN / FSQ-7 (el XD- 1), utilizado por la Fuerza Aérea de los Estados Unidos para buscar aviones posiblemente hostiles. También escribió software para un proyecto de rastreo de satélites en los Laboratorios de Investigación de Cambridge de la Fuerza Aérea. El Proyecto SAGE fue una extensión del Proyecto Torbellino, iniciado por el MIT para crear un sistema informático que pudiera predecir los sistemas meteorológicos y rastrear sus movimientos mediante simuladores. SAGE pronto se desarrolló para uso militar en defensa aérea antiaérea. Hamilton dijo:

Lo que solían hacer cuando entrabas en esta organización como principiante, era asignarte este programa que nadie pudo descifrar o ejecutar. Cuando era principiante también me lo dieron. Y lo que sucedió es que era una programación complicada, y la persona que la escribió se deleitó con el hecho de que todos sus comentarios estaban en griego y latín. Así que me asignaron este programa y de hecho lo hice funcionar. Incluso imprimió sus respuestas en latín y griego. Fui la primera en hacerlo funcionar.

Fueron sus esfuerzos en este proyecto los que la convirtieron en candidata para el puesto en la NASA como desarrolladora principal del software de vuelo Apollo.

Uno de sus mayores logros durante la dirección del desarrollo del sistema operativo para las misiones Apolo fue el sistema de excepciones y carga asincrónica de tareas que jugó un papel crucial momentos antes del alunizaje de la misión Apolo 11, ya que cuando los astronautas se estaban preparando para descender, la computadora empezó a arrojar los errores 1201 y 1202. Durante unos minutos no sabían si proceder con el alunizaje o no debido al error que mostraba la computadora, pero el equipo de Hamilton rápidamente encontró entre sus notas que ese código significaba que la computadora estaba limpiando la lista de tareas de procesos poco prioritarios para dedicarle todo el procesamiento a las funciones de descenso. Se intercambiaron mensajes clave desde el módulo de comando al complejo de comunicaciones de la NASA con el espacio profundo, situado en Robledo de Chavela, Madrid, y de allí a Houston, al centro de operaciones de la NASA. De allí los mensajes volvían a Robledo de Chavela y luego de nuevo al módulo lunar donde se encontraban los astronautas. Debido a la espontaneidad de la situación y la dificultad de las comunicaciones, no fue posible intercambiar mucha información en aquellos instantes, por lo que la rapidez e inmediatez fueron aspectos clave para el éxito de la misión. Antes las dudas del Comandante de la misión, Neil Armstrong, sobre si llevar a cabo el alunizaje o no, la respuesta fue concedida por Margaret Hamilton, quién aseguró que éste se podía efectuar de forma segura. Una vez resuelta la incógnita de qué significaba el mensaje de error, se procedió con el descenso en la Luna, el cual fue exitoso.

Más tarde se descubrió que los mensajes de error no eran por un problema de software, sino que en la lista de procesos que le entregaron a Buzz Aldrin para la preparación de los instrumentos se lo instruyó a que encendiera un radar que no era utilizado durante el descenso, pero que podría ser útil en caso de requerir abortar la misión, este radar empezó a llenar el procesamiento del sistema con tareas de medición debido a todo tipo de lecturas que estaban llegando desde sus sensores, gracias a que Hamilton con su equipo tuvieron en cuenta como resolver un problema de este tipo, el hecho no terminó en ningún incidente.

Otro momento destacable durante la fase de diseño del sistema de navegación para las misiones Apolo fue la detección de un Bug gracias a que Lauren, hija de Margaret Hamilton, estaba jugando con el sistema de simulaciones híbridas de la computadora, y activo accidentalmente el programa de "pre lanzamiento" (prelaunch o p01) durante una misión, logrando un error en el sistema que derivó en la eliminación de los datos de navegación ya cargados. Dado el incidente Hamilton propuso una modificación en el sistema para evitar que pueda suceder en una misión real, pero la administración le respondió que no consideraba la posibilidad ya que los astronautas estaban entrenados para evitar este tipo de errores humanos. Sin embargo durante la misión Apolo 8, y a pesar de que Hamilton documentó el problema de manera clara, los astronautas ejecutaron accidentalmente el programa p01 en medio de la misión entrando en modo crítico sin datos de vuelo, pero gracias a Hamilton estaba documentado como volver a reenviar los datos de navegación en caso de que este accidente ocurriera. Poco después del incidente los cambios propuestos por Hamilton originalmente fueron aprobados para las siguientes misiones.

En 1976, Hamilton cofundó con Saydean Zeldin una empresa llamada Higher Order Software (HOS) para desarrollar más ideas sobre la prevención de errores y la tolerancia a fallos que surgen de su experiencia en el MIT trabajando en el programa Apollo. Crearon un producto llamado USE.IT, basado en la metodología HOS que desarrollaron en el MIT. Se utilizó con éxito en numerosos programas gubernamentales, incluido un proyecto para formalizar e implementar C-IDEF, una versión automatizada de IDEF, un lenguaje de modelado desarrollado por la Fuerza Aérea de EE. UU. En la Fabricación Asistida por Computadora Integrada (ICAM) proyecto.

Hamilton fue la directora ejecutiva de HOS hasta 1984 y dejó la empresa en 1985. En marzo de 1986, fundó Hamilton Technologies, Inc. en Cambridge, Massachusetts. La empresa se desarrolló en torno al lenguaje de sistemas universal (USL) y su entorno automatizado asociado, el conjunto de herramientas 001, basado en su paradigma de desarrollo antes hecho para el diseño de sistemas y desarrollo de software.

A Anthony Oettinger, Barry Boehm, y Margaret Hamilton se les ha atribuido el origen del nombre de la disciplina de "ingeniería del software". Hamilton detalla cómo llegó a inventar el término "ingeniería del software":

"Cuando se me ocurrió el término de ingeniería de software, nadie había oído hablar de él, al menos en nuestro mundo. Fue una broma constante durante mucho tiempo. Les gustaba bromear con mis ideas radicales. Fue un día memorable cuando uno de los gurús más respetados del hardware explicó a todos en una reunión que estaba de acuerdo conmigo en que el proceso de construcción de software debería considerarse también una disciplina de ingeniería, al igual que el hardware. No porque aceptara el nuevo 'término' en sí, sino porque nos habíamos ganado su aceptación y la de los demás en la sala como un campo de ingeniería por derecho propio."