마거릿 해밀턴: 소프트웨어라는 이름을 붙인 엔지니어
달 표면에서 3분을 남겨두고, 아폴로 11호 유도 컴퓨터가 경보를 울리기 시작했다. 버즈 올드린(Buzz Aldrin)은 7개의 작업을 처리하도록 설계된 기계에 8번째 동시 작업 요청을 보낸 상태였다. 착륙은 그 시점에서 중단될 수도 있었다. 그러나 중단되지 않은 이유는, 소프트웨어를 총괄하던 여성이 수년 전에 정확히 이와 같은 일이 발생할 것을 가정하여 컴퓨터가 실패하는 대신 중요하지 않은 자체 작업을 중단하도록 프로그래밍해 놓았기 때문이다. 그녀는 나중에 “컴퓨터가 이 문제를 인식하고 복구 조치를 취하지 않았다면, 아폴로 11호가 그처럼 성공적인 달 착륙이 되었을지 의문입니다”라고 말했다.
인디애나주 폴리
마거릿 엘레인 히필드(Margaret Elaine Heafield)는 1936년 8월 17일 인디애나주 폴리(Paoli, Indiana)에서 아버지 케네스(Kenneth)와 어머니 루스 에스더 히필드(Ruth Esther Heafield) 사이에서 태어났다. 가족은 미시간주로 이주했고, 그녀는 1954년 핸콕 고등학교(Hancock High School)를 졸업했다. 그녀의 아버지는 시인이었고 할아버지는 교장이었으며, 가정에서는 수학만큼이나 철학을 확고하게 심어주었다. 결국 그녀는 두 분야 모두를 공부하게 되었다. 그녀는 1955년 미시간 대학교에서 공부한 후 얼햄 칼리지(Earlham College)로 편입하여 1958년 수학 학사 학위를 취득하고 철학을 부전공했다. 그녀는 얼햄 칼리지의 수학과 학과장이었던 플로렌스 롱(Florence Long)이 추상 수학과 학문적 경력을 쌓도록 격려해 준 덕분이라고 공돌렸다. 그녀는 1958년 6월 제임스 콕스 해밀턴(James Cox Hamilton)과 결혼했으며, 이들의 딸 로런(Lauren)은 다음 해에 태어났다.
날씨, 카오스, 그리스어와 라틴어
컴퓨터 분야에서의 첫 직장은 1959년 중반부터 매사추세츠 공과대학교(MIT) 기상학과의 에드워드 노턴 로런츠(Edward Norton Lorenz) 밑에서 LGP-30 및 PDP-1 기계를 위한 일기 예보 소프트웨어를 작성하는 것이었다. 로런츠는 나중에 카오스 이론이 된 작업에 대한 그녀의 기여를 인정했다. 1961년부터 1963년까지 매사추세츠 공과대학교 링크스 랩(MIT Lincoln Laboratory)에서 반자동 지상 방공 시스템(Semi-Automatic Ground Environment)을 위한 AN/FSQ-7 프로토타입을 프로그래밍했는데, 거기서 그녀는 주석이 그리스어와 라틴어로그 악명 높게 난해하게 작성된 프로그램을 건네받았고, 그것을 작동시킨 최초의 인물이 되었다. 두 일자리 모두 그녀를 정의할 공통된 특징을 공유했다. 즉, 아무도 다루지 못할 시스템이 그녀에게 주어졌다는 것이다.
계측 연구소
1965년 그녀는 아폴로 계획을 위해 고용된 최초의 프로그래머이자 최초의 여성 프로그래머로서 매사추세츠 공과대학교 계측 연구소(Instrumentation Laboratory, 나중의 찰스 스타크 드레이퍼 실험실〔Charles Stark Draper Laboratory〕)에 합류했다. 그녀는 소프트웨어 공학 부서의 책임자로 승진하여 사령선과 달 착륙선 모두에 탑재된 아폴로 유도 컴퓨터의 온보드 비행 소프트웨어를 담당했으며, 이후 스카이랩 시스템을 담당했다. 이것은 두 번째 기회가 없는 코드였다. 즉 패치도 없고, 하강 궤도에서의 재부팅도 없으며, 일단 발사대를 떠나면 기계에 손을 댈 방법이 없었다.
1202
해밀턴의 해답은 오류를 예외가 아니라 설계 가정으로 취급하는 것이었다. 그녀의 소프트웨어에는 오류 감지 및 복구 루틴이 포함되었으며, 결정적으로 “우선순위 표시” 체계가 포함되었다. 컴퓨터가 과부하 상태가 되면 우선순위가 낮은 작업을 중단하고 착륙에 필요한 기능을 유지하는 방식이었다. 그녀는 또한 소프트웨어의 처리 지연을 고려하여 우선순위 표시를 본 우주비행사들이 5를 세도록 절차를 설계함으로써 루프의 인간적 측면까지 철저히 고려했다.
1969년 7월 20일 메커니즘은 정확히 설계된 대로 작동했다. 경보가 울리고, 컴퓨터는 잃어도 되는 부분을 버렸으며, 미국 항공우주국 임무 통제 센터의 컴퓨터 엔지니어 잭 가먼(Jack Garman)이 코드를 인식하고 “가, 가!”(Go, go!)를 외쳤다. 이글호가 착륙했다.
학문의 이름을 짓다
해밀턴은 아폴로 초기 시절에 “소프트웨어 공학”(software engineering)이라는 용어를 정립한 공로를 인정받고 있다. 그녀의 목적은 서술적인 것만큼이나 관할적인 것이었다. “나는 하드웨어 및 기타 종류의 엔지니어링과 구분하기 위해 ‘소프트웨어 공학’이라는 용어를 사용하기 시작했습니다.” 그녀는 설명했다. “그러면서도 각 유형의 엔지니어링을 전체 시스템 엔지니어링 프로세스의 일부로 취급했습니다.” 하드웨어 전문가들은 감명받지 않았다. “오랫동안 계속되는 농담이었습니다.” 그녀는 회상했다. “그들은 나의 과격한 아이디어에 대해 나를 놀리는 것을 좋아했습니다.” 그 농담은 이제 수천만 명의 사람들을 고용하는 산업의 이름이 되었다.
사실 이전의 개발
그는 남은 생애 동안 그 함의를 추구하는 데 보냈다. 1976년 그녀는 아폴로가 가르쳐 준 오류 방지 방법을 형식화하기 위해 세이딘 젤딘(Saydean Zeldin)과 함께 고차 소프트웨어(Higher Order Software)를 공동 창립했다. 그들의 USE.IT 제품은 우주 왕복선과 공군의 ICAM 프로젝트를 포함한 정부 프로그램을 지원했다. 1986년 3월 그녀는 매사추세츠주 케임브리지에 해밀턴 테크놀로지스(Hamilton Technologies)를 설립했으며, 거기서 “사실 이전의 개발”(development before the fact)이라고 불렀던 패러다임을 중심으로 범용 시스템 언어(Universal Systems Language)와 001 툴 스위트를 개발했다. 이는 테스트 중에 오류를 사냥하는 대신 설계 순간에 오류가 불가능해야 한다는 주장이다.
인정은 천천히, 그리고 한꺼번에 찾아왔다. 1986년 오거스타 에이다 러브레이스 상(Augusta Ada Lovelace Award); 2003년 미국 항공우주국 예외적 우주 행위 상(NASA Exceptional Space Act Award, 기관 역사상 개인 최대 금액인 37,200달러); 2016년 버락 오바마(Barack Obama) 대통령으로부터 받은 대통령 자유 메달(Presidential Medal of Freedom); 2017년 컴퓨터 역사 박물관 펠로 상(Computer History Museum Fellow Award); 2019년 워싱턴 상(Washington Award); 2022년 국립 항공 명예의 전당(National Aviation Hall of Fame) 헌액.
마거릿이 천재라고 불리는 이유
그 재능은 그녀의 분야가 생각하는 방식의 구체적인 전도이다. 1960년대에 소프트웨어는 작동해야 하는 지침으로 이해되었으며, 오류는 나중에 발견되어야 할 유감스러운 사건으로 취급되었다. 해밀턴은 실패를 주요 설계 대상으로 취급했다. 시스템을 뒷받침하는 가정이 더 이상 유지되지 않을 때 시스템은 무엇을 해야 하는가? 우선순위 표시는 그 사고의 가장 명확한 인공물이다. 그것은 방지할 수 없는 과부하를 방지하지 못하며, 아무도 아직 경험하지 못한 조건에서 기계가 단 하나의 중요한 일을 계속하기 위해 기꺼이 포기해야 할 것이 무엇인지 사전에 결정한다. 그것은 기술적인 움직임일 뿐만 아니라 철학적 움직임이기도하다. 그녀의 두 번째 주장은 개념적 저작권이다. “소프트웨어 공학”이라는 이름을 붙이면서도 그것 때문에 조롱을 받은 것은 전체 직업군이 스스로를 이해하는 방식을 재조직했다.
정직한 자격요건은 다음과 같다. 그녀의 영예 기록은 방대하지만, 공식적으로 “천재”(genius)라는 단어가 적용된 것은 보여주지 않으며, 결과에 대한 메달을 보여준다. 아폴로 11호의 구조는 단독 행위가 아니라 시스템이었다. 그녀의 소프트웨어가 경보를 울렸지만, 잭 가먼이 코드를 인식해야 했고, 비행 통제관이 가라고 말해야 했으며, 이 설계는 우주비행사들이 인간의 절차를 따르는 것에 의존했다. 그리고 산업은 그녀의 방법을 넘어서 그녀의 단어를 더 완벽하게 채택했다. “소프트웨어 공학”은 보편적인 반면, “사실 이전의 개발”은 여전히 전문가용으로 남아 있다. 그녀의 천재성은 그녀가 그것을 해결하기 위해 만든 모든 도구보다 오래 살아남은 문제의 프레이밍에서 가장 잘 찾을 수 있다.
유산
그녀가 지휘한 코드는 “1202 경보”가 묘비가 아니라 승리가 된 이유이다. 더 큰 유산은, 소프트웨어가 엔지니어링되고, 공차를 유지하며, 우아하게 실패할 것으로 기대되는 것이라는 가정이다 — 이제는 너무 표준적이어서 보이지도 않을 정도다. 그녀는 이름과 첫 번째 위대한 증거를 모두 제공했다.

