Старший разработчик на C++ в Ритм

Яндекс · Москва · по договорённости

Компания
Яндекс
Город
Москва
Зарплата
по договорённости
Уровень
senior
Формат
гибрид

Яндекс Ритм — рекомендательный сервис для поиска товаров и услуг. Наш основной продукт — бесконечная контентная лента: она живёт на главной Яндекса на [ya.ru]([контакты и ссылка отклика — после бесплатной регистрации] и в поисковом приложении, а ещё у нас есть отдельный веб-сервис и приложения для iOS и Android. Каждый день лента показывает пользователям десятки миллионов карточек и подстраивается под то, что человеку интересно именно сейчас.

Цель сервиса — показать пользователю самый интересный контент среди доступных предложений и вырастить длительность просмотра, клики и покупки. Для этого мы строим собственный рекомендательный контур, работаем с десятком внутренних сервисов — рекомендациями, поиском, статистикой, модерацией, — а также обеспечиваем загрузку и импорт контента и поддерживаем всю инфраструктуру сервиса.

Команда бэкенда пишет на C++ и отвечает за всё, что происходит между запросом пользователя и готовой лентой: отбор кандидатов и ранжирование через сервис рекомендаций, обогащение карточек данными, логирование для обучения моделей и доставку всего этого на разные поверхности за сотни миллисекунд.

Что предстоит делать:
Умное смешивание контента в ленте

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

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

Новые типы контента и общая база объектов

Мы расширяем состав ленты за счёт интеграций с внутренними и внешними сервисами: у каждого своя модель контента, свои идентификаторы и свой способ отдавать рекомендации. Ваша задача — сделать так, чтобы подключение очередного источника было рутиной, а не проектом на квартал.

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

Развитие платного продвижения

Часть карточек в ленте продвигается за деньги, и это отдельный технический контур: отбор продвигаемых объектов, аукцион, предсказание вероятности клика, связка карточек с рекламными кампаниями и учёт конверсий. Вы будете развивать рекламное ранжирование вместе с ML-инженерами и аналитиками — от формулы отбора до скорости, с которой новый продвигаемый объект доезжает до выдачи.

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

Масштабирование на новые поверхности и пользовательские сценарии

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

Инфраструктура и данные сервиса

Вы будете работать с YDB, заниматься обработкой данных и офлайн-процессами: считать статистику по объектам, готовить данные для моделей, поддерживать регулярные расчёты и следить за тем, чтобы всё это не деградировало под нагрузкой.

Больше о б

Открыть и откликнуться →

Отклик ведёт на сайт работодателя. Бесплатная регистрация открывает отклик и разбор резюме.

Многих вакансий каталога нет на агрегаторах

9400+ вакансий от 1600+ компаний — в основном напрямую с карьерных сайтов и из Telegram-каналов. У 800+ из них есть контакт нанимающего: пишешь человеку, а не в общую очередь. Регистрация бесплатная — откроет контакты и подбор вакансий под твоё резюме.