Бизнес-цели и согласованность: чего я долго не понимал как программист

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

Это неловко признавать. Но, кажется, это норма для отрасли.

Каскад целей от вершины до ноутбука

Почему технарь не видит бизнес-цель

В большой компании между стратегией и тикетом стоит слоёный пирог из ролей: CPO, продакт, продакт-оунер, бизнес-аналитик, проджект, тимлид, скрам-мастер. Каждый слой пережёвывает контекст и передаёт вниз всё более конкретную формулировку.

Это работает. И это же ломает понимание: к разработчику приезжает уже готовый тикет с макетом и acceptance criteria. Ни одного вопроса задавать не надо - всё разжёвано. Отличный DX, нулевая связь с реальностью.

Дальше происходят три вещи:

  1. Ты начинаешь считать своей целью выход, а не результат: закрытые тикеты, смерженные PR, story points. Всё измеримо, всё зелёное, влияния на бизнес - ноль.
  2. Ты не можешь оспорить задачу по существу. Только «это дорого» или «это грязный хак». Спор про архитектуру вместо спора про гипотезу.
  3. Когда попадаешь в маленькую компанию или в свой проект, где слоёв нет, оказывается, что навыка формулировать задачу у тебя не было никогда. Его за тебя делали другие люди.

Меня к пониманию притащил не менеджмент, а свой продукт: когда некому передать «а зачем», приходится отвечать самому.

Каскад: восемь уровней

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

# Уровень Вопрос уровня Горизонт Типичные роли в компании
1 Vision / Mission Зачем мы вообще? 5+ лет Основатели, CEO, совет директоров
2 Strategy Где и за счёт чего выигрываем? 1-3 года CEO, CPO, руководители функций
3 Objectives Что должно измениться в цифрах? год / квартал Руководители бизнеса и продукта, владельцы направлений
4 KPI + Target Как узнаем, что достигли? тот же период Владелец цели, product/data/finance-лиды
5 Levers (рычаги) Через какую механику двигаем KPI? квартал Продакт, маркетинг/sales/operations-лиды, техлид
6 Initiatives Какой проект тянет рычаг? недели-месяцы Продакт-оунер, бизнес-аналитик, проджект, техлид, дизайнер
7 Team outcomes Какой вклад команды? спринт / месяц Тимлид, скрам-мастер, команда
8 IC work Что конкретно делаю я на этой неделе? дни IC: программист, дизайнер, аналитик и другие специалисты

Программист живёт на уровне 8 и иногда 7. Проблема не в этом - проблема в том, что уровни 7-8 начинают изобретать собственные цели, потому что настоящие им не показали. Так появляется «переписать на новый фреймворк» в качестве цели квартала.

Разница понятий, которые вечно путают:

Понятие Что это Пример
Objective желаемое состояние снизить возвраты
KPI чем меряем прогресс return rate %
Target порог успеха ≤ 4% к 1 октября
Metric любая измеряемая величина клики по блоку «гарантия»
Guardrail что нельзя сломать по пути CSAT не падает

Ключевое: у objective один primary KPI и один-два guardrail. Если KPI пять, команда оптимизирует тот, который проще сдвинуть.

Типичные цели по уровням

Ниже - шпаргалка того, как звучат цели на каждом этаже. Она нужна не чтобы выбрать «правильную» цель из списка, а чтобы: (а) узнавать язык уровня и (б) ловить подмену, когда сверху спускают формулировку нижнего уровня («сделайте нам мобильное приложение» - это инициатива, а не цель).

Уровень 1-2: Vision и Strategy

Vision не измеряется, и это нормально: его задача - задать рамку, внутри которой отказ от возможностей выглядит логично, а не как трусость. Проверка простая: если под vision подходит любая компания в отрасли, это не vision, а слоган.

Стратегия же - это выбор из взаимоисключающих вариантов. Типичные:

Тип стратегии Звучит как Что из неё следует вниз
Лидерство по издержкам выигрываем ценой и себестоимостью цели про юнит-экономику, автоматизацию, self-serve
Дифференциация продуктом выигрываем качеством и доверием цели про удержание, NPS, качество данных
Нишевый фокус выигрываем в одном сегменте, остальных не берём цели про долю в сегменте, а не про общий рост
Дистрибуция и скорость выигрываем каналом и темпом входа цели про партнёрства, time-to-market
Платформа и экосистема выигрываем тем, что на нас строят другие цели про интеграции, API-адопшн
Движение вверх по рынку уходим из SMB в enterprise цели про средний контракт, безопасность, комплаенс
Смена модели монетизации лицензии в подписку, разовые в recurring цели про долю recurring-выручки

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

Уровень 3: Objectives

Здесь появляются цифры, но ещё нет решений. Типичные группы:

Группа Типичные цели Кто обычно владеет
Рост привлечь новых клиентов, войти в сегмент/гео, поднять выручку CEO, CRO, продакт
Удержание снизить отток, вернуть спящих, поднять повторные покупки продакт, retention/CRM
Монетизация поднять средний чек, долю платящих, апсейл продакт, монетизация, sales
Юнит-экономика снизить CAC, поднять LTV/CAC, вывести сегмент в плюс финансы, маркетинг
Активация довести нового пользователя до ценности продакт, онбординг
Эффективность снизить стоимость обслуживания клиента, ручной труд operations, поддержка, платформа
Доверие и риск снизить возвраты, инциденты, фрод, штрафы продукт, поддержка, безопасность
Люди удержать ключевых, сократить время найма HR, руководители

Правило, которое экономит квартал: цель формулируется как изменение состояния клиента или бизнеса, а не как список работ. «Снизить возвраты» - цель. «Внедрить новую систему возвратов» - уже инициатива, и она уместна на уровне 6, а не 3.

Уровень 4: KPI и Target

Один objective - один primary KPI. Guardrail нужен всегда, потому что каждый KPI можно сдвинуть, сломав соседа:

Objective Primary KPI Типичный guardrail
Снизить отток месячный churn / NRR не терять выручку на скидках
Поднять активацию доля дошедших до ключевого действия за 7 дней нагрузка на поддержку не растёт
Поднять средний чек AOV / ARPU конверсия не падает
Снизить возвраты return rate за 30 дней CSAT (удовлетворённость) не ниже 4,6 из 5 - среднего за прошлый квартал
Снизить стоимость обслуживания cost per ticket время решения не растёт
Ускорить поставку lead time до прода частота инцидентов не растёт

Target - это порог и дата: «≤ 4% к 1 октября». Без даты цель бессрочная, а бессрочная цель не проигрывает, но и не выигрывает.

Уровень 5: Levers

Рычаг отвечает на вопрос «через какую механику». Полезно помнить, что рычагов у любого KPI конечное число, и их можно перечислить:

KPI Рычаги
Выручка трафик, конверсия, средний чек, частота покупок, цена
Отток онбординг, ощущаемая ценность, качество поддержки, цена/упаковка, миграция на годовые планы
CAC микс каналов, качество лидов, конверсия воронки продаж, реферальность
Возвраты ожидания до покупки, точность данных о товаре, качество логистики, качество самого товара
Стоимость поддержки самообслуживание, устранение причин обращений, автоматизация, шаблоны

Именно на этом уровне живёт большинство «инженерных целей»: ускорить сборку, убрать легаси, поднять покрытие тестами. Это нормальные рычаги, но они не objectives. Если такой пункт стоит в списке целей квартала без ответа на вопрос «какой KPI сверху он двигает», то команда сама себе назначила цель - ровно то, о чём было выше.

Уровень 6-8: Initiatives, team outcomes, IC

Здесь формулировки становятся конкретными, и главное требование к ним - ссылка вверх:

Уровень Хорошая формулировка Плохая формулировка
Initiative блок условий на карточке и в чекауте, тянет рычаг «ожидания до оплаты» редизайн карточки товара
Team outcome доля причин возврата «other» ниже 15% за две недели закрыть эпик к концу спринта
IC work схема reason_code и дашборд, чтобы измерить гипотезу H3 закрыл 12 тикетов

Тест из четырёх вопросов

Прежде чем взять задачу, я теперь спрашиваю:

  1. Какой уровень выше она двигает? Назови KPI или инициативу.
  2. Как мы через 2-4 недели поймём, что двигается? (leading indicator, не выручка через год)
  3. Чем нельзя жертвовать? (guardrail)
  4. Что мы не делаем, потому что взяли это?

Если ответов нет - это не задача из каскада, это пункт из чьего-то списка желаний. Иногда это нормально (техдолг, эксперимент, обучение), но тогда так и надо назвать, а не притворяться, что мы двигаем бизнес.

Четвёртый вопрос самый неприятный и самый честный. Стратегия - это в первую очередь отказ от альтернатив. Если отказа нет, стратегии тоже нет.

Программист - тоже дизайнер

Здесь мне очень помогла лекция Ильи Бирмана «Понимание задачи». Она про дизайнеров, но программист - тот же дизайнер, только его материал не пиксели, а система.

Главный тезис: дизайнеры формулируют задачу на языке дизайна - «сделать удобнее», «убрать лишний шаг», «современный сайт». Это не задача, потому что у неё нет решения: подойдёт любое. Обсуждать по существу нечего, поэтому разговор скатывается к «подвинуть логотип» и «добавить красненького».

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

Мой любимый пример из лекции: Бирман пришёл к клиенту, продающему электронные журналы, и по привычке хотел убрать регистрацию - все же знают, что регистрация это барьер. А регистрация у них была шагом воронки: сначала берут почту, потом телефон, потом звонят человеку и продают подписку под то, что он реально читал. Убрать её значило сломать бизнес-модель. Спасло только то, что клиент не дал.

Бирман приводит ещё один, отдельный пример - с онлайн-тестами. Он сформулировал задачу так: «увеличить число участников онлайн-тестов, сняв преграды к участию». Команда объяснила пользу тестов, упростила оплату и прохождение, придумала способы привлечь людей и вернуть их на сайт. Проект запустили, но он провалился: посетителей почти не было. Команда решала не ту проблему. Сначала нужно было спросить: «Откуда возьмутся люди и почему они вообще придут на этот сайт?»

Этот пример показывает разницу между результатом, рычагом и гипотезой:

  • результат - увеличить число участников;
  • рычаг - убрать преграды;
  • гипотеза - если убрать преграды, участников станет больше.

Результат был понятен, но гипотезу о причине никто не проверил. Поэтому в задаче нужно указывать не только желаемый результат, но и проверяемую гипотезу: что именно должно его сдвинуть и как мы это поймём.

И третье, что я оттуда забрал: «увеличить прибыль» - не бизнес-задача. Если бы предприниматель умел ставить себе такую задачу, он бы её просто решил. У него в голове набор гипотез: открыть второй ресторан, сменить повара, запустить акцию. Твоя работа - понять, в какую именно гипотезу он поверил и почему.

Понимание задачи надо ещё и записать. Не для формальности: пока пишешь, обнаруживаешь дыры, а клиент, читая, обнаруживает, что ты понял не то. Для программиста аналог - короткий design doc или описание в PR: контекст, гипотеза, что меряем, чем рискуем.

Где рвётся каскад

Стык Симптом
Strategy ↔ Objectives десяток годовых целей, ни от чего не отказались
Objectives ↔ KPI цели словами, без формулы, без владельца
KPI ↔ Levers vanity-метрики: охваты, число фич
Levers ↔ Initiatives «делаем проекты», но какой рычаг тянем - неизвестно
Initiatives ↔ Team дизайн и разработка изобретают свои цели
Team ↔ IC отчёт про активность (story points, число PR) вместо вклада

Последняя строка - персонально про меня прошлого. «Закрыл 12 тикетов» - это отчёт о том, что я был занят, а не о том, что что-то изменилось. Хорошая версия звучит иначе: «закрыл гипотезу H3 про блок условий на карточке товара, смотрим долю возвратов с причиной not as described через 14 дней».

Почему нельзя оптимизировать один рычаг

Отдельная ловушка: даже правильный KPI, взятый в одиночку, ломает соседей.

Оптимизируем только Что ломается
Охват мусорный трафик, конверсия падает
Конверсию агрессивный UX, растут возвраты и нагрузка на поддержку
Средний чек падает конверсия, появляется ощущение впаривания
Скорость поддержки падает качество ответов
Скорость разработки инциденты и скрытый долг

Бирман про это же: конверсию можно довести до 100%, если кнопка «купить» будет срабатывать сама. Только потом всё вернут.

Лечится это не микроменеджментом исполнителей, а связкой primary KPI + guardrails + общий обзор на уровнях 3-4. Если у команды поддержки KPI «время ответа», а у продукта «конверсия», и они не встречаются на одном ревью - они будут воевать, каждый будучи прав в своём слое.

Как это выглядит целиком

Сквозной пример, чтобы не оставалось абстракции:

Strategy: выигрываем за счёт доверия и низкой стоимости ошибок доставки,
          а не за счёт сырого охвата
  └─ Objective: снизить возвраты
      └─ KPI: return_rate = returned / paid за 30 дней, -15% за квартал
         Guardrail: CSAT (оценка удовлетворённости) не ниже среднего
                   за прошлый квартал: 4,6 из 5
          └─ Lever: ожидания клиента до оплаты
              └─ Initiative: блок условий на карточке товара и в чекауте
                  ├─ Design: понятно «что получу и когда»
                  ├─ Eng: точные данные о наличии и сроках,
                  │        структурированные причины возврата, A/B
                  └─ Support: единая таксономия причин

И мой кусок как инженера на неделю:

  • Задача: схема reason_code + фиче-флаг + дашборд
  • Ссылка вверх: двигает KPI return_rate через инициативу «блок условий»
  • DoD: события пишутся минимум для 95% возвращённых заказов
  • Leading signal: доля причины «other» ниже 15% за две недели
  • Non-goal: не трогаем сам процесс возврата в этом квартале

И критерий убийства: если leading-сигналы зелёные три недели, а return_rate не двигается - неверна гипотеза, а не исполнение. Меняем инициативу, а не давим на людей «сделайте ещё красивее».

Что я поменял у себя

  • Не начинаю с задач. Начинаю с уровней 2-4: во что мы верим и чем меряем.
  • Держу мало: 1-3 цели на квартал, один primary KPI на цель, 1-2 значимых треда в работе.
  • Любую входящую идею сначала кладу на уровень: это стратегия, цель, рычаг, инициатива или уже задача? Половина идей после этого оказывается рычагами в бэклоге, а не приоритетом.
  • В ревью смотрю на KPI и leading-сигналы, а не на процент закрытых задач.
  • Если не могу за одну фразу объяснить, какой уровень выше двигает моя работа, - иду спрашивать. Это не «лезть не в своё дело», это единственный способ не потратить квартал впустую.

Слои ролей в больших компаниях придуманы, чтобы разгрузить технаря. Побочный эффект - технарь разучивается задавать вопрос «зачем». Вопрос стоит дешевле, чем квартал работы в неверную сторону.