В 1960-е программирование ещё трудно было назвать полноценной инженерной дисциплиной. Аппаратное обеспечение воспринимали как «настоящую» технику, а программный код — скорее как обслуживающую часть системы. Хэмилтон настойчиво использовала выражение «software engineering», добиваясь признания того, что сложные программы требуют такой же инженерной ответственности, проектирования и проверки, как любой физический механизм.
Для Apollo эта мысль оказалась жизненно важной.
К концу 1960-х Хэмилтон руководила командами, разрабатывавшими бортовое ПО командного и лунного модулей; над программами Apollo работали более 400 человек. Именно тогда появилась ставшая знаменитой фотография, где Хэмилтон стоит рядом с огромной стопкой распечаток программного обеспечения почти в человеческий рост.
Главным принципом её команды была способность системы работать не только тогда, когда всё идёт по плану.
Ещё до лунной посадки Хэмилтон настаивала, что программа должна уметь защищаться от человеческих ошибок. Поводом стал случай с её маленькой дочерью Лорен, которая во время игры на симуляторе запустила неподходящую программу и обрушила систему. Хэмилтон предложила защиту от подобного сценария, но сначала получила ответ: астронавты слишком хорошо подготовлены и такой ошибки не совершат.
Во время Apollo 8 астронавт Джим Ловелл случайно сделал практически то же самое.
После этого защитные механизмы в программу всё-таки встроили.
Самый знаменитый момент наступил 20 июля 1969 года, когда Apollo 11 готовился к посадке.
Компьютер лунного модуля оказался перегружен и начал выдавать ошибки 1201 и 1202. Однако программное обеспечение было устроено так, чтобы в условиях перегрузки самостоятельно отбросить менее важные процессы и сохранить задачи, критические для посадки.
Система не пыталась делать всё.
Она понимала, что в этот момент важнее всего.
Центр управления полётами решил продолжать спуск, и через несколько минут «Орёл» сел на поверхность Луны.
Позднее Хэмилтон создала две собственные компании и продолжила разрабатывать методы построения надёжных программных систем. В 2016 году Барак Обама вручил ей Президентскую медаль Свободы. В формулировке награды отмечалось, что её архитектура программного обеспечения помогла человечеству сделать тот самый «гигантский скачок».
Сегодня знаменитая стопка распечаток рядом с молодой женщиной в очках выглядит почти забавно: тысячи страниц кода для компьютера, возможности которого несопоставимы даже с обычным современным телефоном.
Но за этой фотографией была очень современная идея.
Хорошая технология — не та, которая никогда не сталкивается с ошибкой.
Хорошая технология должна быть готова к тому, что человек ошибётся, техника даст сбой, обстоятельства изменятся — и всё равно сохранить главное.