RFC для эксперимента: если в нём нет этих строк, continuous experimentation превращается в шум

Типичная картина: команда гонит тесты один за другим, результаты “то вверх, то вниз”, решения меняются каждую неделю, а спустя квартал никто не помнит, почему мы вообще раскатили фичу. Это не проблема математики. Это проблема фиксации намерений: когда не зафиксировал правила игры до старта, после старта ты всегда найдёшь “правильную” интерпретацию.

Хаос появляется так: гипотеза расползается, метрик становится десять, сегменты “вспоминаются” по факту, guardrails обсуждаются уже после просадки, а критерий успеха тихо меняется с “рост” на “ну хотя бы не хуже”. Плюс параллельные релизы и разные окна измерения, и вы уже не тестируете продукт, вы тестируете удачу.

Минимальный RFC, который масштабируется на команду, выглядит так:

  1. Гипотеза в формате “если сделаем X для Y, то изменится Z потому что…”. Один эффект, одна причинность, без “и заодно”.
  2. Primary metric: одна, с направлением и формулировкой решения. Что считаем успехом, что считаем провалом, что считаем “непонятно, повторить/переделать”.
  3. Guardrails: 2–4 метрики безопасности с порогами и владельцем реакции. Не “следим”, а “при таком-то уровне стоп/откат/пауза”.
  4. Популяция и сегменты: кто в эксперименте, единица рандомизации, критерии исключения, и какие сегменты разрешено смотреть. Если сегмента нет в RFC, он не участвует в решении.
  5. План анализа и stop/go: окно измерения, что делаем с новыми/старыми пользователями, как обходимся с выбросами/ботами/трекинг-дырами, и кто принимает решение в какой день. Плюс риски и план раскатки (флаги, мониторинг, rollback).

В правильной практике RFC пишется так, чтобы через месяц другой аналитик мог открыть документ и воспроизвести решение без созвона “а что вы тогда имели в виду”. Обычно спорят про “можно ли посмотреть ещё одну метрику” и “давайте подождём ещё пару дней” — и именно ради этого правила фиксируются заранее. Исключение простое: для чисто технических A/A или мониторинговых проверок RFC можно упростить, но primary metric, guardrails и stop/go всё равно должны быть.