Alex Mercer

Alex Mercer 

Уйду в сторону, когда система начнет жить сама

0subscribers

11posts

Showcase

1
goals1
$0 of $14 728 raised
Какая бы сумма ни требовалась, приятно замечать, что баланс движется в правильном направлении

Незаменимый разработчик: как один Subject Matter Expert превращает проект в заложника

Ивана все на проекте называли просто «Ваня, глянь минутку». Он пришёл в банк обычным мидлом: ни фанат Spring, ни охотник за хайпом, просто человек, который аккуратно закрывает задачи в джире и успевает к релизу. Его код не претендовал на elegance, он не читал ночами книжки про высоконагруженные системы, а Java для него была не религией, а отвёрткой из набора: достал, прикрутил, отложил. Ваня честно разбирался в том, что пишут спеки аналитиков, и постепенно в его голове выстраивалась схема: как живут ордера, чем отличаются рынки и почему торговая сессия — не просто набор цифр, а строго выверенный ритуал биржи. Его даже иногда просили «объяснить по‑человечески», что там происходит между брокером и биржей, и Ваня, пожимая плечами, рассказывал, как «деньги по проводам бегают» — без терминов, но удивительно точно.
Первые пару лет всё шло как в учебнике: релизы выходили, баги «горели», но гасли, и жизнь команды текла в привычном enterprise‑ритме. Ваня делил бекенд с ещё двумя разработчиками, и никто особенно не задумывался, кто там лучше понимает доменную область — всех устраивало, что система в целом работает. Но текучесть кадров — вещь упрямая: один ушёл «в продукт», второй — «в стартап, надоело корпорация», и в какой‑то момент на боевом брокерском бэкенде из старой гвардии остался один‑единственный человек. Менеджер Антон привычно пожал плечами: найм откроем, людей найдём, а пока Ваня потянет, он же «старожил».
Найм, как это обычно бывает, оказался медленным и мучительным. Пока HRы спорили о вилках, Ваня закрывал всё: от редких, но громких падений продакшена до странных, противоречивых хотелок безопасности. Когда в команду всё‑таки пришли двое новых, Антон выдохнул, но не перестроился: срочные задачи по привычке продолжали падать в колонку «assigned to: Ivan». На планёрках это выглядело почти невинно — «давайте эту критичную задачу всё же Ване дадим, ребятам пока нужно въехать» — но именно в этот момент невидимый рычаг заклинило в одном положении.
Очень быстро стало понятно, что первые впечатления об архитектуре были чересчур оптимистичными. Под и без того сложным доменом начал разрастаться слой решений «на скорую руку», которые принимались между двумя звонками от бизнеса: тут обойти ограничение протокола, там перехватить нештатный кейс, который реальная биржа почему‑то считает нормой. Тесты на такие штуки почти не писались — не из злого умысла, а из простой арифметики: у Вани не было лишних часов, чтобы аккуратно оформить каждый вынужденный крюк в коде. Зато у него была феноменальная память и внутренний план города, которого больше никто не видел: какие потоки когда перехлёстываются, где Лондон, а где давно перекрытая подземка.
Новички смотрели на всё это как туристы, высаженные ночью посреди мегаполиса без карты. Формально им объяснили, где какой модуль, дали доступ к репозиторию и пару созвонов «для вопросов», но каждый новый тикет упирался в одну и ту же фразу: «лучше уточни у Вани, так надёжнее». В какой‑то момент на командных митингах стало нормой, что любые обсуждения архитектуры разбиваются о одни и те же слова Антона: «Если Ваня говорит, что так нельзя, значит нельзя, он лучше всех знает, как оно работает». Незаметно для всех человек, который никогда не стремился к власти, стал единственным, чьё «да» или «нет» могло физически положить или спасти прод.
Первый тревожный звонок прозвучал, когда Ваня собрался в отпуск. Сам по себе отпуск был заслуженным и скромным: две недели моря и попытка вспомнить, как это — не смотреть на алерты из мониторинга перед сном. Но в офисе это событие превратилось в небольшую драму: Антон таскал маркер по доске, рисуя схемы «на случай Х» и шутя о том, что «все молимся, чтобы ничего не упало» — и в этих шутках было слишком мало шутки. Коллегам незаметно, но очень конкретно дали понять: любые серьёзные изменения на время его отсутствия лучше не трогать, «сейчас не до экспериментов».
Прод, конечно, не знал про режим «тишины» и вёл себя по‑своему. Через пару дней всплыла странная ошибка, связанная с редким типом ордера, и единственный человек, который точно помнил, почему в одном из сервисов стоит загадочный флаг, уже пил кофе на берегу. Разработчики полдня разбирались в логах и коде, постепенно понимая: у системы нет документации, есть только Ваня, и он сейчас в другой временной зоне. В конце концов проблему залатали, но цена оказалась очевидной — команда провела день в режиме археологов, а Антон окончательно осознал, что «ключевой человек» и «точка отказа» — это в этой истории одно и то же лицо.
С этого момента проект окончательно сдвинулся в странное состояние. Формально в нём было три разработчика, но стратегические решения принимались ровно одним, и именно под его график подстраивалось всё остальное. Ване всё чаще разрешали «подстроить рабочий день, как удобно», переносили встречи, терпеливо ждали ответов в мессенджере, если он пропадал. В любой другой истории это выглядело бы как заслуженные привилегии ценного специалиста, но здесь каждый такой шаг только дальше загонял команду в угол: любой намёк на то, что Ваня может уйти, превращался для Антона в личный кошмар.
Сам Ваня, между тем, всё меньше походил на человека, которому нравится происходящее. Быть «незаменимым» звучит лестно только снаружи; изнутри это ощущается как бесконечное дежурство по вселенной, в котором телефон не имеет права разрядиться, а отпуск всегда под вопросом. Он устал быть тем, у кого спрашивают «а что если мы поменяем вот этот кусок», когда реальный перевод вопроса звучал как «а ты, пожалуйста, ещё раз подставь плечо». В какой‑то момент мысль о том, чтобы закрыть ноутбук и никогда больше не видеть эти тикеты, стала не химерой, а вполне осязаемой опцией.
Можно было бы списать всё на характер: мол, Ваня сам выбрал позицию «держать всё в голове». Но, если честно, он ничего такого не выбирал — просто каждый раз, когда нужно было «сделать быстро и надёжно», к нему приходили как к самому предсказуемому исполнителю. Система шаг за шагом наращивала вокруг него стены: сначала «дайте срочное ему», потом «пусть он объяснит, он помнит», потом «ну он же единственный, кто в этом разбирается». В какой‑то момент оказалось, что без Вани и проект жить не может, и сам Ваня — тоже, потому что любая его попытка выдохнуть оборачивается новой воронкой задач.
Самое странное в этой истории то, что трагедии можно было избежать простыми, но скучными управленческими привычками. Нужно было раньше замечать, как знания концентрируются в одной голове, заставлять задачи ходить по рукам, планировать время не только на фичи, но и на объяснения, ревью, совместную работу. Но Антон слишком долго жил в мире, где успех измеряется закрытыми тикетами и соблюдёнными сроками, а не устойчивостью команды к потере одного человека. Поэтому к моменту, когда он понял, что Ваня превратился из спасателя в заложника, было уже поздно: любой выход из этой истории обещал боль.
И если вы сейчас на своём проекте узнаёте того самого «Ваню» — не спешите считать его счастливчиком, вокруг которого крутится вселенная. Возможно, прямо сейчас в какой‑то безымянной джире очередная срочная задача уже автоматически назначилась на него, потому что «так надёжнее». Вопрос только в том, заметит ли кто‑то вовремя, что цена этой надёжности растёт каждый день — и решится ли кто‑то сломать эту привычку, пока человек, державший весь проект на своих плечах, не решит наконец опустить руки.
Go up