Хабрахабр

[Перевод] Маргарет Гамильтон: «Они беспокоились, что мужчины могут взбунтоваться; но этого не случилось»

Новатор в области информатики рассказывает о том, как руководила разработкой программного обеспечения для посадки миссии «Аполлон-11» на Луну


Барак Обама вручает Маргарет Гамильтон Президентскую медаль Свободы в 2016-м

Молодая женщина-программист из MIT, с маленьким ребёнком, управляла командой, создававшей бортовое полётное ПО для миссий «Аполлон», включая и "Аполлон-11". Пионер информатики Маргарет Гамильтон сыграла ключевую роль в посадке астронавтов на Луну, впервые произошедшей 20 июля 1969 года, 50 лет назад, а также в безопасном возврате их домой спустя несколько дней. Её строгий подход к программированию оказался настолько успешным, что неизвестно ни об одной программной ошибке, случавшейся во время пилотируемых миссий «Аполлон». Эта компьютерная система была одной из сложнейших для своего времени. В 2017 году она стала одной из немногих женщин, работавших в НАСА, увековеченных в виде фигурки LEGO. «Она символизирует поколение невоспетых женщин, помогавших отправлять человечество в космос», — сказал президент Барак Обама в 2016 году, когда он наградил Гамильтон президентской медалью Свободы, высочайшей гражданской наградой в США. Когда вы начинали работу, учёных степеней по информатике не существовало… В 50-ю годовщину первого прилунения Гамильтон, которой исполнилось уже 82 года, вспоминает о своей новаторской работе с вычислительной техникой.
Почему вы занялись программированием?

Мы оба могли поступить в аспирантуру – я по абстрактной математике, а мой муж по химии – но я год проработала учителем в старших классах, у нас появилась дочка, и муж решил, что хочет получать юридическое образование в Гарварде. Я вышла замуж в 1958 году, сразу после получения диплома по математике и дополнительной степени по философии в колледже Эрлхэма. Работа была в лаборатории профессора Эдварда Лоренца, отца теории хаоса, и заключалась в разработке системы, предсказывавшей погоду. Я нашла работу, чтобы обеспечивать семью в находившемся неподалёку MIT. Мы наняли няньку, чтобы она заботилась о дочке. Ему нужны были выпускники с математическим образованием. Информатика и программирование ещё не существовали в виде отдельных дисциплин; программисты учились прямо на работе. Там я и узнала, что такое компьютер и как писать ПО. Любовь Лоренца к экспериментам с ПО оказалась заразительной, ну я и заразилась.

Как вы попали в проект «Аполлон» в 1964?

Я планировала вернуться к аспирантуре, когда мой муж увидел объявление в газете. От написания программ я перешла к обнаружению вражеских воздушных судов в лаборатории Линкольна при MIT. Лаборатория получили от НАСА контракт на создание бортового полётного ПО для проекта «Аполлон», поскольку именно она также разрабатывала и вычислительное оборудование для этого. Лаборатория измерительной аппаратуры MIT искала людей для разработки ПО для «отправки человека на Луну». Я была первым программистом и первой женщиной, нанятой ими. Меня привлекла как сама идея, так и то, что этого раньше никто не делал. А у меня уже был такой опыт. На проекте уже работали мужчины-инженеры, но они были по части электроники, и это была не их область. Думаю, что в лаборатории решили, что я справлюсь с чем-то новым.

Но потом вас постепенно повысили до руководителя команды, разрабатывающей ПО для пилотируемых космических кораблей, включая «Аполлон-11». Вы сначала работали над ПО для беспилотных миссий «Аполлон». Что входило в ваши обязанности?

В нашу задачу входила разработка ПО, которое должно было работать на каждом модуле само по себе, а также их общего ПО. Там было два бортовых компьютера – один на командном модуле «Колумбия», а другой на лунном «Орле». Однако постепенно все стали понимать, насколько сильно от него всё зависит. Сначала никто не думал, что ПО будет настолько важным вопросом. На кону были жизни астронавтов. Наша группа выросла настолько, что в итоге в команде работало около 100 программистов. И всё это должно было соответствовать железу. Нашему ПО нужно было быть чрезвычайно надёжным, и оно должно было уметь обнаруживать ошибки и восстанавливаться от них в любой момент в течение миссии.


Маргарет Гамильтон в 1969 году с листингом программного кода, разработанного её командой для миссий «Аполлон»

Были ли у вас проблемы при совмещении работы программистом и материнства?

Однажды мы были вместе, и я занималась симуляцией миссии полёта на Луну. Часто по вечерам или на выходных я брала свою маленькую дочку, Лорен, с собой на работу. Она начала жать на клавиши, и внезапно запустила симуляцию. Ей нравилось меня имитировать, и играть в астронавта. Она выбрала программу, которая должна была выполняться перед запуском – но при этом симуляция уже «летела» на Луну. Потом понажимала ещё клавиш, и симуляция упала. Я подумала: боже мой, это ведь может случайно произойти и во время реальной миссии. У компьютера было так мало памяти, что он стёр все данные по навигации, необходимые для полёта. И в процессе полёта уже в следующей миссии – «Аполлон-8» – один из астронавтов на борту случайно сделал именно то, что сделала Лорен. Я предложила изменить программу, чтобы предотвратить возможность запуска предстартового сегмента во время полёта.
Однако начальство из MIT и НАСА решило, что астронавты слишком хорошо натренированы, чтобы так ошибиться. Я подняла бучу и настояла, чтобы миссию перенастроили. Ошибка Лорен! После этого они уже, конечно, позволили внести правки в программу.

Однако они сделали это при помощи созданной вами системы, предупреждавшей о чрезвычайных ситуациях в полёте. Большую часть славы за прилунение забрали себе астронавты. Как сказал Обама: «У наших астронавтов не было много времени, но, к счастью, у них была Маргарет Гамильтон».

Я видела, как всё это происходило, стоя в центре управления в MIT. Незадолго до посадки на приоритетном дисплее компьютера появились предупреждения о чрезвычайной ситуации, и компьютер оказался перегруженным. Быстро стало ясно, что ПО не только информировало людей о наличии проблемы в оборудовании, но и компенсировало их – перезагружало и переназначало задачи с наивысшим приоритетом. После этого мы воссоздали ситуацию – переключатель радара оказался в неправильном положении, и забирал себе процессорные мощности. Всех охватило облегчение, когда они сели – и что астронавты в порядке, и что ПО сработало идеально. Обнаружение ошибок и механизмы восстановления пришли на помощь.

Считалось, что это женская работа. Насколько я понимаю, в ранние дни программирования женщин там было довольно много. Так ли это было по вашему опыту?

Люди-вычислители, занимавшиеся вычислениями вручную, в подавляющем большинстве случаев были женщинами, а также много женщин использовало механические калькуляторы типа Marchant – но они не были программистами. Программирование никогда не считалось женской работой, по крайней мере, ни в одном из множества проектов, над которыми работала я. Когда я начала работать над проектом «Аполлон», в нём больше не было женщин, писавших код. Они не писали код. Мужчин всегда было гораздо больше. Затем, через пару лет, появилось немного женщин – некоторые из которых работали на меня.

Раздражало ли мужчин, что вы руководили ими?

Но этого не произошло. Когда я взяла на себя управление, один из высоких начальников сказал, что у него нет сомнений в моей компетентности, но что он беспокоится о том, что какие-то мужчины из моей группы могут поднять бунт. Мне также повезло иметь очень современного мужа, особенно для того времени. Мы более всего остального были сосредоточены на миссиях и работали плечом к плечу над решением сложных задач, стараясь успеть в критически важные сроки. Некоторые мужчины понимали равноправие.

Зачем ему понадобилось придумывать новое название? Вы изобрели, или, по крайней мере, популяризировали термин software engineering [разработка программного обеспечения, программотехника].

Хотя у нас была довольно сложная система из многих составляющих, мы не получали признания за работу в по-настоящему серьёзной области. В ранние годы «Аполлона» к программам не относились так же серьёзно, как к другим инженерным дисциплинам. Долгое время это воспринималось как шутка. От отчаяния я придумала этот термин, как бы заявляя: «Эй, мы, вообще-то, тоже инженеры». Процесс создания ПО тоже необходимо рассматривать, как инженерную дисциплину, как и в случае с железом. А потом однажды на встрече один из наиболее уважаемых гуру в области железа объяснил всем, что согласен со мной. Это был памятный момент.


Маргарет Гамильтон увековечена в виде фигурки для Lego из серии «Женщины НАСА»

Вы основали собственный бизнес, и использовали опыт для разработки более доступного и надёжного ПО. После «Аполлона» части вашего кода использовались в Skylab, первой космической станции, а потом в программе космических шатлов. Какие уроки могут вынести для себя программисты сегодня из проекта «Аполло»?

Также, что стало ясно из проекта «Аполло» – хотя работал он по-другому – что лучше определять системы заранее, чтобы минимизировать количество ошибок, вместо того, чтобы сразу выдавать кучу кода, который потом придётся исправлять патчами, которые потом тоже нужно будет патчить. Недавно мы столкнулись с системами, из-за которых самолёт падал, а пилот не понимал, что происходит. Этот урок, судя по всему, остался неусвоенным – в данном отношении сегодня ПО разрабатывают так же, как и 50 лет назад.

Недавно это изображение сопоставили с фотографией Кэти Боумен, учёным, которая помогла разработать алгоритм, создавший самое первое изображение чёрной дыры. Существует знаменитая фотография из 1969 года, где вы стоите рядом со стопкой распечатанного кода миссий «Аполлон» ростом практически с вас. Помните ли вы, как делали эту фотографию, и что вы вынесли для себя из этого сравнения? Она позирует со стопкой жёстких дисков своего проекта, и этот фотомонтаж стал вирусным.

Мы увлеклись, сгребли все листинги от «Аполлона» в моём офисе и построили эту башню. Фотографию сделал во время миссии «Аполлон-11» фотограф из MIT специально для газет. Мне не казалось, что такое сравнение – это плохо. Я пыталась найти способ удерживать её в вертикальном положении. Хотя я не завидую Боумен, ей ведь пришлось сражаться со всем сарказмом, который может распространяться в интернете. По крайней мере, они нас не прятали. В некотором смысле для женщин ситуация сегодня стала хуже.

Какой совет вы дали бы молодым женщинам, желающим построить карьеру в программировании?

И не верьте на 100% так называемым экспертам! Не давайте страху завладеть вами, и не бойтесь говорить «Я не знаю» или «Я не понимаю» – глупых вопросов не бывает.

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть