Игра Star Trek
Star Trek – текстовая стратегическая компьютерная игра, основанная на телесериале «Звездный путь». Игрок выступает в роли командира звездолета «Энтерпрайз», который странствует по галактике и выслеживает клингонские военные корабли в течение отведенного времени. Игра начинается с краткого текстового описания поставленной перед игроком задачи, после чего можно вводить команды. В начале каждой миссии задается то или иное количество клингонских кораблей, дружественных звездных баз и звезд, разбросанных по всей галактике. Галактика изображена в виде сетки «квадрантов» 8 на 8. Каждый квадрант также разделен на секторы – тоже сеткой 8 на 8. Количество звезд, клингонских кораблей и звездных баз в любом квадранте задается в начале игры, но их точное положение меняется каждый раз, когда игрок входит в этот квадрант.
В тот момент я был в полном восторге! Я понятия не имел о самом существовании компьютеров, тем более о том, как они работают. Я просто знал, что увидел самую потрясающую штуку на свете. Не могу сказать, что из-за этой встречи с компьютером захотел разрабатывать программное обеспечение – в те времена я и слов-то таких не знал. Я даже не представлял, что на программировании можно выстроить карьеру – в те времена это было нереально.
Тогда вузы даже и не предлагали студентам компьютерных специальностей. Я как раз поэтому и выбрал именно физику – когда я посмотрел на список курсов, мне представилось, что как раз у студентов-физиков много компьютерных классов.
Таким образом, в моем расписании оказались занятия по физике, высшей математике и вычислительной технике.
Впервые в жизни я напоролся на преграду, с которой не мог справиться.
Высшая математика оказалась мне не по зубам. Если на занятиях по физике еще было весело, то на высшей математике приходилось решать дифференциальные уравнения. Не то чтобы я не пытался учиться. Это было просто «не мое».
В университете был только один курс, где я по-настоящему блистал, и это была вычислительная техника, то бишь программирование.
Первое крупное поражение Кена: высшая математика
В те дни написание программного кода выглядело совсем иначе, чем сейчас. Я даже не видел компьютер, для которого программировал. Вместо этого нас усаживали в комнату с несколькими «устройствами подготовки данных» (УПД)[3] – мы жали на клавиши, устройства пробивали дырки в перфокартах. А потом нужно было отнести готовую пачку карт в специальное окошко, где с ними дальше работал какой-то невидимый оператор компьютера. В корзину для бумаг скидывали распечатки с ошибками компилятора или результатами работы вашей компьютерной программы, если она изволила выполниться.
Устройство подготовки данных
Чтобы написать код, мне нужно было сесть за клавиатуру УПД и набрать на этой клавиатуре компьютерную программу – по одной строке за раз. Каждая строка, которую я набирал, заполняла одну перфокарту.
Перфокарта (максимум 80 знаков на каждой карте)
Компьютерная программа представляла собой стопку перфокарт – иногда несколько сотен. Если я писал программу дома, мне нужно было приехать в университет, набрать программный код на перфокартах, передать готовую стопку карт в окошко оператору, а затем вернуться через несколько часов, чтобы проверить, работает ли программа.
По вечерам после учебы я работал. Каждый вечер, часто по многу раз за вечер, мы с Робертой заезжали в университет, чтобы посмотреть, успешно ли выполнилась моя программа. Я заглядывал в корзину с компьютерными распечатками, надеясь найти хоть одну с моим именем. Иногда мы с Робертой часами сидели и ждали, пока программа выполнится, а потом выяснялось, что я где-то допустил небольшую ошибку, и мне нужно было заменить какую-то перфокарту в стопке и снова отдать стопку оператору, и опять долго ждать результатов.
Звучит примитивно? Так оно и было. Программирование было многочасовым делом, над которым нужно было корпеть днем и ночью. Чтобы отладить программу, надо было посмотреть распечатку, которую я получал через несколько часов после того, как передал стопку перфокарт оператору. Приходилось держать несколько раздельных коробок с перфокартами для разных программ. Часто получалось так, что я отправлял свою программу оператору, ждал четыре часа, приезжал в университет и обнаруживал, что по оплошности допустил опечатку в какой-нибудь малоизвестной команде. Это значило, что мне нужно быстро исправить ошибку и заново подать перфокарты оператору – и я терял несколько часов. Но мне было все равно! Среди всех занятий в мои студенческие годы это было самое интересное.
Кстати, много лет спустя, когда я уже работал программистом-разработчиком в компании Bekins Moving and Storage, другой программист принес из компьютерного зала мою коробку с карточками, но без распечатки.
– Где моя распечатка? У меня там баг? – спросил я. Коллега ответил: «Да» и открыл коробку. Оттуда выполз таракан[4]. Шутки программистов не всегда понятны людям, далеким от IT.
Вместе с супружеством появились счета и ответственность. К моменту, как мы поженились, я закончил только первый курс университета.
Роберта все еще работала, но сказать, что у нас финансовые трудности, значило бы ничего не сказать. Роберта об этой своей работе вспоминает с немалым отвращением. До движения #metoo тогда еще оставалось несколько десятилетий.
Мистер С ‹…›, сальный и толстый немолодой мужчина, наверное, лет сорока или пятидесяти, любил заставлять меня забираться на стремянку, чтобы расставить папки по полкам. Стремянка была приставлена к высокой стене, где полки с папками шли до самого потолка. Я все еще носила короткие платья или юбки (как и большинство девушек в те времена!). Поэтому он и требовал, чтобы я лезла на стремянку и «расставляла папки» на «верхнюю полку», а он в это время стоял внизу и глядел вверх. Еще и замечания всегда делал такие двусмысленные…
Роберта Уильямс
Через несколько месяцев после свадьбы Роберта забеременела нашим сыном Диджеем. Именно эта соломинка и сломала спину верблюда окончательно. Я не мог работать сразу на нескольких работах и очно учиться в университете. Помимо того, что я руководил бригадой, продававшей газеты по домам, и готовил пиццу в заведении с едой навынос, я работал по вечерам и в выходные дни – подметал площадку автокинотеатра, где после машин оставалось достаточно мусора. Приходилось сметать грязные подгузники, попкорн и другие вещи, о которых и рассказывать не хочется.
У меня не было другого выбора, кроме как бросить учебу и искать более денежную работу на полный рабочий день. Я быстро нашел работу на заводе, где шлифовали стекловолокно. Здесь на рабочем месте нужно было носить что-то вроде космического скафандра, чтобы стеклянная пыль не попала в легкие.
Работа на фабричной производственной линии – страшная скука. В скафандре мне было не только скучно, но еще жарко, потно и неприятно. Чтобы не сойти с ума, я начал анализировать процессы и быстро придумал, как повысить производительность. Несколько недель мой участок работал почти в два раза быстрее обычного. Это вовсе не значило, что завод стал работать продуктивнее – наоборот, моя бригада маялась от безделья, а готовые изделия лежали на полу, пока следующая бригада дальше по производственной линии пыталась обработать все то, что мы им подавали. Я пошел к начальнику и спросил, нельзя ли мне поработать над оптимизацией всей линии, чтобы справиться с заторами.