Про проведение экспериментов

Небольшое отступление: недавно в канале у Вани Замесина был офигенный пост про ведение блога. Если перефразировать его в двух словах, то нужно: 

  • использовать блог, чтобы "ботать" важные для себя темы
  • не бояться осуждения писать фигню
  • не переживать насчет маленькой аудитории 

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

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

Давайте попробуем так, а там посмотрим

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

Да там все просто, посчитаем конверсию и поймем

Ожидание: ну, примерно понятно с идеей, запустим, а потом легко посчитаем, какой вариант оставить.
Реальность: окажется, что именно в этом месте мы не шлем событие, и метрику не рассчитать. Везде все учитывается, а именно тут нет (это очень обидно)

Не будем делать A/B, сравним на исторических данных

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

Результаты посчитали, а что они значат? 

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

Так, есть метрики, есть конверсии, знаем, в чем стало лучше, а в чем хуже, а что дальше?

Ожидание: ну что может пойти не так с четкой гипотезой и правильными метриками?
Реальность: Метрики улучшились, но совсем немного, а пользовательский опыт субъективно ухудшился/код стал гораздо сложнее. Что делать, откатывать или оставлять?

Как же проводить эксперименты?

Самую классную теоретическую и практическую базу на тему экспериментов я встретил в курсе GoPractice. Это ни разу не реклама, и оду этому курсу я спою как-нибудь в отдельном посте. А теперь алгоритм действий по мотивам шаблона из курса:
  1. Определить, нужен ли эксперимент. Качественный эксперимент требует инвестиций времени продакта, аналитика и разработки, количество одновременных экспериментов тоже ограничено. 
  2. Описать проблему, которую хотим полечить с помощью изменений. От проблемы зависят метрики и критерии успеха. 
  3. Сформулировать гипотезу эксперимента, например, "если сделаем X, то это повлияет на Y на Z процентов". В правильной гипотезе заключена большая часть успеха эксперимента. 
  4. Подобрать тестовые группы и точку входа в эксперимент так, чтобы исключить влияние предыдущих шагов интерфейса, особенностей разбиения групп и так далее. В общем, максимально изолировать эксперимент от внешних воздействий. 
  5. Выбрать ключевые метрики на основе гипотезы. Они должны однозначно отвечать на вопрос, подтвердилась ли гипотеза. Для A/B теста важно, чтобы метрики можно было сравнивать на группах разного размера: в самый раз подойдут конверсии. Имеет смысл в лучших традициях Test Drive Development заранее подготовить расчеты метрик и прогнать их на тестовом наборе данных. 
  6. Рассчитать статистическую значимость, необходимый размер групп и длительность эксперимента. Принципиальный момент: эксперимент должен идти определенный срок, а не прерываться, как только появились признаки того, что гипотеза подтвердилась. 
  7. Описать план действий после эксперимента: в каком случае вы выбираете новый вариант, в каком старый. 
  8. Заранее подготовить таски на завершение эксперимента и расчеты. 
  9. Как только эксперимент начнется, еще раз проверить, что события летят корректно и метрики можно посчитать.

Комментарии

Популярные сообщения из этого блога

4 дисциплины исполнения. Реальный опыт

Про мышление и быстрое обучение

Waterfall на прокачку: добавляем Agile