💎 Inspiration

Women in tech history: Margaret Hamilton, the engineer who helped get us to the moon

One small step for womankind

By Jennifer Harrison March 15, 2016

This article is the first in a series about amazing women in tech history. The next is about Grace Hopper, the programming pioneer who was the first woman to become a US Navy Admiral.

Many of the early pioneers in programming were women. This is partly because there’s no reason they wouldn’t be, but also because programming was once thought of as a job for women. In the early days of programming, computers read cards with holes punched in them as input. Punching holes into cards was seen as similar to typing, which was another job supposedly suited for women. Naturally, women were among the early pioneers in programming and have helped shape modern software development. One programmer who stands out helped pioneer many aspects of modern programming and was instrumental in landing people on the moon.

Margaret Hamilton studied maths at Earlham College, Indiana, in the 1950s. She taught for a while before moving to Boston with the goal of studying abstract mathematics but ended up joining MIT. There she began developing software to predict weather patterns. By “software” we of course mean bits of card with holes punched in them. The world was a very different place.

Back then it wasn’t a case of knowing the right programming language and turning up for the job. Computers were nothing like they are today, so the idea of a shared programming language that worked on them all was a long way off. At MIT, Hamilton used the LGP-30, a 340 kg computer that was weighed down so it didn’t move too much. Seriously. Programming was all about getting hands-on with these machines and figuring out how to get them to do the things you wanted them to. Take a look at the keyboard for this computer:

The Cold War and making a name for herself

In the early 1960s Hamilton worked on the SAGE Project, which began life as weather prediction but was used by the military for anti-aircraft defence. Lincoln Labs, where she worked on this system, gave a difficult challenge to newcomers. They would test newbies by giving them a horribly confusing program that nobody else had gotten to work. The programming was complex, much was nonsensical, and all instructions and comments were written in Greek and Latin. You weren’t really expected to have any success but Hamilton became the first person to get the program to run.

Her achievements on the SAGE Project didn’t go unnoticed and she became the Director of software programming for NASA’s Apollo project that intended to land humans on the moon for the first time. Weather prediction? Done. Aircraft tracking? Done. Landing people on another world sounds like a reasonable next challenge, no?

One small step

Imagine the challenge. Today, you can learn computer science because people have worked on it before you. You can read textbooks and do exercises then walk up to pretty much any computer and make things happen. Back then everyone was learning as they went along. Computer science was barely a thing, at least in the academic sense. Hamilton was learning to program new computers as she went, laying the groundwork for future generations. She supervised her own team at NASA and developed the computers that would be used for guidance on the various spacecraft. The following image shows Hamilton standing beside the source code for the Apollo guidance computer.

We can’t overstate the importance of her team’s software when it came to the successful moon landing. Obviously it would have been impossible without the guidance systems, but the coding actually prevented a mission-abort during the historic landing. If you’ve watched documentaries about Apollo 11, you’ve probably seen Mission Control panicking over the now famous 1202/1202 error that the astronauts encountered just 3 minutes before landing. At first people weren’t sure what it meant so they were considering aborting the mission. Armstrong and Aldrin nearly didn’t land on the moon.

What had happened was a switch had been placed in the wrong position and the computer was having to think about this as well as the landing procedure. Back then the computers weren’t very resource efficient and it needed all the memory it could get just for the landing. The error indicated to Mission Control that the computer had too much going on and they were worried this would cause problems during the rest of the landing.

One of Hamilton’s many specialities was getting programs to be very robust. Her programs could work around problems rather than break down. Specifically, she is credited with developing priority scheduling, where the computer can drop important tasks rather than give up altogether. The incident in her own words:

“Due to an error in the checklist manual, the rendezvous radar switch was placed in the wrong position. This caused it to send erroneous signals to the computer. The result was that the computer was being asked to perform all of its normal functions for landing while receiving an extra load of spurious data which used up 15% of its time.

The computer (or rather the software in it) was smart enough to recognize that it was being asked to perform more tasks than it should be performing. It then sent out an alarm, which meant to the astronaut, “I’m overloaded with more tasks than I should be doing at this time and I’m going to keep only the more important tasks; i.e., the ones needed for landing.”

Actually, the computer was programmed to do more than recognize error conditions. A complete set of recovery programs was incorporated into the software. The software’s action, in this case, was to eliminate lower priority tasks and re-establish the more important ones. If the computer hadn’t recognized this problem and taken recovery action, I doubt if Apollo 11 would have been the successful moon landing it was.” – Datamation, 1/3/1971

Hamilton ended up working on all the Apollo missions that landed astronauts on the moon. She played a major part in the development of modern programming, pioneering many aspects that we take for granted today. She did this at a time when software development was considered magic. Speaking to Verne, she described how people at the time viewed this type of work:

“Software during the early days of this project was treated like a stepchild and not taken as seriously as other engineering disciplines, such as hardware engineering; and it was regarded as an art and as magic, not a science.

I had always believed that both art and science were involved in its creation, but at that time most thought otherwise. Knowing this, I fought to bring the software legitimacy so that it (and those building it) would be given its due respect and thus I began to use the term “software engineering” to distinguish it from hardware and other kinds of engineering; yet, treat each type of engineering as part of the overall systems engineering process.

When I first started using this phrase, it was considered to be quite amusing. It was an ongoing joke for a long time. They liked to kid me about my radical ideas. Software eventually and necessarily gained the same respect as any other discipline.”

What amazes us is that Hamilton accomplished so much (like, you know, landing people on the moon) at a time when programming was shoving punch cards into a giant, whirring box until it did the thing it was supposed to. Although she’s probably most famous for her work during this time and her contributions to the Apollo missions, she didn’t slow down and went on to prove herself as a business owner. Today she is the CEO of Hamilton Technologies, Inc, which provides systems for companies including Motorola, IBM, NASA, the US Department of Defence, and the US Army.

This article was the first in a series about amazing woman in tech history. The next is about Grace Hopper, a programming pioneer and the first woman to become a US Navy Admiral.


Main image via NASA

Share this postEmail this to someoneShare on FacebookTweet about this on TwitterShare on LinkedInPin on PinterestShare on Google+Share on Reddit