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