|
Русский программист и пр.
Любой русский программист, после пары минут чтения кода, обязательно вскочит
и
произнесет, обращаясь к себе: переписать это все нафиг. Потом в нем
шевельнется
сомнение в том, сколько времени это займет, и остаток дня русский
программист
потратит на то, что будет доказывать самому себе, что это только кажется,
что
переписать это много работы. А если взяться и посидеть немного, то все
получится. Зато код будет красивый и правильный. На следующее утро русский
программист свеж, доволен собой и без единой запинки докладывает начальству,
что переписать этот кусок займет один день, не больше. Да, не больше. Ну, в
крайнем случае, два, если учесть все риски. В итоге начальство даст ему
неделю
и через полгода процесс будет успешно завершен. До той поры, пока этот код
не
увидит другой русский программист.
А в это время, в соседних четырех кубиках, будет ни на секунду не утихать
работа китайских программистов, непостижимым образом умудряющихся прийти
раньше
русского программиста, уйти позже, и при этом сделать примерно втрое меньше.
Эта четверка давно не пишет никакого кода, а только поддерживает код,
написанный в свое время индусом, и дважды переписанный двумя разными
русскими.
В этом коде не просто живут баги. Здесь их гнездо. Это гнездо постоянно
воспроизводит себя при помощи любимой китайской технологии реиспользования
кода
- copy/paste. Отсюда баги расползаются в разные стороны посредством
статических
переменных и переменных, переданных по ссылке (поскольку, китайский
программист
не может смириться с неудобствами вызванными тем, что он не может изменить
значение внешней переменной переданной в его функцию модулями, которые
переписывает русский программист). Вспоминая об этой функции русский
программист, как правило, на время теряет дар английской речи, и переходит к
какой-то помеси русского и китайского. Он давно мечтает переписать весь
кусок,
над которым работают китайцы, но у него нет времени.
На китайцах висят серьезные баги, о которых знает начальство и постоянно их
торопит. Китайцы торопливо перевешивают баги друг на друга, поскольку знают,
что попытки их починить приведут к появлению новых, еще худших. И в этом они
правы. Разобраться в том, в каком порядке меняются статические переменные, и
как приобретают свои значения, способен только один человек на фирме -
индус.
Но он пребывает в медитации. Поэтому, когда всю четверку уволят во время
сокращения... А кого еще увольнять? Русский - еще не переписал свой кусок, а
индус - главная ценность фирмы - он редко обращает внимание на проект, но
когда
обращает, все понимают, что так как он, архитектуру никто не знает. Так вот,
когда китайцев увольняют, у их кода возможны две основные судьбы. Первая -
он
попадет к русским, и его перепишут. Вторая - он попадет к местному,
канадскому
программисту.
О, канадский программист это особый тип. Он, ни на минуту не задумываясь,
как
рыцарь без страха и упрека, бросится фиксить самый свирепый баг китайского
кода. Этот Баг живет там уже три года, и китайцы уже четырежды (каждый по
разу)
сообщали начальству, что он пофиксен. Но Баг каждый раз возвращался, как
Бетмен
в свой Готхем.
Итак, канадский программист сделает то, чего китайцы не рисковали делать в
течении трех долгих лет. Он, при помощи дебагера, отследит место, где
статическая переменная приняла значение -1 вместо правильного 0, и
решительным
движением заведет рядом вторую переменную с правильным значением. Баг
погибнет
в неравной схватке с канадским программистом. Но победа будет достигнута
тяжелой ценой. Работать перестанет все, включая только что переписанный
русским
программистом код. Это повергнет русского программиста в задумчивость на
целых
два дня, после чего он сделает, в общем-то, предсказуемый вывод о том, что
дизайн с самого начала был неправильным, и все надо переписать. На это нам
нужна неделя. Да, неделя, не больше.
Канадский программист смело бросится налаживать все, и станет еще хуже, хотя
казалось бы... Эта суета выведет из медитации индуса, который придумает и
вовсе
гениальное решение - отбранчить код. Согласно его плану, мы теперь будем
поддерживать две версии одного и того же кода - одну работающую, но с Багом,
другую без Бага, но не работающую. Русский программист, услышав об этом
плане,
сломает линейку об стол и дома обзовет жену дурой, но на митинге возразить
не
решится.
К счастью, все это не сильно влияет на дела фирмы, поскольку продукт
продается
и так. Поэтому менеджмент ходит в целом довольный и не устает напоминать
всем,
что они отобраны как лучшие среди лучших. И что мы давно доказали свою
способность выпускать продукт тем, что выпускаем его иногда.
|