Перейти к основному содержимому

7 сигналов в данных, что разработчик вот-вот уволится

· 7 мин. чтения
Artur Pan
CTO & Co-Founder at PanDev

Медианный срок работы инженера в B2B-компании — 2.3 года (Stack Overflow Developer Survey 2025). Медианная неожиданность менеджера этого инженера при увольнении — тоже высокая. Мы сопоставили IDE heartbeat, Git-активность и сигналы из таск-трекера с 43 подтверждёнными увольнениями в 11 командах клиентов PanDev Metrics за 2025. Семь поведенческих паттернов проявились в данных за 30-90 дней до письма об увольнении.

Один из них почти никогда не попадает в стандартный список "сигналов выгорания". Из-за него этот пост и существует.

{/* truncate */}

Почему это важнее, чем кажется

Уход senior-инженера стоит команде эквивалент 6-9 месяцев зарплаты этого инженера в найме, ramp-up и потерянной продуктивности (оценка Gallup State of the Workplace 2024 для knowledge-work ролей, скорректированная под инженерный онбординг). Поймать сигнал за 60 дней до уведомления — не спасает каждый случай. Некоторые инженеры уже решили. Но примерно одна из трёх ситуаций — это случай, когда вмешательство менеджера ещё работает. Данные говорят, какой.

Оговорка перед списком. Это паттерны из нашего датасета. Не предсказания для конкретного человека. Инженер с 3 из 7 сигналов попадает в зону, которая статистически коррелирует с уходом. Но конкретный человек с 3 сигналами может просто готовиться к триатлону. Дашборд нужен, чтобы начать разговор, а не превентивно менять людей.

Наш датасет

  • n = 43 подтверждённых увольнений за 12 месяцев (Q1 2025 — Q1 2026)
  • Контроли: сопоставленные инженеры с похожим стажем, ролью, командой — которые остались
  • Окно: 90 дней до письма
  • Измеряли: паттерны IDE heartbeat, cadence коммитов, поведение в PR, code review, комментарии в таск-трекере, календарные паттерны, sentiment чата (где доступно)

Сигнал сильнее всего в окне 30-60 дней. За пределами 90 дней паттерны выглядят как обычная сезонная вариация.

7 сигналов

Bar chart 7 сигналов увольнения с ранжированием по проценту резиньяций, где сигнал появлялся: вечерняя активность падает 62%, PR-review падает 48%, календарные дыры 44%, обучение 39%, тон commit-сообщений 31%, молчание на standup 27%, Slack sentiment 22% 7 сигналов по распространённости. Ни один не даёт вердикт сам по себе — 3+ сигнала в одном 30-дневном окне — это повод для разговора.

Сигнал 1 — Резкое падение вечерней активности

В 62% случаев увольнений.

Инженеры, которые иногда кодили вечером — разгрести почту в пятницу, полчаса в субботу — перестают. Полностью. Вечерняя линия активности становится flat за 45-60 дней до увольнения.

Контринтуитивно. Стандартное предположение: уходящие работают усерднее, чтобы "уйти красиво". Наши данные показывают обратное: первая поведенческая смена — психологический disengagement, не компенсаторные усилия. Неоплачиваемое дополнительное время всегда было признаком вовлечённости. Его исчезновение — самый ранний leading indicator, который мы трекаем.

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

Сигнал 2 — Падение участия в PR-review

В 48% случаев.

Ревью чужих PR падает на 40-60% за 60 дней до увольнения. Собственные PR идут в нормальном темпе (работу всё равно надо отгружать). Ревью чужой работы требует инвестиции в будущее команды; уходящие тихо деинвестируют.

Сигнал чище на senior-уровне. Джуны ревьюят меньше в принципе — шум выше. Для staff/senior падение ревью — сильный tell.

Сигнал 3 — Тон commit-сообщений смещается

В 31% случаев.

Commit-сообщения укорачиваются. Описания становятся буквальными ("fix bug", "update config") вместо контекстных ("handle edge case in retry logic when DB connection pool saturates"). Disengagement проявляется в самом маленьком тексте, который они пишут.

Сложно измерять автоматически без false positives. Мы флагуем на скользящем 90-дневном базлайне на инженера — падение средней длины commit-сообщения на 40%+ — порог. Слабый сам по себе, значимый в комбинации с 1 и 2.

Сигнал 4 — Календарный паттерн: необъяснимые дыры

В 44% случаев.

Появляются дыры днём — 60-90 минут, 2-3 раза в неделю, всегда в рабочее время. Паттерн непостоянен по дням, что исключает постоянное обязательство (врач, забирать ребёнка, спортзал). Стабильная нестабильность календаря сильно коррелирует с циклами собеседований.

Смотреть сам календарь не надо — мы не рекомендуем. Паттерн проявляется как "coding time per day" падает на 40-60 минут, не равномерно, а чанками 2-3 раза в неделю. Это отпечаток.

Сигнал 5 — Перестают бронировать время на обучение

В 39% случаев.

Инженеры, у которых были защищённые блоки "пятница после обеда: читать + экспериментировать", перестают их бронировать. Или бронируют и не используют. Перестают читать #eng-reading канал. Данные по браузерной активности (если есть расширение) показывают меньше dev.to, меньше hacker news, больше LinkedIn.

Сигнал LinkedIn — самый очевидный из 7 и первый, к которому тянутся менеджеры. Он же — самый слабый: больше всего false positives (все ходят в LinkedIn, особенно в сезон конференций). Включаем паттерн, но только как подкрепление сигналов 1-4.

Сигнал 6 — Молчание на standup / sync

В 27% случаев.

Участие в sync-встречах сужается. Инженер приходит, даёт 20-секундный статус, мьютится. Перестают задавать вопросы. Перестают волонтёрить. Число комментариев в Jira падает на 30%+ от базлайна.

Сигнал 6 слабее, потому что частично стилистический (кто-то просто молчаливый), частично политический (в некоторых командах так у всех). Мерьте на скользящем per-engineer базлайне, не в сравнении со всей командой.

Сигнал 7 — Sentiment в Slack / чате уходит в негатив

В 22% случаев.

Если есть анализ sentiment чата (у немногих есть), сдвиг тонкий: больше "sure", "ok", "whatever works", меньше эмодзи-реакций, меньше комментариев в общих каналах. Инженер становится разговорно минимальным.

Флагуем как самый слабый сигнал — самый чувствительный к приватности источник данных и больше всего шума. Как подкрепление, не диагноз.

Комбинации, которые реально важны

Отдельные сигналы слишком шумны. Полезное — комбинации.

Комбинация% резиньяций (n=43)False-positive в контролях
Любой 1 сигнал87%41%
Любые 2 сигнала69%18%
Любые 3 сигнала52%6%
Любые 4+ сигналов28%1%

3+ сигнала в одном 30-дневном окне — порог для действия. Выше 4 false-positive rate достаточно низкий, чтобы разговор менеджера был оправдан почти всегда.

Сигнал, который никто не смотрит

Сигнал 1 — падение вечерней активности — отсутствует в каждом "engineering retention dashboard" продукте, который мы видели. HR-платформы трекают engagement-опросы (self-report, отстают). Инженерные дашборды трекают DORA (delivery, не sentiment). Отпечаток вечерних часов живёт на пересечении: поведенческий, амбиентный и доступен в IDE heartbeat-данных, которые никто не использует для retention-анализа.

Компании, которые добавили алерт на падение вечерней активности, поймали 3 увольнения в окне "вмешательство ещё возможно" за полгода. Одного удержали (остался, получил разговор про promotion + путь). Двое всё равно ушли, но чище.

Что делать с сигналом

Не стройте дашборд, который флагует конкретных инженеров с "flight risk"-скорингом, видимым их менеджеру. Это Black Mirror быстро. Делайте так:

  1. Агрегируйте сигналы сначала на уровне команды. Если 30% команды триггерят 3+ сигнала — проблема в контексте команды, не в людях.
  2. Дайте менеджеру приватный вид на своих directs, только комбинации. Никаких скорингов. Никакого ранжирования. Только "3 сигнала активны за 30 дней — подумайте о check-in".
  3. Интервенция — это хороший 1:1, не retention-взятка. "Я заметил, что ты тише на standup, и вечера у тебя off — о чём-то хочешь поговорить?" работает. "Давай подберу по другой оферте" почти никогда не работает так поздно.

Наш AI Assistant в PanDev Metrics это обрабатывает — вопрос "у кого из direct reports 3+ retention-сигнала за последние 30 дней?" возвращает список только менеджеру с явной границей приватности. См. пост про детект выгорания для смежного паттерна (два пересекаются, но не идентичны — выгорание это failure mode, увольнение это решение).

Наш датасет — B2B product engineering. У консалтинга/агентств, staff-инженеров в FAANG и open-source контрибьюторов — другие поведенческие отпечатки, которых мы не мерили. Если вы вне B2B product — воспринимайте это как гипотезы для валидации на своих данных.

Удержание — это 90% упреждения

Компании в нашем датасете с лучшим retention не имеют лучших exit-пакетов. У них менеджеры, которые замечают сигналы за 60 дней до уведомления, и у них хватает смелости начать настоящий разговор, пока это ещё имеет смысл.

Если читаете и думаете "я не знаю, как начать такой разговор" — это и есть работа. Данные просто говорят, когда.

Дополнительное чтение

Готовы увидеть метрики своей команды?

30-минутная персональная демонстрация. Покажем как PanDev Metrics решает задачи именно вашей команды.

Забронировать демо