Стоимость ошибки: почему раньше — дешевле

Считаем, во что обходится баг на разных стадиях и почему «починим потом» — самая дорогая стратегия.

Стоимость дефекта растёт тем сильнее, чем позже его находят: исправить ошибку в требованиях почти бесплатно, а тот же дефект в продакшене обходится в десятки раз дороже.

Кривая стоимости

Классическое наблюдение индустрии: цена исправления дефекта увеличивается на каждом следующем этапе разработки. Опечатку в требованиях правят за минуту, а аналогичную ошибку, всплывшую у клиента, чинят командой, с откатом релиза и репутационными потерями.

Где найден дефектОтносительная стоимость
Требования / дизайн×1
Написание кода×5
Тестирование (QA)×10
Продакшен (у пользователя)×30 и выше

Конкретные цифры зависят от проекта, но порядок неизменен: чем позже — тем дороже. Причина проста: на поздних этапах дефект уже «оброс» зависимым кодом, документацией, данными пользователей, и его исправление задевает больше частей системы.

Почему позже дороже

  • Контекст забыт. Через три месяца автор уже не помнит, почему написал так. Разобраться заново — время.
  • Дефект распространился. На багованный модуль уже завязались другие части. Правка одного места ломает другое.
  • Ущерб уже нанесён. В продакшене баг успевает испортить данные, оттолкнуть клиентов, сорвать оплату.

Маленькая иллюстрация

Представим простую модель: фиксированная базовая стоимость и множитель по стадии. Видно, как быстро растёт цифра.

BASE = 1  # условная стоимость правки в требованиях
stage_multiplier = {
    "требования": 1,
    "код": 5,
    "тестирование": 10,
    "продакшен": 30,
}

for stage, mult in stage_multiplier.items():
    cost = BASE * mult
    print(f"{stage:13} -> стоимость {cost}")

# «Тест» на саму идею: продакшен дороже требований минимум в 30 раз
assert stage_multiplier["продакшен"] >= stage_multiplier["требования"] * 30
print("Подтверждено: позже найден — дороже исправить")

Вывод:

требования    -> стоимость 1
код           -> стоимость 5
тестирование  -> стоимость 10
продакшен     -> стоимость 30
Подтверждено: позже найден — дороже исправить

Практический вывод

Отсюда вся современная культура «сдвига влево» (shift-left): тестировать как можно раньше, проверять требования, писать unit-тесты вместе с кодом, ловить ошибки до того, как они доберутся до пользователя. Это не перестраховка, а экономия.

Итог

  • Стоимость дефекта растёт с каждым этапом — порядок роста неизменен.
  • Поздний баг дорог из-за забытого контекста, распространения и нанесённого ущерба.
  • Ранняя проверка — это экономия, а не лишняя бюрократия.
Проверьте себя
1. Как меняется стоимость исправления дефекта по ходу разработки?
AРастёт: чем позже найден, тем дороже исправить
BОстаётся постоянной на всех этапах
CПадает к продакшену
DЗависит только от языка программирования
2. Почему баг в продакшене особенно дорог?
AПродакшен-серверы дороже стоят
BКонтекст забыт, дефект распространился, а ущерб уже нанесён пользователям
CВ продакшене нельзя править код
DПотому что там нет тестов
3. Какой вывод следует из кривой стоимости ошибки?
AТестировать нужно только перед релизом
BМожно вовсе не тестировать, если код пишет опытный разработчик
CТестировать и проверять как можно раньше (shift-left)
DДостаточно ручного тестирования в конце