Токсичный разработчик: когда уволить дешевле, чем лечить
В команде есть инженер, которого все считают незаменимым. Код у него чище, чем у остальных, архитектуру видит на два года вперёд, на ревью ловит баги, которые все пропустили. И этот же человек месяцами тормозит релизы, потому что «так нельзя, это костыль», переписывает чужое без спроса, а на стендапе закатывает глаза, когда продакт говорит про сроки. Бизнес-задача для него — досадная помеха чистой архитектуре.
И ты ловишь себя на мысли, которую стыдно произнести вслух: а что, если без него команде станет легче?
У меня был ровно такой инженер. Сильнейший в команде — и почти полгода я убеждал себя, что без него никак. Он не хотел делать бизнес-задачи: считал их грязью поверх «правильной» архитектуры, переписывал чужие PR, на ревью разносил джунов так, что двое перестали предлагать идеи вообще. Я тянул, потому что код у него и правда был лучший в команде. Отпустил — и через месяц команда поехала быстрее, а не медленнее. Это был мой главный урок в роли: чистый код одного человека не стоит скорости всех.
Сильный — не значит «в плюс»
Есть неудобная правда: сильный, но токсичный разработчик может выдавать гениальный код и при этом уводить команду в минус. Тормозит чужие задачи, переписывает то, что работало, превращает каждое ревью в поле боя. Скорость команды считается не по самому сильному её участнику, а по тому, сколько остальные тратят, разгребая за ним и обходя его.
Звезда, которая гонится за идеальным кодом в ущерб делу, — это вообще не про качество. Это про приоритеты, которые разошлись с задачей команды. Продукту надо проверить гипотезу за две недели, а он полгода строит «правильную» абстракцию под нагрузку, которой нет и может не случиться. Чистый код — средство, а он сделал его целью.
Цифры, которые мало кто считает
Гарвардское исследование Хаусмана и Майнора (58 542 человека) попробовало оцифровать цену. Замена одного токсичного сотрудника обходится примерно в $12 500 — это не «в месяц» и не «в год», а разовая стоимость текучки: из-за него увольняются другие, а нанять и ввести в строй замену стоит денег. И это оценка снизу — суды, просадку продуктивности и сорванные сроки в неё даже не закладывали. Для сравнения: суперзвезда из топ-1% приносит около $5 300 в год (правда, это уже про вклад, а не про текучку, — цифры не вполне сравнимы, и «токсичный» там определён жёстче, через прямые нарушения, а не перфекционизм). Точную сумму спорить можно; порядок — нет: один человек способен стоить команде дороже, чем приносит её лучший. А токсичная звезда нередко и то, и другое разом.
Когда ты держишь такого ради его кода, ты платишь скрытую цену: тихо уходят те, кто не хочет с ним работать; джуны не растут, потому что боятся открыть PR; ты сам тратишь часы на медиацию вместо своей работы. Просто этот счёт не приходит одной суммой — он размазан по кварталам, поэтому его и не замечают.
Сначала лечить, потом резать
Увольнение — не первый шаг, а последний. Прежде чем решать, дай человеку честный шанс:
- назови поведение прямо — не «ты токсичный», а «ты держишь мерж три дня из-за стиля, и это стоит команде спринта»;
- проговори, что бизнес-ценность — часть работы, а не предательство инженерии;
- дай конкретный, проверяемый план и срок.
Иногда человек просто не понимал, как это считывается со стороны, — и меняется. Тогда ты сохранил сильного инженера, и это лучший исход. Но если после прямого разговора и плана ничего не двигается — дело не в недопонимании, а в том, что его ценности и задача команды не совпадают. И вот тут «лечить» дальше — это просто откладывать неизбежное за счёт остальных.
Как уволить сильного — правильно
Сама механика та же, что в любом расставании: без сюрприза, коротко, с достоинством. Но у звезды есть два своих нюанса.
- Bus factor. Он реально знает то, чего не знает больше никто. Не объявляй решение, пока не вытащил критичные знания в доки и парные сессии, — иначе ты уволишь себе же инцидент на следующей неделе.
- Реакция команды. Половина выдохнет, половина испугается: «убрали лучшего — а кто тогда в безопасности?». Скажи прямо: ушли не за то, что силён, а за то, как работал с людьми. Это важно — иначе команда запомнит, что наказывают за силу, а не за поведение.
Частые вопросы
А если он действительно незаменим? Незаменимых нет — есть недокументированные. Если уход одного человека роняет систему, это уже не его сила, а твой риск (bus factor), и разминировать его надо в любом случае — удержишь ты звезду или нет.
Может, удержать деньгами или повышением? Если дело в поведении и ценностях — нет. Деньги купят пару месяцев тишины, а потом тот же разговор повторится, только дороже. Контрофер лечит «мне мало платят», а не «я считаю бизнес-задачи грязью».
Что сказать команде, чтобы не было паники? Коротко и прямо: человек ушёл не за то, что силён, а за то, как работал с людьми. Без подробностей и без «так решило руководство». Иначе команда решит, что у вас наказывают за силу.
Как быстро принимать такое решение? Не быстро. Сначала прямой разговор и проверяемый план со сроком. Решение «резать» имеет силу, только если после честного шанса ничего не сдвинулось. Скорость нужна потом — в передаче знаний, а не в самом приговоре.
Короче
Сильный инженер — это не индульгенция. Если человек тащит код, но рушит команду и игнорирует то, ради чего команда вообще существует, — иногда честнее и дешевле расстаться, чем годами лечить. Это не призыв рубить с плеча: сначала прямой разговор и реальный шанс. Но если шанс отыгран, а ничего не поменялось — тянуть не надо, ты делаешь хуже всем, включая себя.
А прокрутить это решение — и сам разговор — можно и заранее, без живой команды на кону.