阿波罗的幕后英雄,谁说女子不如男?看祖师奶奶如何开启程序员的『她』时代

来自:鸡仔说(微信号:jizaishuo),作者:张小吉

鸡仔说:高新科技行业、计算机科学、软件工程、企业家,这些词不知道从什么时候开始,就似乎与男性捆绑到一起。即使是已经历过嬉皮士时代和性解放运动的当下,依然存在部分行业男女比例失调的尴尬场景。大家理所当然的认为某些理工科思维强的职业,就应该由男性去主导。但我今天介绍的这位祖师奶奶,不仅打破了这个魔咒。还在阿波罗计划中起到了关键作用,可以毫不夸张地讲,没有她就没有阿波罗号登月的成功。她,就是原本一心想成为数学家的玛格丽特·希菲尔德·汉密尔顿(Margaret Heafield Hamilton)



1954 年,玛格丽特从汉考克高中毕业,并进入厄勒姆学院。专业是数学,辅修哲学。毕业后,玛格丽特短暂的做过一段时间高中数学老师和法语老师。那时候她丈夫还在哈佛法学院读书,勇敢的玛格丽特便承担了家庭的责任。不过她读书深造的梦想一直没有熄灭。两人商量好,等丈夫安定下来,她准备再去读一个抽象数学学位

按理说,如果没有意外,玛格丽特可以按照这个计划,按部就班地走下去。但人算不如天算,MIT 的一个又一个计划找上了她,并且越来越具有挑战性,这意外地激发了她之前并未发现的编程天赋,有时候,上帝就是不公平的,他不但要加满你的颜值属性,还要把你的编程天赋点爆

一开始,玛格丽特负责气象分析系统的研发,期间表现出色。林肯实验室便向她发来橄榄枝,让她开发早期的美军防空系统 SAGE(Semi-Automatic Ground Environment)。而后,当她准备到布兰迪大学研究院深造时,一个命中注定的机会出现在了「那大约是在 1963 或 64 年,我看到一则消息: MIT 获得美国太空总署(NASA)的合约,负责开发载人飞月软件,而 MIT 正在物色人选参与这个计划。这像是一生只有一次的机会,我立即致电 MIT 看看能否加入。」数小时内,她与计划的负责人取得联系,并当天斩获 offer,而那年她年仅 24 岁


那时候,软件不是一个独立学科。管理层也不清楚他们到底在做什么 「工作环境跟我在 MIT 其他岗位相似,大家都不拘小节,矜矜业业。在那时,软件对管理层而言仍然是一个谜、是个神秘的黑盒子,这让我们得到完全的自由与信任。」

压力对普通人来说,或许是绊脚石,但对玛格丽特来说,却是垫脚石。他们团队在这"蛮荒得像个西部世界"的软件开发环境中疯狂成长。「当时没有学校学习『软件工程』或『系统工程』专业,当我们找不到答案,便要发明一个出来。我们要设计出首次造出来便能用上的东西,幸好团队内都是年均 20 出头的年轻人,对我们来说,挑战愈大,乐趣愈多。那时根本没有时间当新人,大家都是边做边学。」


玛格丽特虽然热爱这个多数由男性主导的极客圈子,并且在那个女性没有担当重要职位的年代,顺利地担任了全球最重要的高科技计划核心小组的主管,但她的压力却非常大。以至于有一天晚上在深夜聚会后,她匆匆赶回实验室,修复一个忽然想到的 bug。「我时常幻想,(失误)会在报章头条出现,然后他们会将矛头指向我。」

玛格丽特躺在阿波罗控制舱的模拟器内

玛格丽特团队负责的是阿波罗计划的软件程序设计。他们要模拟出飞船的一切可能发生的情况。要知道,当时可不是像现在,有各种成熟的调试工具,而且它们使用的语言是还未完善的汇编语言,各硬件之间也无法方便地移植程序软件,为了给不同的模块编程,少说得学习三五套汇编语言,而玛格丽特作为领导,基本上每套汇编语言都得精通,其复杂程度可想而知

我们是全世界最幸运的人,那时没有时间当新人,于是在别无选择的情况下成为了先驱者。

——玛格丽特·希菲尔德·汉密尔顿



现在我们常常抱怨 996 毫无人性,但当时玛格丽特却主动选择了这种状态,甚至远超 996 的工作时长,这让她没有足够的时间照顾孩子。于是,她经常带着年幼的女儿罗伦来实验室加班。为的就是争分夺秒地完成登月程序的开发

有一天,罗伦在独自玩耍的时候,意外地触发了一段指令。这使得原本正在飞行状态的模拟器一下子失控,虽然在现实情况下,没有宇航员会这样做。这也就是为什么当玛格丽特提出要增加代码,修复这个有极小可能出现的危机时,NASA 却一直反对「我们多次被告诫:航天员训练得十全十美,绝不会犯下任何失误」

玛格丽特和她的女儿


的确,那时候,软硬件资源非常吃紧。打个不太严谨的比喻,就是 1 MB 要把它当成 1000 MB 去用。她的上司觉得她的提议是多此一举,但结果却相当打脸:1968 年圣诞节前后,阿波罗航行进入第五天,宇航员路维尔(Jim Lovell)错误地输入了那段指令,清洗了所有航行数据,没有那些数据,太空船将永远留在宇宙中。最终,玛格丽特和 MIT 的工程师们,用了 9 小时的时间,将程序修正无误后,远程更新至阿波罗号,这才拯救了整个阿波罗计划,也同时实现了人类登月梦,打开了人类历史的新篇章

左下角的是玛格丽特,她和其他同事正在MIT为阿波罗8号提供后方支持


阿波罗号的宇航员们在实现了登月计划后,都先后获得了政府和社会授予的奖章和荣誉,但却没有幕后英雄玛格丽特和 MIT 工程师的份儿。随后,她便转战商界,先后创立了高阶软件和汉密尔顿技术有限公司。在软件行业的工程领域持续发光发热

她公司所设计的软件,以功能强大、稳定可靠著称。比如她所设计研发的阿波罗导航软件,成为了我们当下客运飞机上导航软件的先驱。而她本人,则被认为是『软件工程』一词的发明人,同时也是并行计算、优先级调度和端对端测试等技术的先驱者

2003 年,NASA 才后知后觉地发现,之前忽略了在阿波罗计划中,做出过突出贡献的玛格丽特等人,便赶紧补发了 NASA 杰出太空行动奖(PS: 该奖奖金 37,200 美元,是美国宇航局史上对个人的最大奖赏)随后,在 2016 年,美国政府向已经 80 岁高龄的玛格丽特,颁发了总统自由勋章,以赞扬她代表着"将人类送上太空的一代无名英雄"


©️Getty Images:玛格丽特获总统自由勋章现场

从玛格丽特的故事中,我们至少可以明白三件事:

① 人存在智商上的绝对差距

不管是我之前介绍的 Unix之父Linux之父C语言之父,还是今天的玛格丽特,他们毫无例外的都在智商上碾压众人。要知道在那个年代,软件开发可没有现在这么智能,不是光懂软件就可以了,你还得通晓硬件。可想而知,在那个时代,要写出数万量级的代码(据说有 6万多行代码),得有多困难,而且由于调试艰难,就要求所有人写的代码,尽可能保证一次性全对,没有超人的记忆力和智商,是绝无可能办到的。所有我们得承认,人在智商上是有差距的,而且很可能是量级上的差距

玛格丽特站在阿波罗计算机指导手册 (AGC) 的源代码程序列表旁边,这些材料摞起来比她的人还要高

② 鸡蛋就要放在一个篮子里

我们常听人讲,鸡蛋不要放在一个篮子里。或许在投资的时候有效,但我们在日常做事的时候,就应该反其道而行,即鸡蛋就应该全部放在一个篮子里。如果玛格丽特当时没有全身心投入进阿波罗计划的开发中,就很可能不会在聚会后返回实验室修复 bug,更有可能忽略女儿的那次误操作。那么,人类的登月计划很可能要延迟很多很多年。反观现在,我们很多人在提倡跨界,而往往贸然跨界的结果是样样通样样松。如果,我是说如果,你还不明确自己到底喜欢什么,到底热爱什么,那就不要做无意义的尝试。把自己手头的一亩三分地先经营好,时间会给你最好的嘉许

③ 承担更多,才能成为更多

有时候我在想,不知道从何时起。我们这个时代开始变得越来越没有责任感,身边的同僚(包括我自己),开始越来越惧怕承担责任,遇到问题时,推卸甩锅的多,勇于承担的少;偷摸取巧的多,实打实干的少;见风使舵的多,忠贞不渝的少。玛格丽特在当时那个年代也和我们年级相仿,而且面对的都是前无古人的新领域,她尚且能够愈战愈勇,我们又有何颜面在每次遇到问题时都找各种借口推脱呢?

希望玛格丽特的故事对你有所启发,另外,邀请你思考一下

推荐↓↓↓
程序员的那点事
上一篇:520,用代码表白,送给你最爱的人 下一篇:程序员不容错过的十部小电影