Технический аудит после сорванного запуска: план на 2 недели
Используйте этот двухнедельный план технического аудита после сорванного релиза, чтобы проверить владельцев, безопасность деплоя, правдивость бэклога и влияние на клиентов.

Почему этот аудит важен сейчас
Когда запуск сдвигается, люди заполняют пробелы историями. Инженеры говорят, что scope изменился слишком поздно. Продукт говорит, что сборка никогда не была стабильной. Поддержка говорит, что клиенты уже были недовольны до дня релиза. Это не поможет, пока вы не проверите факты.
Технический аудит даёт чистую отправную точку. Цель узкая: выяснить, что мешало готовности к релизу в тот день, когда планировали выпустить.
Этот вопрос быстро режет шум. Команды часто смешивают реальные блокеры с побочными проблемами. Слабая передача задач, старый рефакторинг или разногласия между руководителями могут иметь значение позже. Сначала задайте более простой вопрос: остановило ли это выпуск безопасно? Если нет — опустите это ниже в списке.
Это держит аудит вне обвинений. Пропущенные релизы становятся политическими, когда все вспоминают худшее совещание вместо настоящего блокера. Фактам сложнее спорить. Сломанный шаг деплоя, отсутствие плана отката, отсутствие владельца для финального утверждения или бэклог, полный полумер, скажут вам больше, чем ещё одна длинная дискуссия.
Начните с боли клиента. Если покупатели не могли завершить оформление заказа, если обещанные исправления пропустили срок, или если нагрузка в поддержке удвоилась — начните оттуда. Посчитайте, что изменилось:
- Проваленные регистрации или заказы
- Тикеты поддержки, связанные с релизом
- Возвраты денег, риск оттока или упущенная выручка
- Часы, потраченные на ручные обходы
Двух недель достаточно, если вы будете держать строгие рамки. К концу вы должны знать, какие проблемы блокировали релиз, какие вопросы лишь казались срочными и что нужно назначить владельцем до следующей даты релиза.
Установите границы аудита на две недели
Две недели пролетают быстро, если вы считаете всю компанию проблемой. Выберите точный релиз или milestone, который сдвинулся, и назовите его простыми словами. Запишите плановую дату запуска, дату сдвига и то, что должны были получить клиенты. Если несколько релизов пересекались — выберите тот, который вызвал задержку, а остальные держите на заднем плане.
Нарисуйте жёсткую границу вокруг аудита. Включите все команды, которые касались релиза, даже если они подключились поздно. Обычно это продукт, инженерия, QA, поддержка и тот, кто отвечал за коммуникацию релиза. Добавьте также вовлечённые системы: приложение, API, платежный поток, пайплайн деплоя, аналитика и любые инструменты, которые повлияли на результат.
Окно времени так же важно. Просмотрите период, когда решения начали влиять на релиз, и остановитесь через несколько дней после провала. Для многих команд это 10 рабочих дней до запуска и 3 дня после. Морозьте этот диапазон рано. Если вы будете его расширять, аудит превратится в урок истории.
Решите заранее, что считается доказательством, прежде чем люди начнут защищать свою версию событий. Полезные доказательства обычно приходят из короткого набора записей:
- Тикеты и запросы на изменения
- Логи деплоя и заметки об откате
- Релизная документация и продуктовые спецификации
- Разговоры поддержки и отчёты об ошибках
- Постмортемы инцидентов или чат-треды с отметками времени
Не принимайте память за доказательство. Люди хорошо помнят стресс, но часто путают время и ответственность. Когда кто-то делает утверждение без билета, записи в логе, документа или клиентского отчёта, отметьте это как гипотезу для проверки, а не как факт. Эта простая привычка удерживает бэклог честным и не даёт самому громкому в комнате переписать историю.
Сначала сопоставьте владельцев, затем проверяйте системы
Пропущенный релиз часто указывает на простую проблему с владельчеством. Люди работали усердно, но рискованные части оставались в разрывах между командами. Прежде чем смотреть логи, тикеты или скрипты деплоя, сопоставьте, кто за что отвечает сегодня.
Четыре области нуждаются в одном ясном владельце каждая: код, инфраструктура, релиз и поддержка. Используйте имена, а не названия команд. «Engineering» не является владельцем. «Майя отвечает за код API» — полезнее. Так же «Лео утверждает изменения в проде.»
Короткая таблица достаточна:
- Владелец кода для каждого основного репозитория или сервиса
- Владелец инфраструктуры: хостинг, секреты, бэкапы и доступы
- Владелец релиза для финального go/no-go решения
- Владелец поддержки для приёма инцидентов и ответов клиентам
Области с разделённой ответственностью требуют дополнительного внимания, потому что они терпят тихо. CI-пайплайны, аналитика, auth, биллинг и данные стенда обычно касаются нескольких команд. Отметьте любую область, где несколько людей могут вносить изменения, но никто не чувствует полной ответственности, когда что-то ломается.
Также запишите решения, которые пересекали границы команд во время сорванного релиза. Кто изменил scope? Кто утвердил поздний хотфикс? Кто принял известную проблему? Срывы запуска редко происходят только из-за кода. Они происходят из-за неясных решений, принятых поздно людьми с частичным контекстом.
Закончите цепочкой утверждений. Кто сегодня может утвердить деплой в прод? Кто может его откатить? Кто может приостановить клиентские сообщения? Если ответы зависят от того, что один человек будет на связи и доступен, вы нашли реальный риск.
Стартап, управляемый основателем, может выявить проблему за час: CTO утверждает код, DevOps держит доступ к облаку, поддержка отвечает за входящую почту, а никто не отвечает за релизные заметки или решения об откате. На бумаге это выглядит мелко. В день релиза это может стоить целой недели.
Проверьте безопасность деплоя в первую очередь
Начните с пути в production, а не с кода. Если команда не может чисто деплоить и откатывать, остальные выводы останутся лежать на полке.
Задайте один простой вопрос: если этот релиз сломается в проде, кто сможет остановить его в течение пяти минут? Вы хотите именованного человека, письменный план отката и доказательство, что команда уже применяла это ранее. Если ответ «мы, наверное, сможем откатить», — считайте это пробелом.
Staging тоже требует внимательного осмотра. Многие команды говорят, что staging «достаточно близок», но на деле там меньше данных, меньше сервисов, фейковые очереди и другие секреты. Тогда последний тест перед релизом мало что говорит. Сравните версии, конфигурации, сторонние интеграции и фоновые задания. Если production зависит от чего-то, что staging пропускает, запишите это.
Ручные шаги при деплое — ещё одна ловушка. Пересчитайте каждый шаг, включая те, которые люди забывают упоминать сначала: shell-скрипт на одном ноутбуке, команда для базы данных в истории чата, очистка кеша, о которой помнит только один инженер. Скрытые шаги приводят к пропущенным релизам, потому что они живут в памяти, а не в runbook.
Быстрая проверка должна охватить четыре момента:
- Шаги отката прописаны, протестированы и назначены
- Staging достаточно близок к production, чтобы ловить реальные риски
- Шаги деплоя скриптованы или задокументированы, без загадочных команд
- Оповещения, логи и on-call покрытие показывают сбои быстро
Фичер-флаги помогают чаще всего, когда они скучные. Команда должна уметь выключить новый поток без нового деплоя. Проверьте, есть ли флаги для рискованных фич, есть ли человек, который ими управляет, и убираются ли старые флаги, вместо того чтобы накапливаться.
Один пример из практики иллюстрирует мысль. Команда выкатывает новую регистрацию в пятницу, видит падение конверсии, а затем выясняется, что единственный человек, который знает скрипт отката, в полёте. Это не проблема продукта. Это проблема безопасности деплоя, и её нужно исправить до следующей даты релиза.
Сопоставьте бэклог с реальностью
Пропущенный релиз обычно оставляет после себя три разные версии истории. Трекер говорит одно, код — другое, а клиенты — третье. Нужно совместить их, прежде чем доверять плану восстановления.
Начните с бэклога релиза, затем возьмите текущую доску спринта, список открытых багов и недавние заметки по релизу. Поместите каждый элемент в одну таблицу, чтобы команда могла сравнить статусы в одном месте. Если в тикете написано «done», проверьте, ушёл ли код в прод, могут ли пользователи им пользоваться и записала ли поддержка проблемы.
Эта часть быстро становится некомфортной. Некоторые работы ушли без тикета. Некоторые тикеты остались открытыми, хотя изменения уже запушены. Некоторые элементы считались завершёнными, но породили баги и превратились в ручные фиксы.
Используйте четыре метки:
- Выпущено и работает
- Выпущено с дефектами
- Не выпущено
- Сделано вне трекера
Эти метки быстро показывают дрейф. Они также прекращают долгие споры, потому что у всех одно и то же доказательство.
Старые приоритеты создают вторую проблему. Старые задачи релиза часто остаются вверху даже после изменения бизнеса. Инженеры тогда тратят время на работу, которая месяц назад казалась срочной, но сейчас не помогает восстановлению.
Простой пример: команда может всё ещё держать «полировку анимации онбординга» в верхней части списка, потому что это было в плане релиза недели назад. В то же время клиенты жалуются на сломанные письма приглашения, и на эту проблему никто даже не открыл тикет. Бэклог выглядит организованно, но команда делает не то, что действительно важно.
Для каждого элемента задавайте один вопрос: помогает ли это восстановлению прямо сейчас? Если нет — закройте, опустите или перепишите его. К концу бэклог должен показывать реально выпущенную работу, реальные баги и реальные приоритеты.
Измерьте влияние на клиентов простыми числами
Начните с действий, которые клиенты пытались совершить и не смогли. Посчитайте заблокированные регистрации, неудачные платежи, сломанные шаги онбординга, отсутствующие письма и формы, которые не дошли до вашей команды. Если проблема касалась одной части продукта, изолируйте этот поток и посчитайте неудачные попытки за последние 7–14 дней.
Тикеты поддержки и заметки от продаж обычно говорят больше, чем дашборды. Прочитайте недавние разговоры и отсортируйте по типам проблем. Вас интересуют прямые доказательства: сколько людей застряло, что они пробовали дальше и как часто команде приходилось вмешиваться вручную.
Короткая таблица достаточна:
- Число неуспешных или брошенных действий
- Число обращений в поддержку, связанных с проблемой
- Число отложенных или потерянных сделок
- Часы, потраченные на ручные исправления
- Возвраты, кредиты или упущенная выручка
Не останавливайтесь на счётах. Запишите обходные пути, которые клиенты используют сейчас. Возможно, они отправляют документы по почте вместо загрузки, просят продажи создавать аккаунты вручную или платят по счетам, потому что checkout ломается. Обходы держат бизнес в движении, но они скрывают реальную цену проблемы.
Один сломанный экран оплаты может принести три вида ущерба одновременно. Вы теряете выручку сейчас, поддержка теряет часы на эту неделю, а клиенты теряют доверие быстрее, чем команды ожидают. Если десять потенциальных клиентов попадают на ту же ошибку и трое не возвращаются, это не абстрактная проблема продукта. Это измеримая потеря продаж.
Используйте приближённые цифры при необходимости, но будьте честны. «12 неудачных платежей на сумму примерно $4,800» — полезно. «Некоторые пользователи испытывали проблемы» — нет. Чтобы аудит побуждал к действию, связывайте каждую проблему со временем, деньгами или риском оттока.
План на дни для аудита
Двух недель достаточно, если держать область узкой. Замораживайте новые вопросы после дня 2, если только не появляется новый риск для клиентов или выручки. Это правило не даёт работе превратиться в месяц побочных задач.
Дни 1–2 — сбор. Соберите план релиза, тикеты, заметки об инцидентах, логи деплоя, снимки мониторинга, темы из поддержки и карту владельцев. Поместите всё в одну общую папку или документ. Запишите, что покрывает аудит и что вне его рамок.
Дни 3–5 — интервью и прогон. Поговорите с владельцами доставки, ревью кода, тестирования, инфраструктуры и поддержки. Пройдите один реальный деплой от коммита до продакшена. Если какой-то шаг зависит от памяти одного человека — отметьте это как риск.
Дни 6–8 — сравнение. Сопоставьте бэклог с кодовой базой и недавними инцидентами. Некоторые тикеты выглядят завершёнными, но никогда не были выпущены. Некоторые баги не попали в бэклог. Такие пробелы нужно увидеть ясно.
Дни 9–10 — ранжирование. Расставьте находки по риску для клиента, а не по тому, кто громче спорил на митинге. Начните с проблем, блокирующих регистрации, ломающих ключевые потоки, создающих плохие данные или замедляющих откат.
Дни 11–14 — действия. Превратите каждую находку в владельца, исправление и дату. Держите первый список небольшим, чтобы команда могла его реально закрыть. Если к дню 14 никто не назначен на исправление — аудит не завершён.
Ведите один работающий скоркард на весь период. Отслеживайте открытые вопросы, подтверждённые факты, риски и решения. Это экономит часы потом.
Мелочи здесь важны. Если инженерия говорит, что деплои безопасны, но логи показывают прямые изменения в проде в пятницу вечером — доверьтесь логам. Если бэклог говорит, что фича выпущена, а поддержка по-прежнему получает те же жалобы — сначала верьте следу от клиентов.
Реалистичный пример
SaaS-стартап планировал выпустить новый биллинг-флоу в понедельник. Три недели спустя релиз всё ещё не был выпущен. Команда утверждала, что код готов, но клиенты всё ещё не могли пользоваться новыми счётами.
Первый сюрприз пришёл с владением. Инженерия закончила фичу, но релиз зависел от секретов, настроек платежного шлюза и пары ручных шагов деплоя, которые знал только ops-лид. Он был в отпуске часть задержки, и никто больше не мог с уверенностью применить изменения.
Второй вопрос был в бэклоге. Продукт объявил code freeze, а потом продолжил добавлять мелкие запросы после этой даты. По отдельности они не выглядели большими. Вместе они меняли тест-кейсы, правила приёмки и дали команде ложное чувство, что релиз почти готов.
Поддержка нашла реальный риск для клиентов раньше остальных. Несколько существующих пользователей уже видели суммы в счётах, которые выглядели неправильно в среде, похожей на staging, но подключённой к живым экспортам данных. Поддержка логировала жалобы, но никто не связал их с задержкой релиза, потому что проблема лежала между продуктом, финансами и инженерией.
Аудит прояснил ситуацию меньше чем за две недели. Команда нашла одного отсутствующего владельца для решения о релизе, отсутствие письменной практики отката и отсутствие общего чеклиста для секретов, миграций и настроек платежей. Они также выяснили, что «done» означает разное для разных людей. Инженерия думала «код смерджен». Продукт — «все поздние запросы учтены». Ops — «безопасно для деплоя». Это не одно и то же.
Когда команда назвала эти пробелы, исправления стали скучными и полезными. Они назначили одного владельца релиза, заблокировали бэклог, написали runbook отката и провели короткую репетицию деплоя. Релиз вышел на следующей неделе, и поддержка знала, за чем смотреть в первые 24 часа.
Ошибки, которые тратят две недели впустую
Две недели тают, когда люди защищаются вместо того, чтобы показывать доказательства. Аудит должен объяснить, что произошло, что ещё вредит клиентам и кто и что будет исправлять.
Первая ошибка — превращать интервью в сессии обвинений. Когда разработчик, PM или основатель чувствует себя прижатым, они перестают быть точными. Вы получаете расплывчатые фразы вроде «проблемы коммуникации» вместо фактов: «мы деплоили без шагов отката» или «никто не отвечал за финальное QA.»
Пару привычек тратят больше времени, чем команды ожидают:
- Воспринимать статус тикета как истину
- Часами спорить о названиях процессов
- Игнорировать проблемы, видимые клиентам, потому что дата уже сдвинута
- Писать находки без владельца
- Оставлять даты вне финальных заметок
Системы тикетов полезны, но они не продукт. Сравнивайте, что говорит доска, с тем, что было выпущено, что видела поддержка и чего касались клиенты. Если пять потоков поддержки упоминают одну и ту же поломку, эта проблема важнее аккуратного отчёта спринта.
Мелкие дискуссии о формулировках — ещё одна ловушка. Команды могут потратить полдня, споря, был ли это баг, изменение scope или технический долг. Ярлык редко меняет следующий шаг. Важно простое: блокировал ли это релиз, всё ещё ли это вредит пользователям и кто сейчас это фиксирует?
Одно правило держит аудит честным: каждая находка должна иметь доказательство, одного владельца и дату. Если заметка лишена хотя бы одного из этих трёх — она, вероятно, не готова выходить из комнаты.
Быстрые проверки перед закрытием аудита
Аудит не завершён, когда заметки кажутся полными. Он завершён, когда команда может ответить на несколько простых вопросов без догадок, споров или открытия десяти вкладок.
Начните с пути релиза. Один человек должен уметь объяснить, как код идёт от ветки в production, кто это утверждает, что может это заблокировать и что происходит, если шаг падает. Если никто не может рассказать эту историю от начала до конца — процесс слишком хрупкий.
Скорость отката — следующий тест. Не принимайте «мы быстро исправим» как ответ. Попросите назвать точный шаг отката, кто его выполняет и сколько это займёт под давлением. Минуты — рабочая мера. Часы обычно означают, что следующий релиз рискует сорваться по той же причине.
Затем проверьте, правда ли бэклог. Сравните топовые элементы трекера с тем, над чем инженеры работали на этой неделе. Если доска говорит «баги релиза», а команда три дня делала побочные задачи — это управленческая проблема, а не только доставка.
Влияние на клиентов должно быть конкретным. Назовите, какие клиенты или группы пользователей почувствовали задержку первыми, как они это ощутили и что для них изменилось. Возможно, demo у продаж прошёл без обещанной функции, или существующие клиенты столкнулись со сломанным шагом и в тот же день написали в поддержку.
Закройте аудиторскую работу пятью короткими проверками:
- Один человек может без подсказок объяснить весь путь релиза
- Команда может быстро откатить релиз с именованными шагами и владельцами
- Бэклог совпадает с текущей работой инженеров
- Команда знает, какие клиенты первыми почувствовали задержку
- Каждая находка имеет одного владельца и одну дату
Если хотя бы два ответа звучат расплывчато — держите аудит открытым. Чистое закрытие требует чёткого владения, реальных дат и меньше сюрпризов, чем у сдвинувшегося релиза.
Что сделать в следующие 30 дней
Тридцать дней достаточно, чтобы убрать проблемы, которые скорее всего убьют следующий релиз. Это недостаточно для масштабного переписывания — и это нормально. Лучшее действие после аудита — закрыть короткий список блокеров и упростить управление командой.
Начните с четырёх изменений:
- Исправьте риски релиза, которые могут остановить доставку
- Превратите смутное владение в простые описания ролей
- Жёстко зачистите бэклог
- Поставьте одно еженедельное ревью в календарь по безопасности деплоя и влиянию на клиентов
Безопасность релиза превыше всего, потому что один плохой деплой может стереть месяц восстановления. Если команда всё ещё выкатывает по привычке — замедлите процесс. Рутинный, повторяемый деплой лучше быстрого, который ломается случайно.
Владение обычно требует простого языка, а не новой орг-диаграммы. Запишите, кто решает, кто строит, кто проверяет логи и кто говорит с клиентами при сбое. Если двое думают, что владеют одной областью — на самом деле никто её не владеет.
Бэклог нуждается в той же честности. Оставьте только работу, которая поддерживает следующий релиз, снижает боль поддержки или уменьшает риск падения. Всё остальное — на парковку или в удаление. Команды пропускают релизы потому, что фиктивные приоритеты заглушают работу по стабильности.
Еженедельное ревью должно отслеживать несколько чисел, по которым команда может действовать: неудачные деплои, время отката, открытые баги, обращения поддержки и сколько пользователей попали на одну и ту же проблему дважды. Если число движется в неправильном направлении две недели подряд — назначьте исправление прямо на встрече.
Если нужен внешний взгляд, Oleg Sotnikov at oleg.is может просмотреть результаты аудита и помочь превратить их в практичный план восстановления. Это полезно, когда команда слишком близко к проблеме и продолжает спорить о симптомах вместо того, чтобы готовиться к следующему релизу.
Часто задаваемые вопросы
What should I check first after a missed launch?
Начните с пути релиза в production. Проверьте, кто может утвердить деплой, кто может его откатить и есть ли письменные шаги для обоих процессов. Если путь ломается, все остальные находки теряют часть смысла — команда просто не могла безопасно выпустить релиз.
How big should the audit scope be?
Держите область аудита узкой. Выберите конкретный релиз, который сорвался, запишите плановую дату, новую дату и то, что должны были получить клиенты. Просмотрите только команды и системы, которые касались этого релиза, и закончите проверку через несколько дней после провала, иначе аудит превратится в историю всей компании.
What counts as real evidence in the audit?
Используйте записи, а не память. Билеты, логи деплоя, заметки об откате, релизная документация, переписка с поддержкой и чат с отметками времени — всё это помогает. Если кто-то делает утверждение без доказательств, рассматривайте это как гипотезу для проверки, а не как факт.
Why should I map ownership before I inspect systems?
Потому что пробелы между командами часто и создают срыв. Нужен один именованный владелец для кода, инфраструктуры, решения о выпуске и реакции поддержки. Если несколько людей могут изменить что-то, но никто не отвечает за результат, это зона риска.
How can I tell if deploy safety caused the delay?
Задайте прямой вопрос: если production сломается, кто остановит это в течение пяти минут? Затем проверьте, насколько staging совпадает с production, живут ли шаги деплоя в скриптах или документах и быстро ли оповещения показывают сбой. Скрытые ручные шаги и расплывчатые планы отката обычно указывают на проблему с безопасностью деплоя.
How do I compare the backlog with what actually happened?
Соберите backlog релиза, текущую доску спринта, список открытых багов и последние заметки по релизу в одном месте. Для каждого пункта подтвердите три вещи: ушёл ли код в прод, могут ли пользователи этим пользоваться и зафиксировала ли поддержка связанные проблемы. Это быстро выявит элементы, которые были выпущены с дефектами, не выпущены или сделаны вне трекера.
Which customer impact numbers matter most?
Считайте действия, которые клиенты не смогли завершить: проваленные регистрации, неудачные платежи, сломанные шаги онбординга, обращения в поддержку, ручные обходы, возвраты и отложенные сделки дают ясную картину. Приблизительные цифры подходят, если они честны и связаны со временем, деньгами или риском оттока.
How do I keep a two-week audit from dragging on?
Заморозьте добавление новых вопросов после 2-го дня, если только не появляется новый риск для клиентов или выручки. Первые дни потратьте на сбор записей, средние — на интервью и сравнения, последние — на ранжирование находок и назначение владельцев с датами. Ведите один общий скоркард, чтобы фокус не терялся.
What mistakes usually waste these two weeks?
Сессии обвинений убивают время. То же делают долгие споры о ярлыках, слепое доверие статусам в тикет-системе и заметки без владельца или даты. Оставайтесь с фактами и задавайте три вопроса для каждого вывода: блокировал ли это релиз, всё ещё вредит ли пользователям и кто это фиксирует?
What should the team do after the audit ends?
На следующие 30 дней сфокусируйтесь на устранении блокеров, которые скорее всего сломают следующий релиз: улучшите процесс деплоя, пропишите владельцев простым языком, очистите бэклог и еженедельно проверяйте безопасность деплоя и влияние на клиентов. Если команда по окончании аудита не может объяснить путь релиза от начала до конца, продолжайте работу.