Читаем Кодеры за работой. Размышления о ремесле программиста полностью

Так я стал чем-то вроде робота: если мой пейджер запищал, значит, возникла проблема и нужно срочно выяснять. Немыслимо, но не имея клочка бумаги под рукой, по телефону-автомату на парковке я мог разобраться в восьмеричных адресах и в конце концов сказать парням на том конце провода: «ОК, теперь вводите такой-то адрес и жмите RUN», — и все начинало работать. Черт меня возьми, если я сейчас понимаю, как мне это удавалось. Но удавалось. Я следил за нашей системой разделения времени добрых два или три года.

Сейбел: Наверное, вам приходилось писать значительную часть кода самому.

Козелл: Так и было. Операционная система была еще не готова, когда я принял проект. Когда Стив Вейсс и Боб Морган уволились, чтобы учиться, она была полна багов и просто недописанных кусков. Мне пришлось доделывать работу за них, и одна из главных вещей, которым я научился в BBN, — как заставлять такие программы работать.

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

Так я и заслужил свою репутацию. Я знал, что мой босс и многие коллеги считают меня великим отладчиком. Отчасти это так и было. Но только отчасти.

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

Иногда попадались такие участки кода — обычно как раз те, которые другим ну никак не давались, — на которые я смотрел и говорил: «Тут все слишком запутанно».

Так что я еще раз читал исходную задачу и переписывал код с нуля. Некоторым из моих коллег, потрясающим программистам, например Уиллу Кроутеру, это не нравилось. Они считали, что таким образом можно, исправив в коде 2 ошибки, добавить туда 27 новых. Но у меня все получалось. Я мог полностью переписать программу, иначе организовав ее, чем это сделал автор, потому что имел собственное видение. Обычно так было проще, во всяком случае для меня. И обновленная программа работала.

Вот так я и заработал свою репутацию, исправляя ошибки, которые больше никто не мог исправить. Хорошо, что меня никогда не спрашивали, как я это делал. Потому что честный ответ, как правило, был: «Я недостаточно разобрался в коде, поэтому просто взял и написал новый».

Я много раз делал так с системой разделения времени для PDP-1. Там были фрагменты кода, при взгляде на которые я понимал, что они либо не работают так, как должны, либо вообще написаны «криво». Так что я их переписывал. Если я не вылетел с работы, то только благодаря хорошей репутации. Если ты в таких вещах недостаточно хорош, то результатом твоей работы будет хаос. Но если ты хорош, люди будут думать, что ты умеешь даже больше, чем на самом деле.

Сейбел: Уход из MIT был трудным решением?

Козелл: Нет. Оглядываясь назад, я удивляюсь, насколько просто это вышло. Я ненавидел учебу, она меня бесила. MIT — место, где испытываешь очень сильное давление. BBN после этого была просто землей обетованной. Это было чудесно. Сотрудники играли с компьютерами, обстановка в компании была безмятежной. Это было похоже на проект MAC даже больше, чем сам проект MAC. В те времена человек запросто брал на работу свою собаку. Так что по коридорам все время бегали домашние питомцы. Ну, а их хозяева работали днем и ночью.

Я начал работать на полставки, потому что, когда учился в MIT, у меня практически всегда была работа на полставки. И сразу же почувствовал себя на работе, как дома. Просто сам не мог в это поверить. Наплевав на учебу, я ушел из института и устроился на полную ставку. Поработав в BBN, я успокоился и лучше разобрался в себе. Так что следующей осенью восстановился в институте и вернулся к учебе. Вот как это было.

Сейбел: Как вы думаете, обучение в MIT было хорошим дополнением к вашему практическому опыту?

Козелл: Курсы программирования, которые я посещал, будучи старшекурсником MIT, были полезны для понимания общих принципов, но мало чему научили меня в практическом смысле. Работать я учился под руководством коллег в BBN. Целенаправленно меня учил, пожалуй, только Стив Вейсс. Но я понемногу набирался знаний и умений от всех.

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

Перейти на страницу:

Похожие книги

Адмирал Советского Союза
Адмирал Советского Союза

Николай Герасимович Кузнецов – адмирал Флота Советского Союза, один из тех, кому мы обязаны победой в Великой Отечественной войне. В 1939 г., по личному указанию Сталина, 34-летний Кузнецов был назначен народным комиссаром ВМФ СССР. Во время войны он входил в Ставку Верховного Главнокомандования, оперативно и энергично руководил флотом. За свои выдающиеся заслуги Н.Г. Кузнецов получил высшее воинское звание на флоте и стал Героем Советского Союза.В своей книге Н.Г. Кузнецов рассказывает о своем боевом пути начиная от Гражданской войны в Испании до окончательного разгрома гитлеровской Германии и поражения милитаристской Японии. Оборона Ханко, Либавы, Таллина, Одессы, Севастополя, Москвы, Ленинграда, Сталинграда, крупнейшие операции флотов на Севере, Балтике и Черном море – все это есть в книге легендарного советского адмирала. Кроме того, он вспоминает о своих встречах с высшими государственными, партийными и военными руководителями СССР, рассказывает о методах и стиле работы И.В. Сталина, Г.К. Жукова и многих других известных деятелей своего времени.Воспоминания впервые выходят в полном виде, ранее они никогда не издавались под одной обложкой.

Николай Герасимович Кузнецов

Биографии и Мемуары
100 великих гениев
100 великих гениев

Существует много определений гениальности. Например, Ньютон полагал, что гениальность – это терпение мысли, сосредоточенной в известном направлении. Гёте считал, что отличительная черта гениальности – умение духа распознать, что ему на пользу. Кант говорил, что гениальность – это талант изобретения того, чему нельзя научиться. То есть гению дано открыть нечто неведомое. Автор книги Р.К. Баландин попытался дать свое определение гениальности и составить свой рассказ о наиболее прославленных гениях человечества.Принцип классификации в книге простой – персоналии располагаются по роду занятий (особо выделены универсальные гении). Автор рассматривает достижения великих созидателей, прежде всего, в сфере религии, философии, искусства, литературы и науки, то есть в тех областях духа, где наиболее полно проявились их творческие способности. Раздел «Неведомый гений» призван показать, как много замечательных творцов остаются безымянными и как мало нам известно о них.

Рудольф Константинович Баландин

Биографии и Мемуары
100 великих интриг
100 великих интриг

Нередко политические интриги становятся главными двигателями истории. Заговоры, покушения, провокации, аресты, казни, бунты и военные перевороты – все эти события могут составлять только часть одной, хитро спланированной, интриги, начинавшейся с короткой записки, вовремя произнесенной фразы или многозначительного молчания во время важной беседы царствующих особ и закончившейся грандиозным сломом целой эпохи.Суд над Сократом, заговор Катилины, Цезарь и Клеопатра, интриги Мессалины, мрачная слава Старца Горы, заговор Пацци, Варфоломеевская ночь, убийство Валленштейна, таинственная смерть Людвига Баварского, загадки Нюрнбергского процесса… Об этом и многом другом рассказывает очередная книга серии.

Виктор Николаевич Еремин

Биографии и Мемуары / История / Энциклопедии / Образование и наука / Словари и Энциклопедии