Software Engineering

software engineering history NASA

Reading time: 6 minutes



So you heard about Software Engineering right? But do you know who invented the term? I hope not, because then this will be an interesting read for you.

Software Engineering Struggle

In the 1960s when the Cold War was in full swing, transistorized computers joined the game and hardware was changing so fast, that software developers had a lot of struggle to keep up with new inventions. It was obvious that something had to change, new approaches were required to properly tackle coding tasks. Engineers (you know, people with safety goggles and a hammer) were laughing at programmers at the time, particularly those, who were stating that software development should also be considered an engineering discipline. Even today the struggle is real, but mostly within academic discourse. Professionals in the commercial environment just know real life better than academics (no offence), so everyone does their job according to the job description, not a job title.

Ad Lunam

On May 25, 1961, 43 days after Yuri Gagarin set the bar as the first man in space, Kennedy spoke about the voyage to the Moon in front of Congress, a crewed spaceflight that mankind had never experienced before. You know the story, Neil Armstrong and Buzz Aldrin landed their Apollo Lunar Module on July 20, 1969 and together with Michael Collins safely returned home on July 24. But if it wasn't for a brilliant Software Engineer, this might ended up tragically.

First Software Engineer...

...was a woman.

Yes, it was Margaret Hamilton, a 24-year-old (at the time she joined the Apollo program in 1961) mathematician and meteorologist, who learned to code by developing software for weather prediction and later developed a program to track unfriendly aircraft during the SAGE project (1961-1963). She was the first Software Engineer to be hired by NASA and it was she who invented the term. That's how she describes it:

When I first came up with the term, no one had heard of it before, at least in our world. It was an ongoing joke for a long time. They liked to kid me about my radical ideas. It was a memorable day when one of the most respected hardware gurus explained to everyone in a meeting that he agreed with me that the process of building software should also be considered an engineering discipline, just like with hardware. Not because of his acceptance of the new 'term' per se, but because we had earned his and the acceptance of the others in the room as being in an engineering field in its own right.

Those stacks of paper are the code printout of the Apollo Guidance Software from NASA’s Apollo 11 mission back in 1969. In fact, that stack of papers is several copies. Back in 1969, there was no Internet, there was no Stack Overflow, and there was no GitHub. Everybody on the team had a printout of their code next to them on their desk, and the team stacked up everyone’s copies to make the photo look more impressive. I would have been impressed if it was just one copy of this amazing software. It’s that great. In 1963, when Margaret became a director of the Software Engineering Division of the MIT Instrumentation Laboratory, during the time they developed the onboard guidance software for the NASA Apollo program. She led the team that was responsible for the software that landed humans on the Moon for the first time in 1969. Sorry guys, but the first software engineer was a woman – a brilliant woman at that. Before then, software engineering as a field didn’t exist. So in the age of computers, and computerization, and writing software for computers, she and her team had to come up with some of the very first software engineering design principles because they didn’t exist. (John Rofrano)

"Forget It"

Fun fact. When Margaret Hamilton joined the Apollo program, she was considered a junior software programmer and thus she was given the least important job. If you have ever developed anything by yourself, you should be surprised now. The least important job was to develop emergency fixes in case the mission needed to be aborted. Basically, she was told to create exception handlers to warn astronauts about detected errors. I mean we all know, that error handling is as important as primary program functionality, it is obvious! But NASA guys were so sure that emergencies would never happen, that they even called Hamilton's project "Forget It". They were so wrong...

Go/No-Go

On July 20, 1969, as the lunar module, Eagle, was approaching the moon’s surface, something bad happened. Computer displays were flashing errors and everyone in the Control room held their breath facing a tough "go/no-go" decision to be made. But Margaret Hamilton had already gained an undisputed reputation at the time and the decision was made. When the hardware was failing because of the certain switch overloading the computer, Margaret's software worked like a charm, prioritizing the most important jobs related to landing. Moments later Eagle landed on the surface of the moon with just enough fuel to fly for additional 30 seconds.

Let Your Kids Explore

My daughter is 6 months old now, she has just learned to crawl. This causes me to be stressed out sometimes, but my wife and I also learned to keep the floor clean and free from small things (the ones my daughter can try to eat). Also, I have found my USB flash drive, which I thought I had lost forever. Margaret Hamilton experienced something similar, but bigger in scale. She had often brought her daughter Lauren to the laboratory, where the girl would play with the Apollo simulator. One day, she crashed the simulator with an unknown error, which happened to be a program executed during the flight when it was meant only for the pre-launch phase. This caused the system to erase navigation data, which you definitely need midst pure space. Hamilton added a small program note stating: "Do not select P01 during flight", which was all she could do at the time because yet again, her bosses wouldn't allow her to fix this error, they thought that astronauts wouldn't make this kind of mistake (well who could have thought). However during the Apollo 8 mission, when the spacecraft with men onboard was orbiting the moon, astronaut Jim Lovell said something like "Uh oh..." after starting the P01 program during the flight, which cleared all navigation data for the flight. People were literally stuck in space for nine hours, while Hamilton and her team were trying to get astronauts back home, which they did by sending new navigation data to the spacecraft.

Summary

As Software Engineers never underestimate test-driven development and exception handling, be open to finding and solving problems, and expect something to happen even if it seems impossible but still relevant.


Be curious, be proactive and take care!

Best regards,

Ed

Previous Post Next Post