1968年圣诞节期间,阿波罗8号(Apollo 8)飞船的乘组人员遭遇了计算机故障危机。他们是首批绕月飞行的宇航员,而让他们返回地球所需的数据已从飞船上的导航系统中消失。
但曾负责阿波罗(Apollo)制导计算机软件开发的玛格丽特•汉密尔顿(Margaret Hamilton)及时化解了危机。她知道问题出在哪里,因为她四岁的女儿劳伦曾在麻省理工学院(Massachusetts Institute of Technology, MIT)的实验室里玩飞行模拟器时触发过同样的错误。和小劳伦一样,阿波罗8号宇航员吉姆•洛弗尔(Jim Lovell)也误启动了一个并非为飞行期间使用而设计的程序。
享年90岁的汉密尔顿曾指导美国国家航空航天局(Nasa)的控制人员修正她称为“劳伦漏洞”的问题。她后来回忆说,如果美国国家航空航天局听从她的建议,本可避免这场紧急情况。她在2017年接受美国计算机历史博物馆采访时表示,该机构之所以不采纳建议,是“因为他们担心增加额外代码——而宇航员永远、永远不会犯错”。此后任务中,这一漏洞立即得到修复。

麻省理工学院阿波罗项目航天学教授奥利维尔•德韦克(Olivier de Weck)说:“称玛格丽特•汉密尔顿是一位先驱——说她超越了自己的时代——都严重低估了她。”
德韦克补充说:“当时,软件工程尚处于起步阶段。她不仅亲自编写先进的代码,还带领团队运用这项新兴技术,开发出人类当时实现过的最复杂系统之一。”
此后,她创立并经营了两家以研究为导向的公司:1976年创立的Higher Order Software和1986年创立的汉密尔顿技术有限公司(Hamilton Technologies)。这两家公司专注于开发把防错放在首位的计算机系统。
玛格丽特•希菲尔德(Margaret Heafield)1936年出生于印第安纳州帕奥利,父母分别是一名学校教师和一名教授。她在美国中西部长大,曾就读于密歇根大学(University of Michigan)和厄勒姆学院(Earlham College),学习数学。1958年毕业后,她与厄勒姆学院的同学詹姆斯•考克斯•汉密尔顿(James Cox Hamilton)结婚。
1959年,她加入了麻省理工学院著名气象学教授爱德华•洛伦茨(Edward Lorenz)的实验室。汉密尔顿协助洛伦茨模拟和预测天气,并在工作中学习了编程的基本知识。他们的研究为洛伦茨后来发展“混沌理论”奠定了基础,其中包括著名的“蝴蝶效应”:在大气等非线性系统中,初始条件的微小变化会导致结果出现巨大差异。
1961年,汉密尔顿调入麻省理工学院一个团队,参与为Sage开发软件。Sage是美国首个计算机化防空系统。1965年,她加入阿波罗计划,在获得美国国家航空航天局合同的麻省理工学院仪表实验室(MIT Instrumentation Lab)工作。到1968年,她已升任团队负责人,带领团队为宇航员用于在太空中导航的飞船制导计算机编程。

她后来回忆说:“程序员……会在编码纸上手写代码,然后我们把纸交给穿孔员,由他们把代码打到数据卡上。”一张广为流传的照片显示,汉密尔顿站在一摞编码纸旁,纸堆高及她的头部。
1969年7月,阿波罗11号(Apollo 11)任务即将首次载人登月,距离着陆仅有几分钟时,机载计算机闪烁显示1201和1202代码警报。这些警报表明系统过载,可能会干扰复杂的着陆程序。
幸运的是,汉密尔顿及其同事设计的软件能够在这种情况下终止非必要的后台任务,并优先处理着陆所需的程序。美国国家航空航天局休斯顿控制中心的控制人员信任这套软件,因此决定不终止任务,让阿姆斯特朗(Neil Armstrong)和巴兹•奥尔德林(Buzz Aldrin)得以乘坐“鹰”号登月舱安全着陆。
汉密尔顿积极强调自己是一名软件工程师,试图扭转当时普遍存在的一种看法:与真正的工程师——硬件开发人员——相比,程序员只是“二等公民”。她向计算机历史博物馆(Computer History Museum)表示:“麻省理工学院的同事常开玩笑说:‘玛格丽特又在讲她的软件工程了。’”但她最终亲眼见证了软件开发获得与硬件开发同等的地位。
麻省理工学院的奥利维尔•德韦克说:“她的职业生涯致力于防止错误,以及她所说的‘应对未知’。她以身作则,展现了领导力,并建立了一套以解决问题和系统工程为基础的软件工程实践,让我们所有人受益。”