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