Команда — это не приложение к алгоритмам

В предыдущих частях мы говорили про инфраструктуру, знания, рекомендации, поиск, CVM и метрики. Всё это — технологии и процессы. Но за каждой технологией стоят люди. И от того, как вы построите команду, зависит, взлетит ли ваша персонализация или останется набором экспериментов.

Я вырастил команду персонализации в Звуке с нуля до 100+ человек за 2,5 года. Это был один из самых сложных и одновременно самых ценных опытов в моей карьере. В этой части — конкретные принципы, ошибки и уроки.

Кого нанимать первым: DS, DE или PM?

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

Сценарий 1: Нет ничего (стартап или greenfield)

Первый найм: Full-stack ML Engineer. Не Data Scientist, не Data Engineer, а именно ML Engineer — человек, который может и обучить модель, и задеплоить её, и написать пайплайн данных. На ранней стадии вам не нужна специализация — нужна скорость до первого результата.

В Звуке моим первым наймом был ML-инженер, который за 6 недель поднял первую рекомендательную модель. Не идеальную, но работающую. Это было критично — нам нужно было доказать концепцию, прежде чем нанимать команду.

Сценарий 2: Есть данные, нет ML

Первый найм: Data Scientist + ML Engineer. DS проектирует модели, MLE деплоит. Дуэт, который может работать автономно. Плюс PM — хотя бы на 50% — чтобы приоритизировать задачи и общаться с бизнесом.

Сценарий 3: Есть ML, нет Data Platform

Первый найм: Data Engineer. Если ваши модели работают на плохих данных — никакой DS не поможет. Инвестируйте в фундамент. В Звуке мы долго откладывали этот найм — и заплатили за это переработкой моделей, когда данные наконец почистили.

Структура: от 5 до 100 человек

Стадия 1: 5 человек (месяцы 1–6)

  • 1 ML Engineer — модели + деплой
  • 1 Data Engineer — пайплайны данных
  • 1 Data Scientist — эксперименты, анализ
  • 1 Backend Developer — интеграция с продуктом
  • 1 PM — приоритизация, стейкхолдеры

Это минимальная жизнеспособная команда. Она может запустить 1–2 RecSys-продукта, построить базовый пайплайн и доказать ценность персонализации.

Ключевой принцип: на этой стадии все делают всё. DS пишет код в продакшен, DE помогает с фичами, PM сам анализирует A/B-тесты. Специализация — враг скорости на старте.

Стадия 2: 15–25 человек (месяцы 6–12)

Когда доказали ценность, начинается специализация:

  • RecSys-команда (5–7 человек): DS, MLE, backend — строят рекомендательные продукты
  • Data Platform-команда (4–6 человек): DE, platform engineers — строят и поддерживают данные
  • ML Platform-команда (3–4 человек): MLOps, infra — training, serving, monitoring
  • Analytics (2–3 человека): аналитики, A/B-тесты, метрики
  • PM + Design (2–3 человека): продуктовое видение, UX

На этой стадии появляется tech lead в каждой подкоманде и Head of ML/Personalization над всем.

Стадия 3: 50–100 человек (год 2+)

Полноценное подразделение с несколькими продуктовыми командами:

  • Рекомендации — несколько команд по RecSys-продуктам
  • Поиск — отдельная команда (поиск — это свой мир)
  • CVM — retention, push, offers
  • Data Platform — масштабируется вместе с данными
  • ML Platform — shared services для всех ML-команд
  • Analytics & Experimentation — централизованная экспертиза в A/B и метриках
  • Management — VP/Director, Heads of, PMs, Scrum Masters

В Звуке к этой стадии у нас было 6 продуктовых команд, каждая с полным стеком (DS + MLE + BE + PM + Analyst), и 3 платформенные команды (Data, ML, A/B). Плюс management layer.

Роли: ML Engineer vs Data Scientist vs Analytics Engineer

Одна из частых проблем — путаница ролей. Вот как мы их разграничивали:

Data Scientist:
- Формулирует задачу в ML-терминах
- Проектирует и обучает модели
- Проводит офлайн-эксперименты
- Анализирует результаты A/B-тестов
- Не деплоит модели в продакшен (но может прототипировать)

ML Engineer:
- Переводит модели DS в production-quality код
- Строит inference-пайплайны (real-time и batch)
- Оптимизирует производительность (latency, throughput)
- Настраивает мониторинг и алерты
- Работает с ML Platform

Analytics Engineer:
- Строит data pipelines и dbt-модели
- Создаёт и поддерживает feature store
- Обеспечивает качество и доступность данных для DS
- Строит дашборды и отчёты

Data Engineer:
- Проектирует и строит Data Platform
- Real-time и batch пайплайны
- Масштабирование, надёжность, SLA
- Интеграция источников данных

Антипаттерн: нанять 5 Data Scientist'ов и ни одного ML Engineer'а. DS создают модели, которые никто не может задеплоить. Через полгода — фрустрация, увольнения, ноль impact. Я видел это дважды, второй раз — у нас самих, пока не исправили баланс.

Культура data-driven decision making

Технические навыки найти можно. Культуру — нужно строить. Вот принципы, которые мы внедряли:

1. «Данные побеждают мнения»

Любое решение о продукте должно быть подкреплено данными. Не «я думаю, пользователям понравится», а «A/B-тест показал +5% retention». Это не значит, что интуиция не важна — но интуиция формулирует гипотезу, а данные её проверяют.

2. «Быстрые эксперименты > идеальные модели»

Мы ценили скорость итерации выше качества отдельного эксперимента. Лучше запустить 10 экспериментов в месяц и найти 2 победителя, чем 3 месяца полировать один эксперимент.

3. «Fail fast, learn faster»

Неудачный эксперимент — это не провал, а информация. Мы вели «кладбище экспериментов» — базу знаний о том, что НЕ работает и почему. Это экономило недели работы будущих команд.

4. «Прозрачность результатов»

Все результаты A/B-тестов — публичные внутри компании. Любой сотрудник мог посмотреть, какие эксперименты запущены, какие результаты. Это строило доверие и вовлечённость.

5. «ML-грамотность для всех»

Мы проводили внутренние лекции и воркшопы для PM'ов, маркетологов, руководителей. Не чтобы они стали Data Scientist'ами, а чтобы понимали возможности и ограничения ML. PM, который понимает, что такое cold start, ставит более реалистичные задачи.

Как я строил команду в Звуке — ошибки и уроки

Ошибка 1: Нанимал слишком медленно

Первые полгода я пытался доказать ценность маленькой командой из 3 человек. Мы доказали — но потеряли 4 месяца, которые могли бы использовать для масштабирования. Урок: начинайте нанимать до того, как покажете результат — на основе плана, а не ретроспективно.

Ошибка 2: Не инвестировал в Data Platform сразу

Первый год мы строили модели на «сырых» данных — с пробелами, дублями, задержками. Каждая модель тратила 40% времени на preprocessing. Когда наконец вложились в Data Platform, продуктивность ML-команды выросла вдвое. Урок: Data Platform — до первой модели, а не после.

Ошибка 3: Нанял 5 DS, 0 MLE

Классика жанра. Пять талантливых DS, каждый обучает модели в Jupyter notebooks. Ни одна модель не в продакшене. Потребовалось 3 месяца, чтобы нанять MLE и разгрести технический долг. Урок: баланс ролей важнее количества людей.

Ошибка 4: Недооценил PM-функцию

«ML-команде не нужен PM, мы сами знаем, что делать.» Нет. Без PM команда оптимизирует технически интересные задачи, а не бизнес-импакт. PM — это переводчик между ML и бизнесом, и без него команда изолируется.

Что сработало

  • Hiring bar: мы не снижали планку, даже когда позиция была открыта 3 месяца. Один сильный инженер > три средних.
  • Onboarding: каждый новый сотрудник в первую неделю проводил A/B-тест (пусть простой) — сразу погружался в культуру экспериментов.
  • Ротация: DS из RecSys-команды на 3 месяца переходил в CVM-команду — это давало кросс-опыление идей и предотвращало бункеризацию.

Что дальше

В заключительной части мы разберём путь от пилота к продукту — почему 80% пилотов не масштабируются и как этого избежать.


Нужна помощь в построении ML-команды? Запишитесь на консультацию — помогу определить оптимальную структуру и нанять ключевых людей.