Copyright © Origin Corp. All Rights Reserved.
v1.0.10
로딩 중입니다
행복에는 덕이면 충분하다안티스테네스
네 살짜리 아이가 키보드를 아무렇게나 눌렀을 뿐인데, 가상의 우주선이 통째로 먹통이 됐다.
1960년대, 마거릿 해밀턴은 MIT 계측연구소에서 아폴로 우주선의 비행 소프트웨어를 만들고 있었다.
보육 시설이 없던 시절, 그녀는 가끔 어린 딸 로렌을 연구소에 데려왔다.
그날도 로렌은 엄마 옆에서 시뮬레이터 앞에 앉았다.
시뮬레이터에는 DSKY라는 인터페이스가 있었다.
오늘날로 치면 스마트폰 화면과 키패드가 하나로 합쳐진 것인데, 비행 중엔 절대 눌러선 안 되는 버튼들이 아무 보호막 없이 나란히 놓여 있었다.
로렌이 그중 하나를 눌렀고, 비행 전 지상에서만 쓰는 프로그램인 'P01'이 실행됐다.
시뮬레이터는 즉시 멈췄다.
해밀턴은 곧바로 보고서를 썼다.
"실제 비행 중에도 이런 일이 생길 수 있습니다. 안전장치가 필요합니다."
NASA의 답변은 단호했다.
"우주비행사는 완벽하게 훈련받은 사람들입니다. 그런 실수는 하지 않아요."
결국 허락받은 건 경고 메모를 문서 어딘가에 끼워 두는 것뿐이었다.
그리고 아폴로 8호 비행 중, 짐 러벨이 P01을 실수로 눌렀다.
항법 데이터가 전부 날아갔다.
아이의 장난이라고 웃어넘긴 바로 그 오류였다.
지금 전 세계에서 가장 흔한 직업 타이틀 중 하나인 '소프트웨어 엔지니어'를 처음 입 밖에 꺼낸 사람은, 그 말 때문에 웃음을 샀다.
1960년대에 '진짜 엔지니어링'은 손에 잡히는 것을 만드는 일이었다.
회로를 납땜하고, 금속을 깎고, 배선을 연결하는 것.
그에 비해 프로그래밍은 타이피스트나 하는 보조 작업 정도로 여겨졌다.
'소프트웨어'라는 단어 자체가 농담처럼 쓰이던 시절이었다.
해밀턴이 자신의 작업을 "소프트웨어 엔지니어링"이라고 부르기 시작했을 때, 동료 하드웨어 엔지니어들과 관리자들은 피식 웃었다.
유튜버나 인플루언서가 처음 직업으로 불렸을 때의 그 어색함처럼, 아무도 진지하게 받아들이지 않았다.
하지만 해밀턴이 그 단어를 쓴 건 허세가 아니었다.
소프트웨어도 하드웨어만큼 엄밀하고 체계적으로 다뤄야 한다는 주장이었다.
설계에도 규율이 필요하고, 테스트에도 기준이 있어야 하며, 실수를 막는 구조가 코드 안에 처음부터 들어가 있어야 한다는 것.
그 주장은 결국 세상을 바꿨다.
웃음거리였던 그 단어는 오늘날 수천만 명이 자기 명함에 새기는 타이틀이 됐다.
달 표면까지 3분, 컴퓨터 화면에 아무도 본 적 없는 경보 번호가 떴다.
1969년 7월 20일.
아폴로 11호 달착륙선 이글이 고도 약 12,000미터에서 하강하고 있었다.
갑자기 컴퓨터가 '1202'라는 경보를 뱉었다.
닐 암스트롱과 버즈 올드린은 그 번호가 무슨 의미인지 몰랐다.
휴스턴 관제센터도 처음 보는 코드였다.
원인은 랑데부 레이더였다.
달 착륙 후 궤도선과 다시 합류하기 위한 장치인데, 착륙 하강 중에도 불필요한 데이터를 컴퓨터로 계속 쏴보내고 있었다.
컴퓨터는 처리할 일이 너무 많아 과부하에 걸렸다.
여기서 해밀턴 팀의 설계가 살아났다.
그들은 컴퓨터에 우선순위 스케줄링 시스템을 심어 놓았다.
지금 스마트폰이 앱을 너무 많이 열었을 때 자동으로 백그라운드 작업을 닫아주는 것과 같은 원리다.
다만 이 경우, 버벅거림의 대가는 우주비행사 두 명의 목숨이었다.
컴퓨터는 스스로 판단했다.
덜 중요한 작업을 전부 버리고, 착륙에 꼭 필요한 연산만 계속 돌렸다.
경보를 울리면서도, 제 할 일은 했다.
휴스턴 관제센터에서 당시 26세의 소프트웨어 엔지니어 스티브 베일스가 판정을 내렸다.
"GO."
착륙은 계속됐다.
이 우선순위 시스템은 NASA가 한때 "우주비행사는 실수하지 않는다"며 불필요하다고 했던 바로 그 설계 철학에서 나왔다.
기계가 스스로 살아남은 것이다.
코드는 눈에 보이지 않는다. 그래서 그녀는 그것을 종이에 인쇄해 자기 옆에 쌓았다.
아폴로 비행 소프트웨어 완성 후, 해밀턴은 소스코드 출력물 옆에 섰다.
종이 더미는 그녀의 키를 넘었다.
약 14만 줄의 코드, 350명이 넘는 인원이 참여한 프로젝트의 결과물이었다.
그 사진 한 장은 반세기가 지난 지금도 전 세계 개발자들이 가장 많이 공유하는 이미지 중 하나다.
손에 잡히지 않는다는 이유로 하찮게 여겨지던 소프트웨어의 무게를, 종이 탑 하나가 물리적으로 증명해버렸다.
2016년, 버락 오바마 대통령은 해밀턴에게 미국 민간인이 받을 수 있는 최고 영예인 대통령 자유 훈장을 수여했다.
해밀턴은 이후 회사를 세워 아폴로에서 개발한 에러 방지 설계 원칙을 'USL', 즉 범용 시스템 언어라는 체계로 발전시켰다.
소프트웨어를 처음부터 실수가 불가능한 구조로 만드는 방법론이다.
딸의 장난을 무시하지 않은 것.
웃음거리가 된 이름을 포기하지 않은 것.
없애려 했던 코드를 끝까지 남긴 것.
그 선택들이 쌓여서 1969년 7월 20일, 이글은 달에 내려앉았다.
NASA가 "불필요하다"고 지웠어야 했던 코드가 작동하면서.
TTS 음성이 없어요.
아래 버튼으로 나레이션을 생성할 수 있습니다.
0
개