Как оценить эффект фичи на собеседовании

Формулировка кейса

Команда выкатила новую фичу (например, персонализированные рекомендации). Как вы оцените её эффект на бизнес-метрики?

Один из любимых кейсов в продуктовых командах. Задают на middle-senior позиции: Авито, Яндекс, Ozon, Wildberries, ВК.

Шаг 1. Уточнения

  • Фича уже выкачена или только планируется?
  • Выкачена через A/B или на 100% сразу?
  • Какую метрику хотим оценить? Одну или несколько.
  • Какой горизонт? 2 недели / 3 месяца / год?
  • Есть ли pre-period данные?

От этих вопросов зависит, какой метод использовать.

Шаг 2. Методы оценки

1. A/B-тест (золотой стандарт)

Если фича выкатывается через сплитер — строгий способ.

Плюсы: каузальный эффект, статистическая значимость, защита от external factors.

Минусы: нужно планировать заранее, долго (2-4 недели), не все фичи можно A/B-тестить.

Когда использовать: новая кнопка, изменение рекомендаций, тест нового UX.

2. Pre/Post анализ

Сравниваем метрику до релиза и после.

SELECT 
    CASE WHEN DATE < '2026-04-01' THEN 'pre' ELSE 'post' END AS period,
    AVG(conversion) AS avg_conv
FROM events GROUP BY 1;

Плюсы: легко, быстро, работает для 100% rollout.

Минусы: смешивается с другими изменениями (маркетинг, сезонность, конкуренты). Не каузально.

Когда использовать: для быстрого приближённого ответа + иллюстрации.

3. Difference-in-Differences (DiD)

Если фичу выкатили для одной группы (например, iOS), а на другой платформе нет — сравниваем изменения во времени:

DiD = (iOS_post - iOS_pre) - (Android_post - Android_pre)

Плюсы: контролирует общие тренды (сезонность, рынок).

Минусы: требует parallel trends до релиза.

Когда использовать: частичный rollout по сегментам (gradual), когда A/B невозможен.

4. Синтетический контроль (synthetic control)

Строим «искусственный» контроль как взвешенную комбинацию похожих групп/единиц. Используется в academic research и economics.

Когда использовать: большие unit (регион, страна), когда A/B и DiD не подходят.

5. Causal Impact (Google)

Bayesian time-series метод: моделирует, как бы метрика развивалась без интервенции.

# Python package CausalImpact
from causalimpact import CausalImpact

pre_period = ['2026-01-01', '2026-03-31']
post_period = ['2026-04-01', '2026-04-30']

ci = CausalImpact(data, pre_period, post_period)
print(ci.summary())

Плюсы: автоматический, даёт confidence interval.

Минусы: нужен набор covariate series (не-затронутых метрик), результат — эвристика.

Шаг 3. Выбор метода

Ситуация Метод
Фича на A/B-тесте A/B-тест
Выкатили на 100% сразу, есть pre-data Pre/Post + DiD
Выкатили на сегмент (iOS/регион) Difference-in-Differences
Регион-уровень, большие unit Synthetic Control
Бизнес-решение, быстрый ответ CausalImpact

Больше таких примеров с разборами — в Telegram-тренажёре. Короткие сессии, прогресс по темам, объяснения после каждого ответа.

Шаг 4. Практический пример

Команда выкатила персонализированные рекомендации на всех iOS-пользователей. Android не получил. Как оценить эффект на GMV?

Решение DiD:

WITH stats AS (
    SELECT
        platform,
        CASE WHEN DATE < '2026-04-01' THEN 'pre' ELSE 'post' END AS period,
        SUM(amount) AS gmv
    FROM orders
    GROUP BY 1, 2
)
SELECT
    (SELECT gmv FROM stats WHERE platform='iOS' AND period='post') -
    (SELECT gmv FROM stats WHERE platform='iOS' AND period='pre') AS ios_delta,
    (SELECT gmv FROM stats WHERE platform='Android' AND period='post') -
    (SELECT gmv FROM stats WHERE platform='Android' AND period='pre') AS android_delta;

Разница между delta = каузальный эффект (при условии parallel trends).

Проверка parallel trends: в pre-period iOS и Android двигались похоже? Если да — DiD валиден.

Шаг 5. Guardrail-метрики

Не только main-метрика:

  • Retention D7.
  • Crash rate / app errors.
  • Скорость загрузки.
  • Revenue (если main ≠ revenue).

Если main выросла, но guardrail просел — результат неоднозначный.

Шаг 6. Segmentation

Эффект может быть гетерогенным:

  • Work для новых, не работает для старых.
  • Работает на iOS, хуже на Android.
  • Работает в Москве, хуже в регионах.

Смотрим эффект по сегментам.

Шаг 7. Что говорим PM

«Фичу оценил через DiD: iOS получил фичу, Android — контроль. В pre-period тренды parallel (OK). Post-period: iOS GMV +8%, Android +1% — каузальный эффект ~7%. Confidence interval [+4%, +10%]. Guardrails ок. Рекомендую раскатать на Android».

Типичные ошибки

  • Использовать только pre/post и называть это оценкой фичи. Это не каузальный метод.
  • Игнорировать external factors (сезонность, другие изменения).
  • Не проверять parallel trends для DiD.
  • Один метод — один ответ. Лучше показать 2-3 метода с разных сторон.

Если готовишься к собесу — бот @kariernik_bot закрывает 80% технических вопросов. SQL, Python, A/B, продуктовые метрики — всё в одном месте.

Шаблон ответа

  1. Уточнения (rollout strategy, метрики, горизонт).
  2. Выбор метода (A/B, pre/post, DiD, CausalImpact).
  3. Расчёт эффекта.
  4. Guardrails + segmentation.
  5. Интерпретация + доверительные интервалы.
  6. Рекомендация (катить / не катить / продолжить наблюдение).

Как тренироваться

Impact assessment — senior-тема. Требует понимания всех методов. Тренажёр Карьерник содержит кейсы на оценку фич, A/B и квази-эксперименты.

Совет: на собесе упомяните все 4-5 методов, и уверенно выберите один под текущую ситуацию. Это показывает и знания, и критическое мышление.

Читайте также

FAQ

A/B-тест или пре/пост — что выбрать?

A/B всегда строже. Pre/post — быстро, но смешивается с внешними факторами. Если можно A/B — A/B.

Difference-in-Differences — когда не работает?

Когда нарушены parallel trends: до релиза группы двигались по-разному. Или когда обе группы одновременно затронуты внешним event. DiD тогда даёт смещённую оценку.

Synthetic Control — сложно?

Да, требует навыков в причинно-следственном анализе и доступ к Python/R пакетам (CausalImpact, SCM). Но для больших решений (раскатка на страну) это главный метод.

Сколько ждать, чтобы оценить эффект?

Зависит от фичи. Для UX-изменений — 2 недели (отработает novelty). Для retention — 30+ дней. Для LTV — 90+ дней. Всегда заранее определяйте минимальный период.