The next time you read a report about the low numbers of female software engineers in the field, keep in mind the irony of this: It was a woman who coined the term “software engineer.”
That woman, pioneering NASA software engineer Margaret Hamilton, was just awarded the Presidential Medal of Freedom from President Obama for her contributions to the software industry.
You might already know her, or know her image. A striking NASA photo has been floating around for the past couple of years showing a young Hamilton standing next to a stack of binders almost as tall as she is (see above). Those binders contained the code that she wrote that sent U.S. astronauts to the moon.
“Keep in mind that at this time software engineering wasn’t even a field yet,” said President Barack Obama when he delivered her medal. “There were no textbooks to follow.”
Hamilton compared software development to the Wild West. “No one knew what we were doing.”
In her work (which continues to this day), she created or contributed to the concepts of asynchronous software with priority scheduling and priority displays with “human-in-the-loop” decision capability. This set the foundation for modern software design and engineering.
But it’s not just that she led the team that got us to the moon, it’s not just that she coined the term “software engineering,” it’s not just that she’s run two software companies since leaving NASA, it’s also that she saved the lives of the astronauts when a software hit a glitch as the Eagle was landing.
Hamilton was a 24-year-old with a BS in mathematics working as a computer programmer at MIT in 1961 when NASA issued the first contract for the Apollo Space program. She ended up leading the Software Engineering Division of the MIT Instrumentation Laboratory (now Draper Labs). She coined the term “software engineering” to make what she was doing more acceptable to the other engineers at MIT.
She also pioneered rigorous testing and documentation. With literal moon shots, “there was no second chance. We all knew that,” she said.
Programming the Apollo code started with stacks of punch cards, processed overnight in batches on a giant Honeywell mainframe computer, a simulation of the Apollo spacecraft. Once the code was thoroughly tested and run through the flight simulator, it was sent to a nearby facility where a team of expert seamstresses literally hard coded the programs. The women threaded copper wires through magnetic rings: a wire going around the core was 0, a wire going through the core was a 1. This made the Apollo code virtually indestructible.
“We Don’t Need That Code” = Nine Hours of Panic
In the first recorded instance of management saying “we don’t need to spend time on this code, it’s a fix for a situation that will never happen,” now experienced by coders everywhere on a maddeningly regular basis, Hamilton documented a fix for a problem that she was assured would never happen.
According to an article in Wired, during testing, the flight simulator crashed when a program called P01 was triggered while the simulator was in mid-flight. Even though P01 was a prelaunch program, Hamilton wanted to add code to prevent the crash. NASA refused to give her the time, sure that it would not be necessary. “We had been told many times that astronauts would not make any mistakes,” she says. “They were trained to be perfect.”
Hamilton made a note in the documentation, which became critical during the 1968 Apollo 8 flight that was the first time a manned craft orbited the moon. P01 was inadvertently launched and erased all the navigation data that contained the flight path home.
Alerted to the emergency, Hamilton and her team poured through project documentation for nine hours and figured out how to upload new navigational data. Crisis averted. And a pattern was created for hours of panicked work in production after recommended code was rejected by management.
So what does one do after one sends men to the moon, and is Director of the Software Engineering Division at MIT’s Charles Stark Draper Laboratory in one’s 20s? It turns out that NASA was just the opener for the real advance, which was the creation of the software industry itself.
Hamilton decided to focus her talents on error prevention and fault tolerance, co-founding Higher Order Software (HOS) in 1976. Then in 1986, she founded Hamilton Technologies, where she created the Universal Systems Language (USL) based on her paradigm of Development Before The Fact (DBTF) for systems design and software development.
“We developed a standard process for recording and relating to every error, including its history—for example, in what part of the life cycle it was created and found and, accordingly, what could be done to prevent it in the future,” Hamilton explained in the white paper “Universal Systems Language: Lessons learned from Apollo” published in 2008.
In an interview with Furturism.com, Hamilton said her advice to women, or any young programmers, is to ask questions and to continue even things look impossible or experts tell you it’s impossible. Dare, she said, “To stand alone or to be different; and not to be afraid to be wrong or to make and admit mistakes, for only those who dare to fail greatly can ever achieve greatly.”
President Obama summed up her career: “Her software architecture echoes in countless technologies today and her example speaks of the American spirit of discovery that exists in every little girl and little boy who know that somehow to look beyond the heavens is to look deep within ourselves and to figure out just what is possible.”
Photos via NASA.