Сократили цикл разработки на 20% — и получили вдвое больше инцидентов
В продуктовой B2B‑компании, где я отвечал за надёжность, поставили амбициозную цель: сократить цикл разработки (dev cycle time) на 20%. Забегая вперёд, скажу: к концу года цель достигли. Но уже через несколько месяцев после старта я смотрел на график инцидентов и не верил своим глазам: рост в два раза год к году.
Эта статья — о том, почему так происходит почти всегда, когда компания оптимизирует одну метрику, как мы это починили и — главное — как продать решение руководству. Именно на продаже всё обычно и умирает.
Как цель съедает систему
Сокращение цикла разработки на 20% — цель понятная и измеримая. Проблема была не в ней, а в том, что она была одна.
Когда у команд есть одна метрика, за которую спрашивают, система оптимизируется под неё за счёт всего, за что не спрашивают. У нас цель достигалась ровно так: сокращали тестирование, отступали от регламентов, срезали углы везде, где срезание не было видно немедленно. Никто не делал этого злонамеренно. Каждое отдельное решение выглядело разумным компромиссом: «здесь можно без полного регресса», «этот шаг процесса пропустим, релиз горит».
Точнее всего этот механизм описывает Дитрих Дёрнер в «Логике неудачи» — книге о принятии решений в сложных системах, которую я советую каждому руководителю: фиксация на одной цели порождает побочные эффекты, которые никто не отслеживает, потому что они лежат вне поля зрения цели. Ровно это и происходило: побочные эффекты копились больше трёх месяцев, прежде чем стали видны на графике инцидентов. К тому моменту они уже были системой, а не отклонением.
Почему инциденты казались «дешёвыми»
Отдельная деталь, которая многое объясняет: инженеры не считали рост инцидентов проблемой. Инцидент воспринимался как дешёвое событие — упало, подняли, поехали дальше. Быстро починить — даже повод для гордости.
Причина в том, что ни один человек в компании не видел полной стоимости инцидента. Разработчик видел свой баг. Дежурный инженер — свою ночь. Саппорт — свой поток обращений. Менеджер — сорванный спринт. Каждый кусок по отдельности выглядел терпимо. Целиком картину не видел никто, потому что она нигде не собиралась.
И здесь важный момент про «качество по умолчанию». Когда я поднял вопрос, главное возражение звучало так: «О качестве все и так думают, это подразумевается». Я проверил: опросил менеджеров и разработчиков, как именно качество учитывается в их ежедневных решениях. Ответы говорили об обратном: в момент выбора «успеть к сроку или сделать полный регресс» побеждал срок — потому что за срок спрашивали, а за качество нет. «По умолчанию» на практике означало «никогда».
Контрметрики: противовес вместо тормоза
О контрметриках почему‑то почти не говорят: в докладах, где поднимается тема метрик, о противовесах целевым показателям — тишина, а вопросы о побочных эффектах обычно повисают в воздухе. При этом сам механизм простой.
Контрметрика — это метрика, которая должна не ухудшиться, пока вы оптимизируете целевую. Сокращаете цикл разработки — контрметрикой становится частота инцидентов. Снижаете стоимость инфраструктуры — контрметрикой становится доступность. Наращиваете фичи — контрметрикой становится поток обращений в саппорт.
Ключевое слово — противовес, не тормоз. Контрметрика не запрещает ускоряться. Она делает видимой цену ускорения и заставляет принимать эту цену осознанно, а не по факту, через месяцы, на графике инцидентов.
«Здоровье продукта»: как это выглядело
Так появилось «здоровье продукта» — мы запустили его пилотом на нескольких продуктах. Почти все метрики в компании уже собирались — они просто были разрознены, и за них никто не отвечал: владельцы продуктов отвечали за реализацию новых фич, и только.
Внедряли его в три этапа.
Этап первый — единый набор метрик. Он может быть любым — важно, чтобы он охватывал и техническую, и бизнесовую сторону. Технические — например, uptime, бюджет ошибок, MTBF, количество багов, доехавших до прода. Бизнесовые — например, количество обращений в саппорт. Смысл не в дашборде как таковом, а в том, что вся стоимость ненадёжности впервые оказалась собрана в одном месте — та самая полная картина, которой не видел никто.
Этап второй — целевые значения, под которыми подписались CPO и CTO. Не «стремимся к лучшему», а конкретные числа. Это критично: пока целевые значения не согласованы наверху, здоровье продукта остаётся мнением инженеров, а не обязательством компании.
Этап третий — заранее согласованные действия при отклонении. Самая важная и самая трудная часть. Для здоровья продукта работал светофор. Зелёная зона — работаем как работали. Жёлтая — в течение следующего спринта команда обязана выявить причину просадки и запланировать на следующий квартал мероприятия по возвращению к целевым значениям. Красная — причина выявляется в течение текущего спринта, а мероприятия планируются уже на следующий спринт. Никаких наказаний — только заранее известные обязательства с заранее известными сроками. Правило, принятое на берегу, срабатывает; правило, которое изобретают в момент конфликта — нет.
И завершающий шаг — ответственность. Владельцами здоровья продукта стали инженерные менеджеры. Эффект был быстрым: количество багов пошло вниз, как только у метрик появился хозяин. А самим менеджерам здоровье продукта неожиданно понравилось: впервые у них появились цифры, которыми можно аргументировать необходимость взять технические задачи в итерацию — раньше этот спор с владельцами продуктов они проигрывали.
Как продать это руководству
Честно: продажа заняла у меня около полугода.
Возражение было одно, и оно будет у вас тем же: «О качестве все думают по умолчанию, зачем это формализовывать».
Аргумент, который сработал: «Давайте оцифруем вот это „по умолчанию“„. Если качество и так у всех в голове — целевые значения не будут нарушаться, и метрики просто подтвердят, что всё хорошо. Возразить на это нечем: несогласие с оцифровкой означает признание, что „по умолчанию“ не работает. Плюс на моей стороне были опросы: конкретные ответы менеджеров и разработчиков о том, что в реальных решениях качество проигрывает срокам.“»
Второе, что сработало, — я не продавал в одиночку. К моменту финального разговора у идеи уже были сторонники: пара руководителей отделов, инженерные менеджеры, лиды клиентских отделов — люди, которые ежедневно платили невидимую цену за инциденты и понимали это. Ищите тех, кому больно: они станут вашей коалицией.
Не всё прошло гладко: одну из метрик на финальном согласовании отклонили — хотя на всех предыдущих этапах её удавалось отстоять. Это нормально: здоровье продукта не обязано согласоваться целиком с первого захода — работает и неполный набор метрик.
Заметьте: не понадобилось ни одного нового инструмента и почти ни одной новой метрики. Продавали не проект внедрения, а договорённость: вот числа, вот подписи, вот действия при отклонении.
Что изменилось
На пилотных продуктах количество инцидентов сократилось в два раза.
Но не менее важен сдвиг в головах: инженеры, увидев полную стоимость инцидентов, перестали считать их «дешёвыми» — изменилось само отношение к надёжности в ежедневных решениях. Этот сдвиг не был целью — он следствие того, что стоимость ненадёжности стала видимой, а ответственность — именной.
С чего начать у себя
Если узнали свою компанию в первой половине статьи, порядок такой. Сначала проверьте, есть ли у ваших текущих целей контрметрики — у каждой цели вида «ускорить/удешевить/нарастить» должен быть противовес. Затем соберите то, что уже собирается: почти наверняка всё важное у вас уже измеряется — просто лежит в разных местах и ни на что не влияет. Согласуйте целевые значения наверху — без подписи CPO/CTO это останется инженерной самодеятельностью. И договоритесь о действиях при отклонении до того, как отклонение случится.
А первый вопрос, который стоит себе задать: за счёт чего ваша компания «ускоряется» прямо сейчас — и кто в ней видит полную стоимость этого ускорения?
Автор: anton_shishkin

