最初,Margaret Hamilton 並沒有打算開發軟體或者送人上月球。在 1960 年那個不鼓勵婦女謀求高技術性工作的年代,Hamilton只是一位24歲的數學本科系學生,並且才剛獲得美國麻省理學院工程師的工作。而當時她的計劃是,先去工作支援準備攻讀哈佛法學院的丈夫,然後3年後,再輪到她去完成自己的數學學位。
但當時,適逢阿波羅太空計劃啟動。Hamilton 於是待在實驗室發揮所長,創造出一個可能改變人類歷史,甚至數字世界的可能。
作為一個在 1960 年代的職業婦女,當時的Hamilton是另類的;而作為一個太空船的工程師,Hamilton是積極、有企圖心的。Hamilton 總會在周末或下班後,帶著她的女兒 Lauren 到實驗室繼續工作,而當時年僅 4 歲的 Lauren 總是會睡在可以俯瞰查爾斯河的實驗室地板上。
▲Hamilton (右)和她的女兒 Lauren(左)。
回憶過往,Hamilton 說,
當時許多人都會問我,你怎麼捨得這樣對待女兒?
但 Hamilton 愛上這份工作的神秘新奇,她愛上下班以後大家聚集在酒吧喝一杯的友誼、打屁聊天的怪笑話。而外行人也許還是摸不透這個工作迷人之處,但 Hamilton 覺得待在實驗室裡,讓她就像「那一群『男人』當中的一份子!」。
當時,就和現在一樣,這樣一群「男人」主導了當代的科技和工程,而像女性工程師Hamilton這樣子的人,在現今這個多元挑戰的科技產業中,仍是例外。這令現代許多軟體開發商感到驚訝,原來屬於兄弟們的俱樂部,其創辦人之一竟是一位女性!但這也許也能讓他們停頓下來思考,為什麼《廣告狂人》時代的性別歧視會一直延續到了今天。
隨著 Hamilton 為自己職業生涯的安排,軟體世界也跟著大大翻轉,而這一切都多虧了由 John F. Kennedy 在1961年發起的阿波羅計劃。在麻省理工學院的儀器實驗室中, Hamilton 和她的同事們發明了世界上第一臺可攜式電腦的程序碼。Hamilton 最後成為了系統程序專家,並奠定該專業在社會上的地位。
當我第一次進到實驗室時,沒有人知道裡面正在做什麼,那裡就像西部的荒野,沒有課程、也沒有人會教。
在微軟誕生的十年前,以及網景創辦人Marc Andreessen說出「軟體正在吞噬這個世界」名言的五十年前,這個世界沒有料想過「軟體」會在早期的阿波羅計劃中成為最主要的力量。
▲Hamilton 在阿波羅指揮艙模型裡工作的模樣。
在阿波羅任務中,其原始的文件對工程方面的要求,其實連軟體這個詞都沒提到。麻省理工航空航天工程系教授David Mindell在他的著作《Digital Apollo》提到,軟體並沒有被寫進整個任務的時間排程裡,甚至也未涵蓋在預算中。無論如何,至少在任務最初的時候是這樣。
但隨著阿波羅的計劃開展,軟體在任務扮演的角色逐漸變得清晰。1965年,Hamilton負責阿波羅太空船上的飛行軟體。這是一個激勵人心的時刻,因為她的工作,就連美國官方也相當關注。當然,有時這樣的壓力,也讓 Hamilton 失眠。
還記得有一次,在一個深夜派對之後,Hamilton匆匆趕回實驗室,就為了修改她忽然想通的程序碼。 Hamilton說,她自己總是想像哪天阿波羅的事情上了報紙頭條,然後接下來大家就會將這一切矛頭指向她。
經過了 8 年,軟體逐漸受到產業界的重視。在 1968 年年中,已有超過400人同時為阿波羅計劃寫程序,因為那時,大家已經意識到,軟體才是美國在太空競賽中,可以成功登月的關鍵。而同時間,Hamilton和她的同事除了馬不停蹄的持續為阿波羅太空船編寫程序之外,他們也孕育出 4000 億美元的產業。
寫程序對 Hamilton 來說,是一個得通宵在Honeywell電腦主機前,模擬阿波羅著陸器如何運作的工作,「我們在太空船飛行前,必須模擬任何可能的一切。」Hamilton說,一旦確定程序碼是可靠的,它就會被傳送到鄰近的美國雷神公司設備,由一群年紀較大、被暱稱為「小老太太(Little Old Ladies)」的女性工作者,以手工來回將細銅線穿進磁環裡,磁蕊記憶體才得以誕生。
▲美國雷神公司的員工以手工打造磁蕊記憶體的模樣。
▲磁蕊記憶體穿線後的近照。
阿波羅飛行器上會附有兩個幾乎一模一樣的機器:一個會在登陸月球後,自動分離、降落在月球上的登月艙;另一個則負責帶太空人返回地球。而這也是70磅重、可攜帶式的阿波羅電腦和其他電腦最不同之處。正如 David Mindell所說,這是第一臺具有導航、可安裝在太空船上的電腦系統,且雖然它是設計由人為進行操控,但卻具備線傳飛控系統的自動駕駛儀科技。
這個系統儲存超過 12000 個字組在它的永久記憶體,以及 1024個字組在它的暫存記憶體。「這是第一次有這樣的電腦能進太空船,並被賦予這麼多重要的任務。」和 Hamilton 一起工作的夥伴 Don Eyles 說。
我們證明這是一件做得到的事。也許這個系統,在現在看來,儲存容量小,而且跑起來很慢。
但如果沒有這套系統,阿姆斯壯就沒辦法登陸月球;沒有 Hamilton、Eyles,和麻省理工的工程師們完成的軟體,這臺電腦將會是個笨蛋。
1969 年 7 月 20 號,阿波羅 11 號在月球的寧靜海著陸。這次的著陸堪稱有驚無險,因為據軟體工程師Don Eyles指出,阿波羅在登陸前,其電腦警報發出聲響,系統做了一大堆不必要的計算,但好在因為有Hamilton和其他工程師的努力,這個登月計劃最後化險為夷。而這件事也就奠定了系統工程的專業性地位。
Photo credit:NASA Goddard Space Flight Center
Hamilton解釋,解決這件事情的關鍵在,電腦必須非常專注於完成自己手頭上的任務---「讓登月艙著陸於寧靜海」,而工程師們的工作就是讓電腦知道,即使系統發生問題,軟體仍可做到自行檢測錯誤,並同時專注執行當前較優先的任務。
「絕對不會發生」的鐵齒悲劇
有天,Hamilton 的女兒 Lauren 正在把玩麻省理工學院指揮艙的模擬器時,但在她按下鍵盤那一刻,螢幕跳出錯誤訊息,Lauren不小心啟動了發射程序「P01」,造成模擬器發生錯誤飛行而墜毀。儘管類似的情況幾乎不可能發生,而且也沒有太空人會像 Lauren 一樣這麼做,但 Hamilton當時還是堅持加入程序碼,以防類似事件再度發生。
不過這件事最後卻被 NASA 一口回絕了,因為他們認為,一般的太空人是絕對不能有犯錯的空間,所以一定不可能會發生這樣的事。最後,Hamilton只好選擇在工作備忘錄上,寫下「千萬不要在飛行期間,啟動 P01」的提醒。
不料,NASA 的鐵齒,換來的就是這個悲劇的二度重演。大約在 1968 年耶誕節前後,當阿波羅 8 號在前往月球之際,太空人 Jim Lovell 在飛行時,不經意啟動了「P01」。而當時 Hamilton 在儀器實驗室的二樓會議室接到來自休士頓的電話。
電話中提到,被啟動的程序「P01」,自動刪除了所有飛行數據,而一旦沒有這些數據,阿波羅號將沒有辦法載送太空人回到地球。
當時的 Hamilton和其他同事,必須馬上做出完美的修正和處理;在時間急迫的情況底下,Hamilton最後決定重新上傳新的導航數據。好在,故事最終圓滿落幕,太空人安全得回家了。
這件事讓我們知道 Hamilton 無論是在太空,或者平地,她都是一位願意盡最大努力嘗試改變並奉獻於社會的人,而這也是每一位軟體工程師都需要學習的地方。1970 年代,Hamilton 不僅止於在 NASA 和阿波羅計劃奉獻付出,她更自己成立公司、擔任許多軟體公司的經營者。
如今,她的公司「Hamilton Technologies」,和麻省理工學院只距離了幾個街區,而在那裡,她又開啟了另一個新的職業生涯人生,另一個程序碼革命的中心。