Компания, разрабатывающая ПО. Взгляд изнутри
posted in Юмор | Views 244Истории собирательны и любые совпадения с реальными событиями или людьми случайны.
Любой русский программист после пары минут чтения кода обязательно вскочит и произнесёт, обращаясь к себе: переписать это все нафиг. Потом в нем шевельнется сомнение в том, сколько времени это займёт, и остаток дня русский программист потратит на то, что будет доказывать самому себе, что это только кажется, что переписать это - много работы. А если взяться и посидеть немного, то все получится. Зато код будет красивый и правильный. На следующее утро русский программист свеж, доволен собой и без единой запинки докладывает начальству, что переписать этот кусок займёт один день, не больше. Да, не больше. Ну, в крайнем случае, два, если учесть все риски. В итоге начальство даст ему неделю и через полгода процесс будет успешно завершен. До той поры, пока этот код не увидит другой русский программист.
А в это время в соседних четырёх кубиках будет ни на секунду не утихать работа китайских программистов, непостижимым образом умудряющихся прийти раньше русского программиста, уйти позже, и при этом сделать примерно втрое меньше. Эта четвёрка давно не пишет никакого кода, а только поддерживает код, написанный в свое время индусом и дважды переписанный двумя разными русскими. В этом коде не просто живут баги. Здесь их гнездо. Это гнездо постоянно воспроизводит себя при помощи любимой китайской технологии реиспользования кода - copy / paste. Отсюда баги расползаются в разные стороны посредством статических переменных и переменных, переданных по ссылке (поскольку китайский программист не может смириться с неудобствами, вызванными тем, что он не может изменить значение внешней переменной, переданной в его функцию модулями, которые переписывает русский программист).
Вспоминая об этой функции русский программист, как правило, на время теряет дар английской речи и переходит к какой-то помеси русского и китайского. Он давно мечтает переписать весь кусок над которым работают китайцы, но у него нет времени. На китайцах висят серьезные баги, о которых знает начальство и постоянно их торопит. Китайцы торопливо перевешивают баги друг на друга, поскольку знают, что попытки их починить приведут к появлению новых, еще худших.
И в этом они правы.
Разобраться в том, в каком порядке меняются статические переменные и как приобретают свои значения, способен только один человек на фирме - индус. Но он пребывает в медитации. Поэтому, когда всю четвёрку уволят во время сокращения… А кого еще увольнять? Русский - еще не переписал свой кусок, а индус - главная ценность фирмы - он редко обращает внимание на проект, но когда обращает, все понимают, что так как он, архитектуру никто не знает. Так вот, когда китайцев увольняют, у их кода возможны две основные судьбы. Первая - он попадёт к русским и его перепишут. Вторая - он попадёт к местному, канадскому программисту.
О, канадский программист - это особый тип. Он, ни на минуту не задумываясь, как рыцарь без страха и упрёка, бросится чинить самый свирепый баг китайского кода. Этот Баг живет там уже три года, и китайцы уже четырежды (каждый по разу) сообщали начальству, что он починен. Но Баг каждый раз возвращался, как Бетмен в свой Готхем. Итак, канадский программист сделает то, чего китайцы не рисковали делать в течении трех долгих лет. Он, при помощи дебагера, отследит место, где статическая переменная приняла значение -1 вместо правильного 0, и решительным движением заведет рядом вторую переменную с правильным значением. Баг погибнет в неравной схватке с канадским программистом. Но победа будет достигнута тяжелой ценой.
Работать перестанет все, включая только что переписанный русским программистом код. Это повергнет русского программиста в задумчивость на целых два дня, после чего он сделает, в общем-то, предсказуемый вывод о том, что дизайн с самого начала был неправильным, и все надо переписать. На это нам нужна неделя. Да, неделя, не больше. Канадский программист смело бросится налаживать все, и станет еще хуже, хотя казалось бы… Эта суета выведет из медитации индуса, который придумает и вовсе гениальное решение - отбранчить код. Согласно его плану, мы теперь будем поддерживать две версии одного и того же кода - одну работающую но с Багом, другую без Бага, но не работающую. Русский программист, услышав об этом плане, сломает линейку об стол и дома обзовёт жену дурой, но на митинге возразить не решится.
К счастью, все это не сильно влияет на дела фирмы, поскольку продукт продаётся и так. Поэтому менеджмент ходит в целом довольный и не устаёт напоминать всем, что они отобраны как лучшие среди лучших. И что мы давно доказали свою способность выпускать продукт тем, что выпускаем его иногда.
В продолжение темы …
Генеральный (в отдел кадров). Уволить этих бездарей! Найдите мне нормальных специалистов!
Спустя три недели новые специалисты сидят на рабочих местах и изучают проект.
Juniordeveloper (про себя). Как тут все сложно… Жизни не хватит чтобы понять как все это работает… Меня наверно уволят…
Seniordeveloper (громко и недовольно). Кто учил этих м… программировать?!! Нет, ну вы посмотрите что они тут пишут!
Главный архитектор (задумчиво). Если бы это была лошадь, я бы посоветовал ее пристрелить…
Team leader (нервно). Спокойно, мужики. Заказчик хочет чтобы мы просто кое-что тут дописали. Оставим все как есть, просто доделаем то, что требуется.
Project manager (обращаясь к разработчикам). Проект конечно тяжелый, но мы ведь справимся! Тем более мы будем вести разработку по самой лучшей методологии! Нам поможет XP! Scrum! TDD! (нужное подчеркнуть).
Главный архитектор (поймав project manager-а в курилке). Ты ведь понимаешь, что проект уже бьется в предсмертных конвульсиях. Его нужно полностью переписать.
Project manager (Главному архитектору). Да все я понимаю, только кто мне это позволит? Знаешь сколько уже потрачено бабла на этот проект? Попробуй объяснить генеральному, что нужно все переделать, я посмотрю насколько быстро ты отыщешь живописное местечко под названием «на…».
Project manager (Оставшись один в курилке, глядя в окно). Вот начнем мы писать проект заново. И облажаемся. Я же во всем виноват буду, с меня же шкуру спустят. Ну его нафиг. А так, если сроки и завалим, то я всегда смогу свалить все на то, что проект уже был полным г…, когда достался нам.
Прошло полгода.
Генеральный (в отдел кадров). Уволить этих бездарей! Найдите мне нормальных специалистов!



