Славик незаменим, или краеугольный камень

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

Дослідники калу

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

Мы наш мы новый мир построим

Другая сторона похожего явления. Связана уже скорее с новомодными тендециями хипстерства и мейнстримом хаскеля, который как известно скоро заменит вообще все языки. Выражается в том, что в проекте начинает применяться разная вуду-технология типа генерации плюсового кода через OCaml, или же генерация модели данных и кода, который работает с этими данными - через набор полиморфных самомодифицирующихся функций на Clojure. Также сюда относится затягивание в проект без разбора разных новых фреймворков и библиотек. По сути, упомянутые явления - это может быть как эволюция, так и привнесение энтропии. Эволюция - это хорошо и правильно, когда старый окостеневший хитиновый панцирь сбрасывается, и на свет появляется новый, мягенький и беззащитный паучок. В сфере софтостроения это означает обычно уменьшение размеров кода, улучшение производительности, ну и прочие cut-off costs. В случае же привнесения энтропии - более по-простому это называется “зоопарк” - в коде появляется ад и черти. Например две разные библиотеки, которые делают одно и то же - но через разные отверстия. Или же генерация кода генерирует нечто такое, что взрывается только на продакшне. Или прикрученный хибернейт выжирает всю память в кеше и сваливается в конвульсиях на простом запросе. В обоих ситуациях может случиться Особый Случай - это когда в команде только один человек понимает, как это все работает. Следствием этого может случиться комплекс Наполеона Славика и замыкание всех процессов на этого единственного разработчика. Как правило, разработчику это более чем выгодно - во-первых, появляются рычаги давления на начальство. Во-вторых, прокачивается ЧСВ и можно везде рассказывать “да куда они без меня”. В третьих - появляется железная отмазка для себя - “ну куда ж я уйду, тут без меня все сгорит и пожрется червями”.


Описанные выше способы выживания - далеко не редкость на территории пост-совка. В условиях постоянного дефицита квалифицированных кадров - каждый суслик агроном, и с одной стороны, специалиста надо как-то мотивировать. Помимо денег, хорошей мотивацией может быть свобода принятия решений в выборе технологий и инструментов. Но ввиду распространенности явления “дрочить на инструменты”, которому посвящены целые разделы интернетов по теме “Git vs SVN” или там “Java vs Ruby” - есть ненулевая вероятность получить гибрид ежа и ужа, сорвать все сроки и провалить проект.

Для товарищей же, которые активно практикуют культ “Славик незаменим” у меня плохие новости. Еще товарищ Сталин вывел аксиому - “незаменимых людей не бывает”, чему у меня есть минимум две подтверждающие истории.

В 2008 году в конторе, где я работал - в течение двух месяце уволились практически 90% вменяемых разработчиков. Вот просто взяли и ушли, средний “возраст” девелоперов в конторе (если не брать меня и ) составлял 6 месяцев. Из 15 разработчиков не было ни одного, кто работал бы больше года. Отразилось ли это на конторе? Ну, чуть понервничали - и хреначили дальше.

Потом в 2010 году опять ушло еще где-то 70% опытных чуваков с опытом работы > 2 года (и я в том числе) - с тех пор контора только увеличилась, единого начальства на месте нет - есть набор отделов, которые возглавляют джуниоры, нанятые еще лично мной. И насколько мне известно - уже открылись филиалы в Киеве.

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