Big ball of mud

Big ball of mud

Шурик·

Легаси-говнокод возник почти одновременно с программированием. Термин “спагетти-код” появился в начале 80х, в 90х возникло понятие Big ball of mud, ну и вездесущий Мартин Фаулер написал книгу о принципах рефакторинга легаси еще аж четверть века назад, в далеком 1999. Но если еще лет десять назад Big ball of mud воспринималась как какая-то неприятная, но, в общем-то незначительная деталь, то последние годы она выходит на первый план. В резюме все чаще встречается “не готов готов к легаси” (или, у отчаявшихся найти работу джунов, “готов в легаси”), в вакансиях прельщают отсутствием этой самой легаси (врут!), на встречах с бывшими коллегами за пивом рассказываются кошмары про монолиты 2000 (к счастью - нашей эры) года выпуска.

Почему эта тема начала подниматься последние годы так сильно? В начале 2010х шел быстрый рост энтерпрайз-приложений - рос цифровой мир в котором мы живем: маркетплейсы, онлайн банкинг, возможность заказать госуслугу, оформить страховку, получить выписку из медкарты не выходя из дома. Приложения писались быстро (застолбить рынок), неумело (не было квалифицированных кадров) а о поддержке через 10 лет тогда мало кто думал. И мало кто думал о том что у программного кода есть такой же срок износа как у любой инфраструктуры - жилищного фонда, дорожного фонда. Устаревают технологии, уходят (кто на пенсию, кто в мир иной, кто на руководящие должности, кто за бугор) авторы монолитов, не оставив после себя документации. Наконец, за десятилетие использования накапливается критическое число заплаток, костылей, хаков, протеканий абстракций, так что лепить новые становится все сложнее.

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

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

Во-вторых, жилье, как правило, строилось по типовым схемам, во главе с инженером учившимся строить по этим схемам, с соблюдением СНИПов и регламентов. И ввод в эксплуатацию осуществлялся только после проверки комиссией соответствия регламентам. А вот легаси-проект клепался без всякой документации, хаотично, никакими комиссиями никогда не проверялся (неплохо если был хотя бы код ревью, но и код ревью обычно делал человек который сам варился в этом же проекте).

В-третьих, легаси не на виду. Если в доме течет крыша - можно пригласить проверяющие органы, сфотографировать и предъявить. Но кому и что пойдет предъявлять команда поддерживающая легаси? Протекающие абстракции?

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

Ну и в пятых, вот тут внимание, руководство (уровня компании) плохо понимает что делать. Ну то есть им интуитивно понятно что с энтерпрайзом беда. И начинают искать опытного разработчика, причем желательно настолько крутого насколько позволяет бюджет. Отсюда, в том числе, тянутся нитки к олимпиадным собеседованиям - требования найти лучших - уж они-то разгребут (тут как раз подключаются инфоцыгане с рассказами как освоение нового фреймворка поможет решить все сложности). И вот приходят на проект люди с годами опыта, с охрененными стеками, но и им даже книга Мартина Фаулера не помогает, потому что реальный проект не похож на его умозрительные примеры. Потому что нужно несколько месяцев чтобы только влезть в проект, освоиться с предметной областью и понять вообще что там и как. В лучшем случае удается как-то стабилизировать легаси, прекратив экспонентный рост проблем и полет в бездну. Но переписать все - на это не хватает сил и времени. Чаще всего, в попытках разобраться с проблемами, начинает появляться еще один, на этот раз “надежный” слой абстракций, на который в итоге не хватает сил и он просто добавляется новым слоем грязи в имеющийся Big ball of mud…

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

Шурик

Комментарии (29)

Правила комментирования
  • Любые темы про политику, войны, или всё то, что НЕ относится к теме сайта, будут УДАЛЯТЬСЯ.
  • Всё, что попадает под возможные нарушения законодательства РФ (экстремизм, призывы, дискредитация, оправдание, возбуждение и т.п.) - тоже.
  • Любые бессмысленные оскорбления участников сайта или тематики сайта. Если с чем-то не согласны - приводите аргументацию, а не оскорбления.
  • Запрещается упоминание в негативном контексте (клевета) каких-либо персоналий - физических или юридических лиц.

Мы стараемся сделать комментарии ценным информационным материалом, засорять сайт мусорными обсуждениями, никак не относящимися к теме сайта, не нужно! Спасибо за понимание.

0 / 10000

Форматы: JPG, PNG, WebP. Не более 5 файлов (по 10 МБ). Можно вставить из буфера (Ctrl+V).

Загрузка комментариев…