Pull to refresh
Dodo Engineering
О том, как разработчики строят IT в Dodo

Властелин прода в царстве legacy-кода (сказочка с открытым концом)

Reading time 13 min
Views 5.1K
Недавно наш разработчик сочинил IT-сказку по мотивам одной ну очень известной эпопеи. Финал он дописать так и не успел: конец спринта, хотфикс-откат хотфикса, сами понимаете. Теперь мы запускаем конкурс на Хабре, чтобы узнать, чем же всё закончилось.



Конкурс на лучший айтишный хэппи или анхэппи энд


Как участвовать и что делать: выбери, на какой стороне ты – светлой или тёмной, придумай свою версию концовки сказки, результаты своего творчества присылай в комментарии, собирай плюсы и жди окончания конкурса.

Самая заплюсованная концовка получит приз: крутую толстовку «Вжух, и всё работает!».

В зачёт идут комменты, написанные до 23:59 воскресенья.

Итоги подведём 25.11.2019 в 13:00. Дерзайте!

UPD: Поздравляем победительницу конкурса ameli_anna_kate! Толстовка уже ждёт встречи.

Фродо – властелин прода из Додо


Команда Хранителей собрала вещевые мешки и пошла за Гэндальфом по тёмному коридору…

Гэндальф – так они прозвали своего тимлида за длинную бороду и странноватый серый оттенок кожи. Всем им хотелось как можно скорей оказаться под открытым небом в Черноречье, где могучие киты держат на своих спинах микросервисы и не падают, в смысле не тонут. Ну вы поняли.

Гэндальф бессменно возглавлял колонну, да и кому ещё он мог доверить это бремя, ведь в его команде было 4 коротышки-джуна, пара угрюмых мидлов с двуручными клавиатурами наперевес, остроухий аналитик и какой-то гном-датасаентист (никто так и не понял, чем он занимался, потому что 100% его времени занимало раскуривание трубки и жонглирование весами в его нейронках).

В левой руке Гэндальф держал свой Жезл, рассеивающий черную тьму коридора шага на три вперед. То тут, то там со стен и потолка коридора свисали неиспользуемые методы, закомментированные столетия назад куски кода да конструкторы классов с 50 параметрами. В правой руке Гэндальф держал Яррист – легендарный инструмент рефакторинга legacy-кода, который имел свойство ломаться на попытке переименовать какого-нибудь гоблина, поэтому приходилось также таскать с собой синюю изоленту.



Рядом задумчиво брёл неутомимый Гимли и всё бормотал какую-то мантру на языке нейродворфов: «RNN, CNN, BBC...» или просто слушал радио. За ним шёл Фродо (подающий надежды джун) с обнажённым Терном, всё порываясь порубиать эти легаси классы с их мрачными методами в мелкий винегрет.

Клинки Терна и Ярриста не светились, а значит орков, которые всё это безобразие написали, поблизости не было, ибо мечи, изготовленные эльфами в Предначальную Эпоху сотворения Visual Studio, тревожно сыпали error'ами, когда неподалёку появлялись орки.

Позади Фродо плелись верный Сэм, Мерри с Пином – тоже джуны, но попроще, без амбиций, так чисто мапперы писали, да и то на проектах, где никто из старших товарищей не удосужился подключить AutoMapper.

Дальше бодро шагали Леголас и Боромир. Леголас затирал что-то про баги в начале коридора, а Боромир отмахивался, ссылаясь на то, что скоро тут всё перестраивать начисто, и вообще это не мы сломали. Шествие замыкал молчаливый Арагорн. Он думал. Думал о том, что если бы мы сразу начали писать этот проект по DDD, то здесь бы сейчас были чистота и порядок, а не вот это вот всё.

Вдруг…

Ждём ваших историй!

25+ альтернативных концовок с DotNext
Мы протестили этот конкурс на DotNext, и вот что получилось.

«Thread can not be terminated»
Вдруг пред взором путников предстало то зло, что таилось в глубинах целые столетия. Всё легаси, что встречалось нашим отважным героям по пути, было лишь отголосками древних боёв с древним дэльфиским драконом Эмбаркадеро, что вцепился своими длинными когтями в самое сердце проекта.

«Эмбаркадеро», – прошептал Гэндальф. «Я не слышал о нём уже сотни лет… Так вот ты какой, перворожденный. Вот наша цель, что отравляет наш мир, изничтожим же его!»

Войны ринулись в атаку, но на каждый их удар в воздухе раздавалось «Thread can not be terminated».
«Потоки, эти чертовы потоки! FreeAndNil!!», – скрипя зубами прорычал Гэндальф, но в ответ лишь «ArgumentReferenceException».

Внезапно из пещеры неподалеку послышался рык.
– Что это? – испуганно воскликнул один из джунов.
– Не может быть! – закричал Гимли, – Это дельфийские послушники.
– Разве мы не истребили их в битве при WinForms? – снаряжая лук, произнес длинноухий.

Из пещеры показались озлобленные твари, давно забытые, прогнившие изнутри злобой к смузи – дельфийские войны. С криком они ринулись в атаку.
Это был неравный бой, и у команды рефакторинга не было ни единого шанса на победу. Бойня. Просто бойня.

Обнаженный Тенр всё это время сидел на уступе и наблюдал. Без доспехов и даже какой-то одежды он был бесполезен в бою, так что он просто сидел и смотрел. Когда же последный разработчик пал, он тихо произнес: «Нет, это г#@&о нам не переделать».

Автор: Korhog

Пул реквест и ужасное создание
Вдруг из-за поворота, который вёл к очередному сервису, выполз непонятный код с кучей странных ветвистых и ужасных конечностей. Никто не мог понять, какой странник сотворил столь ужасное создание, по коммитам было видно, что это один из древних хранителей, которого уже давно никто не видел.

Всех охватил ужас, но Гимли, увидев знакомые очертания, набрался ещё большего героизма и понял, что эта задача ему по силам. Пока Леголас и Боромир изучали непонятное создание, Гимли, охваченный безумием, взял свои заметки по всем знакомым и незнакомым ему монстрам и начал мастерить оружие древних из валяющихся рядом костылей и колес.

Никому не сказав, он выстрелил пул реквестом в этого монстра из орудия. Леголас и Боромир лишь успели увидеть, как пул реквест полетел в монстра, все засветилось огнями телефонов техпода, крики пользователей оглушили всех в радиусе 1000 миль, пул реквест отрекошетив от непонятного создания, сломал опорную колонну всего подземелья и пылью рассыпались квартальные премии команды Хранителей.

Автор: Илья Григорьев

Релизьте, глупцы!
Вдруг Леголас настороженно обернулся и, минуту вслушиваясь в окружающую тьму, быстрыми шагами догнал Гэндальфа и что-то ему шепнул.

– Все на стейдж! Быстро!
– Что это? – спросил наивный Фродо, тоже теперь услышавший зловещие тяжелые шаги.
– Гномские продажники резали сроки слишком жадно и слишком глубоко…

Команда бросилась собирать запиленные фичи. Как назло, кто-то из гобладминов шатал сборочный мир, поэтому поднять фичи джунов получилось только благодаря смекалке Арагорна, сумевшего вшатать сборочный так, что он окончательно рухнул только после прогона всех тестов.

И вот релиз на сборочном. Осталось выкатить контейнер из глубины пещер, и он на верхнем мире. Но представитель заказчика, о прибытии которого предупредил аналитик, был уже здесь…

— Релизьте! Релизьте, глупцы! — крикнул Гэндальф, загораживая собой разработчиков. За свою жизнь он завернул немало требований бизнеса и намеревался сделать то же самое и с этими правками.
— ТЫ НЕ ПРОЙДЕШЬ В РЕЛИЗ!!!

Автор: Иван Гришуленко (Модульбанк)

Это раньше я был Гэндальф-серый
«Мы пришли», – сказал Гэндальф. Команда хранителей остановилась и с открытыми ртами начала озираться вокруг. Стройные ажурные колонны уходили высоко под потолок, где плавно, словно в танце, клубились облака, от которых исходило захватывающее дух и необъяснимо манящее свечение. В свете облаков можно было разглядеть грациозно парящих китов. Было видно, что они несут на себе объёмные контейнеры, надёжно скрывающие в себе что-то ценное. Об этом можно догадаться по толстым цепям и огромным замкам на них.

Гэндальф ударил жезлом в центре зала о сверкающий невероятно надёжный пол. От места удара побежали блестящие струйки и распространились по всему пространству. Каждая колонна, каждый кирпичик огромного зала, до которого добежали струйки, ответили нежным зелёным свечением. «TDD», — прошептал Арагорн. «Моя прелесть», — пролепетал изумлённый до глубины души Фродо. «Зачем мы здесь, Гэндальф», – спросил Сэм, когда смог немного прийти в себя от окружавшего великолепия.

«Я рад что вы здесь и можете узреть этот лучший мир. И тепер это мой новый дом...», – сказал Гэндальф. «Да, друзья мои, это раньше я был Гэндальф-серый, но скоро я стану Гэндальф-белый и мне придётся вас покинуть. У вас есть ровно две недели чтобы узнать у меня всё что вы хотите узнать. Я готов поделиться с вами всеми своими зельями и заклинаниями, чтобы вы смогли выжить самостоятельно. Но далее мы будем вынуждены с вами распрощаться...». «Нам конец» — синхронно промелькнуло в головах всей команда Хранителей…

Автор: Виталий И.

Про орков и здоровье деда
Вдруг мечи дали знать, что приближаются орки их было немало – так сильно начали сыпаться error'ы. Гэндальф, руководствуясь только собственным чутьем и опытом, скоординировал команду к обороне и… не судьба была справиться ему с решением проблемы, ибо состояние здоровья деда не позволило ему продержаться долго в схватке. Фродо суждено было возглавить команду Великого Гэндальфа и спасти прод.

Автор: Tatiana(y_tata)

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

Автор: Anna_Morozova

Гэндэдди здешних широт
Всем стало ясно, куда они идут, кроме Гэндальфа (он и так знал, тимлид же). Эта версия улучшенного мира не появилась из ниоткуда. Через пару сотен метров в утёсе виднелась дверь. Она скрипуче приоткрылась, и звонкий голос экстраверта вскрикнул: «Ребят, заходите быстрее, тут фичи стынут». Это был отец Гэндальфа — Гэндэдди (он был CTO здешних широт). Пока он был в отпуске, совсем соскучился по коду и решил преобразить легаси так, чтобы ни разработчики, ни клиенты его не узнали.

Когда странники во главе с тимлидом вошли внутрь, они сразу же увидели на стене фотографии, как Гэн-старший в отпуске жонглировал SOLID, а по вечерам прогуливался по пляжу и пил DRY. С местными девицами они практиковали KISS и много чего ещё

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

Вечер закончился радостным застольем с Rubyновым пивом и запахом перспектив.

Гэндальф молвил напоследок: «Мы жили в своих же трудностях и думали как их решить, а ведь нужно было всего-то отдать их сторонней экспертизе и немножко подождать».

Автор: Themaextra (Andersen)

Под силой житейских вьюг
Вдруг…
Под силой житейский вьюг
Был сломлен Гэндальфа дух.
И Гимли рядом упал,
Шепчя лишь: пропал… я пропал.

А весь этот недуг
Был взвален на плечи
Ширийских мальчюг.

Они выли, кричали,
Случалось и коды писали.

Спустя только время
Плоды проростали
А джуны лишь крепчали.

До горы дотянули они
Одним словом – джуны-молодцы.

Автор: Дмитрий Павлин (Kaspersky)

О прытких джунах
Вдруг начинает падать снег!

– Да это же логи наших облачных сервисов! – закричал Гэндальф. С каждой снежинкой на них летели эксепшены, и даже горячий смузи не мог это остановить. У тимлида кипел не только смузи.

Не успели они разобрать инцидент, как налетели драконы и принесли в лапах запрос на новые фичи, которые нужно было сделать вчера. И как тут откажешь драконам, за это они могут не дать золота в конце месяца. А золото очень нужно Гэндальфу, он хочет себе новый посох и колесницу пора менять.

Но тут джуны разом отправили свои мр, в которых повторили все, абсолютно все, разобранные ошибки, и это стало последней каплей в пожаре души Гэндальфа. Тимлид перегорел.

Автор: Дарья Шукшина (Контур)

Релиз, релиз, катим на прод!
Вдруг кто-то громко закричал: «Релиз, релиз, катим на прод!» И Антон – стажёр-разработчик проснулся. Всю ночь они пилили код с его Убер-командой, подкрепляясь литрами кофе и килограммами пиццы, да ещё параллельно шёл Властелин колец на машине Product Owner (для морали). И здравая мысль пришла юному падавану: лучше надо было планировать сроки, да и на ночь переедать плохо. Но какие его годы…

Автор: Илья Зимин (Smartcat.ai)

«Клиент», «поиграть», «стили», «фича»
Вдруг они услышали жуткий грохот за спиной и обрывки страшных ругательств: «клиент», «поиграть», «стили», «фича».

– Горный тролль, – закричал Гэндальф, – бросайте смузи, верхом по гироскутерам и валим.

Более опытные товарищи схватили в охапку джунов и побежали вперёд, не оглядываясь. «Правки», «клиент», «ыыыа», – крики тролля стали становиться все тише и тише. Счастливые, они подумали, что всё позади и уже собрались продолжить свой путь, как вдруг страшное чудовище с огромными синяками под глазами обдало их жутким смрадом кофе и беломорканала.

–Уволить, – рычало оно, – всех уволить.

Гэндальф, понимая, что в его руках судьба команды, глядя на этих наивных маленьких джунов, выступил вперёд и прокричал: «Ты не уволишь!». После чего вступил в яростную схватку с монстром. Последними словами его стала лишь фраза: «Бегите, глупцы».

Оставшись без своего духовного лидера, команда лишь грустно подумала: «Ну… Правки, так правки», – и неохотно побрела обратно к троллю.

Автор: Артем Чернышов (iProspect)

Наверное, это латынь
Вдруг lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.

Автор: Mihailpw

Порождение древних создателей и верный костыль
Сверху послышались раздражающие звуки предупреждений, но, как водится, никто не обратил на них внимания. Братство ещё не подозревало, в какой опасности они оказались.

Однако вскоре, вслед за звуками, появился ужасный жук-гидра – порождение древних создателей. Неопытные джуны сразу бросились в бой и, несмотря на отчаянные попытки Гэндальфа остановить их, попытались сходу отрубить голову ужасному багу. Чего они не знали, так это того, что отрубив багу одну голову, у того сразу вырастет две новых.

Кажется, в этот раз в дело придётся вступить их командиру. Отдав строгие команды своим верным мидлам, Гэндальф вступил в бой. Никогда ещё он не вступал в столь ожесточенные битвы. Бой длился так долго, что все участники потеряли счёт времени. Бесконечно перекатываясь, выкатываясь и откатываясь, Гэндальфу удалось заманить монстра в пещерный отнорок.

Проскочив обратно к выходу, тимлид выхватил свой верный костыль и ударил, что есть сил. Тем самым он отрезал чудовищу путь к свободе. Команда смогла отступить, а чудовище осталось в вечном мраке дожидаться следующих неудачливых путников…

Автор: Евгений Русских (АО «ИРЗ»)

Свет core 3.1.
Дорога шла неспешно. Свежий ветер хорошо задокументированного кода безошибочно вёл тиму вперёд. Теперь каждый был уверен, что рефакторинг не займет много времени и осталось совсем чуть-чуть.

Тихо гудели подземные сервера – явный признак близкой поверхности. Вновь появились мелкие баги – это джуны по неосторожности вспугнули их с покрытых вековым мхом легаси стен.

Настроение тимы повысилось, даже суровый и недоверчивый мидл тихонько запел песню о юнит-тестах и TDD.

Неожиданно для себя герои вышли на большую площадку с высокими сводами и кодом древних орков, украшавшем стены и потолок. Видно, что архитектор древних орков очень старался.

В самой дальней точке комнаты, сразу за обвалившимися тестами, Гэндальф заметил древнюю дверь, которая должна была привести, как он рассчитывал с самого начала, к core 3, а может даже и к 3.1., если заказчики будут благосколонны.

Едва заметным движением посоха, он создал реквест, который осветил путь к порталу, и команда неспеша двинулась к выходу.

Оказавшись поблизости, Гэндальф стал осматривать дверь с любопытством: казалось, что древние символы связываются в слова, но смысл было невозможно уловить.

Неожиданно один их хободжунов удивлённо воскликнул: – Гэндальф, смотри, там ненужный юзинг, я удалю его, и мы сможем выйти!

Тимлид даже не успел возразить, с губ его почти сорвался спич про рефлексию, но было поздно – внезапно прыткий Джун совершил то, что вознамерился…

Стены древнего храма, а ведь скорее всего это был храм, содрагнулись. Заскрежетал заброшенный механизм сборки и внезапно (даже для напрягшихся и приготовившихся к рефакторингу мидлов) дверь отворилась, на героев упал свет core 3.1.

Защитный механизм древних орков был слишком… древним. Он давно перестал работать.

Автор: f786q

Джун, который не смог
Вдруг Фродо переклинило. Гнев внутри него нарастал уже давно, он хотел порезать всё это легаси, ему не давала покоя эта архитектура. Где паттерны? Где DDD? Он сорвался и незаметно для Гэндальфа начал резать бизнес-логику и рефакторить, рефакторить и ещё раз рефакторить. Его опыта не хватало, но он этого не понимал. Только когда он закончил и запушил, Фродо понял, что случилось непоправимое.

Киты начали падать один за другим, исключения летели со всех сторон, книга логов становилась тяжелее с каждой секундой. Гэндальф оттолкнул джуна. Его глаза увеличились, пульс зашкаливал. Фродо сидел в мастер ветке. Гэндальф был в ярости, но это уже ничего не могло изменить. Прод лежал. А это означало ещё одни выходные проведённые на работе.

Автор: Михаил Лазарев (neprogger)

Результаты 18/7
Вдруг на них в подземелье напал дракон (срочная командировка Гэндальфа), и ему пришлось оставить свою команду.

Команда продолжила идти дальше, никто из них не знал, что дальше делать и куда повернуть. У них было только единственное желание – не уронить прод.

На их пути встречались правки от эльфов-заказчиков, и они с ними успешно справлялись, несмотря на то, что им приходилось работать 18/7. Орки-баги, которые пытались уронить прод из-за неэффективного поиска по большим спискам. Но они не сломили дух джунов.

Джуны наоборот гордились тем, что смогли пофиксить баги и оптимизировать код. И даже время от времени хвастались Гэндальфу своими достижениями в слаке.

Вот закончилась командировка Гэндальфа. Он боялся, что за время его командировки джуны сломают всё, но ничего плохого не случилось. Его это обрадовало и вселило надежду в то, что когда-нибудь они смогут отрефакторить весь легаси код и не сломать ничего. Но это уже совсем другая история. А пока наши герои продолжили свой путь в Черноречь.

Автор: madmax46

Древняя легенда и ReflectionTypeLoadException
Вдруг от Гимли пришла тревожная новость: в одном из гигантских проектов случилась ошибка ReflectionTypeLoadException. Глубины стектрейса уводили внутрь AutoMapper. Древняя легенда гласила, что лишь Йода был способен справиться с таким.

Перед Гэндальфом встала задача — кого отправить на далёкую конференцию к Йоде. Как мудрый тимлид, он сразу делегировал задачу выбора Фродо.

Ехать самому и продолбать дедлайн или отправить других джунов? Задача была трудной. Фродо предложил поехать Сэму, Мерри или Пину, но место было только одно.

Между джунами начался спор. Они начали выпиливать тесты и отказываться писать новые. Ситуация становилась всё хуже.

В результате Гэндальф уволил всех джунов и поехал сам. Из доклада Йоды он понял, что проблема в безумной структуре зависимостей проекта, которая образовалась из-за того, что джунов никто не ревьюил.

Мораль сей басни: тимлид, организуй ревью джунов и не давай поводов для спора.

Автор: Евгений Пешков, epeshk (JetBrains)

Гэндальф на ярмарке DotNext
Вдруг впереди появился белоснежный замок. На входе стражи торжественно произнесли: «Вы вступаете во владения королевства dotnext. Кольчуги и мантии оставить на входе».

Пройдя внутрь, они восхитились обилием торговцев знаниями и местных горожан, которые нуждались в помощи. Гэндальф, рожденный на священной земле Изра-Илиум, сразу смекнул что тут есть чем поживиться.

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

Сначала он без труда победил грозного дракона Райфайзна, оставив позади других героев, на что он получил от благодарного жителя непромокаемую мантию.

Далее он показал свой навык в игре под нвзванием в «шаростол», зайдя в различные лавки он чувствовал что его мана растет.

На второй день он помог практически всем жителям, потратив изрядное количество своих сил, получив различные награды, ногогрейки, пальцеруки, волшебные зелья и многие другие необычные ништяки.

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

Автор: Александр, AuthorProxy (Topcase)

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

Дракон приземлился прямо в шаге от нашего героя. В лапах он принес блестящий свиток и покорно вручил его Гэндальфу. Отважный тимлид с интересом стал изучать написанное.

Оказалось, что чужаки из соседнего государства узнали о великой славе Гэндальфа и решили, что было бы отлично переманить его на свою сторону. В своем послании они обещали ему интереснейшие квесты и беззаботную жизнь.

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

Автор: Александр Баулин

Одной строкой
… Дедлайн и их всех уволили.
Автор: Леонид Олевский (Kaspersky)

Дедлайн, доска исписана, а за код никто так и не садился…
Автор: Павел Кондратьев (КРОК)

… и прилетел метеорит с инопланетянами, которые всё взорвали и забрали с собой команду.
Автор: Виктория Малашенко (Kaspersky)

Вдруг Фродо проснулся на лекции по биологии. Это был сон.
Автор: Станислав Панов (HCFB)

Вдруг упал метеорит и все умерли.
Автор: Сергей Рубанов, chico на Хабре, chicoxyzzy в Твиттере (BeerJS)

Вдруг Фёдор Сумкин проснулся в холодном поту и всплакнул. Ему утром на работу, на sharepoint говнокодить…
Автор: Ильшат Гарифуллин (ePayments Technologies)

Вдруг послышалась знакомая мелодия, звук становился громче. Пришёл успешный респонс на запрос о завершении сна, и я проснулся.
Автор: Елена Решетова (Тинькофф)

Перед ними появилась пицца, они её съели, постигли дзен и переписали весь код за одну ночь, а на утро уехали на месяц в отпуск на Канары.
Автор: Аннушка из Контура

Tags:
Hubs:
+13
Comments 16
Comments Comments 16

Articles

Information

Website
dodo.dev
Registered
Founded
Employees
201–500 employees
Location
Россия