Pull to refresh

30 лет программирования в лицах

Reading time 5 min
Views 2.1K
Original author: Fun boy
Статья без начала, в которой автор рассказывает о невыносимых типажах людей, с которыми он работал за последние 30 лет, с эпилогом переводчика

Я закончил колледж 30 лет назад. Моей первой работой была разработка испытательной аппаратуры для Univac. Это были бы замечательные времена, если бы не…

Грег Скрытный


Здесь я впервые столкнулся с человеком, который считал, что не помогать другим и не отвечать на вопросы — это некая форма гарантии занятости — его занятости.

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


В 1984 году я ушел из команды Univac в компанию, которая занималась автоматизацией складов. Это была лучшая работа за время моей карьеры, если не считать…

Ион Некомпетентный


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

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

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

Гэри Придумано не здесь


Скорее всего, вы работали с Грегом или Ионом, но держу пари, вы никогда не встречали Гэри!

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

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

Я поинтересовался у Гэри, что происходит и почему. Оказалось, что однажды Гэри нашел баг в ассемблере, и с тех пор ему не доверял. Он выучил наизусть коды операций для процессора 6809, писал свои программы в шестнадцатеричном коде, вычислял свои собственные jump offset, сам выполнял преобразования в ASCII и вводил свои коды в отладчик, который сохранял образ памяти на винчестер.

Точно так же Гэри не доверял операционным системам. Он написал свою собственную для устройства, с которым он работал — все низкоуровневые процедуры доступа к винчестеру и монитору, все математические библиотеки, все в шестнадцатеричных кодах.

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

Роджер Фанат Рефакторинга


Мы с Роджером очень разные: он левша и художник, и я уверен, что его шарики вертятся иначе, чем мои. Он замечал вещи, которые я пропускал, но вещи, очевидные для меня, он не понимал вообще.

За много лет он привык работать в одиночку, но однажды его назначили руководителем команды из шести человек, включая Иона Некомпетентного. Как обычно, Ион провалил свое задание, потратив на это два месяца; после его перевода в другой департамент я переписал его код за два дня. После этого код попал в руки Роджера, который решил, что код недостаточно эффективен. Следует отметить, что ни скорость выполнения, ни используемая память не имели решающего значения для моей задачи — но для Роджера это было непринципиально.

Мой исходный код был изящным, легко читаемым и легко отлаживаемым. После рефакторинга он обзавелся множеством битовых хаков и других низкоуровневых оптимизаций, нулевой читаемостью и массой багов.
Кроме того, Роджер потратил неделю на рефакторинг моего кода и еще неделю — на поиск и исправление ошибок, хотя у него было свое невыполненное задание.

Тем временем остальные ознакамливались с кодом Роджера. Это оказалось напрасной тратой времени. Роджер постоянно реорганизовывал и переписывал свой код — потому что он придумал лучший способ его написать или просто лучшее название для переменной. Это сводило нас с ума.

Когда проект запаздывал примерно на месяц, президент компании потребовал демо-версию. Мы сделали усилие и собрали версию, работающую в ручном режиме. На вопрос президента о сроках реализации автоматического режима Роджер ответил «О, несколько недель». О чем он думал? Мы предполагали, что это займет не меньше трех месяцев, в действительности до окончания проекта прошло полгода. Правда, в уже сданной рабочей версии были найдены ошибки, клиент был недоволен, и Роджер получил еще полгода на доведение проекта до ума.

Я? Я сбежал из этого отдела при первой возможности.

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

Комментарий переводчика.
Эта статья заинтересовала меня тем, что мне трудно решить, согласна ли я с автором.
С одной стороны, действительно тяжело работать с людьми, с которыми нельзя обсудить твои идеи, которые все время заваливают свое задание или лезут в твой код без согласования с тобой, не говоря уже о неподражаемом Гэри :-)
С другой — записки автора относятся к 80-ым годам. В начале развития индустрии ИТ каждый программист был гением и энтузиастом своего дела, и команда была именно командой единомышленников, которые не раздражались друг на друга из-за пустяков, если работа шла, и были вынуждены притираться друг к другу, потому что альтернатив не было. Сейчас индустрия ИТ разрастается и взрослеет, и состав людей, работающих в ней, становится более усредненным. Программисты перестали быть яркими личностями и творческими бунтовщиками, став просто людьми, выбравшими этот вид деятельности — играющими в игры и живущими не только работой. Гении будут продолжать раздражать остальных, оставаясь незаменимыми, а остальным было бы неплохо сделать небольшое усилие, чтобы не раздражать друг друга.
Вот было бы здорово, а?
Tags:
Hubs:
+87
Comments 75
Comments Comments 75

Articles