Старший разработчик на C++ в Ритм
Yandex · Москва ·
- Seniority
- Senior
- Category
- Software engineering
Яндекс Ритм — рекомендательный сервис для поиска товаров и услуг. Наш основной продукт — бесконечная контентная лента. Мы ищем сильного разработчика. Откликайтесь, если владеете C++ и стандартной библиотекой, разбираетесь в базовых алгоритмах и структурах данных и умеете писать скрипты на Python.Умное смешивание контента в ленте
Сейчас лента собирается из карточек разных типов, и каждый источник отбирает лучшее со своей точки зрения. Главный вопрос, на который мы отвечаем: контент какого типа интереснее конкретному пользователю прямо сейчас? Вы будете строить технологию смешивания — от быстрой эвристики, которая уже регулирует состав ленты, до полноценного ранжирования самих карточек с помощью моделей. Ограничения здесь вполне инженерные: ранжирование должно укладываться в сотни миллисекунд на запрос, реакцию пользователя нужно учитывать как можно быстрее, а новый тип карточек — подключать без переписывания половины сервиса. Вам предстоит реализовывать этот контур, доставлять признаки и выстраивать логирование так, чтобы на этих данных можно было обучать модели. Новые типы контента и общая база объектов
Мы расширяем состав ленты за счёт интеграций с внутренними и внешними сервисами: у каждого своя модель контента, свои идентификаторы и свой способ отдавать рекомендации. Ваша задача — сделать так, чтобы подключение очередного источника было рутиной, а не проектом на квартал. Для этого мы строим общую базу объектов: единое представление карточки, её признаки и накопленную статистику, а также доставку всех этих данных до сервиса рекомендаций. Здесь вы будете придумывать схему хранения, продумывать архитектуру интеграций и решать, что считать онлайн, а что с помощью офлайн-процессов. Развитие платного продвижения
Часть карточек в ленте продвигается за деньги, и это отдельный технический контур: отбор продвигаемых объектов, аукцион, предсказание вероятности клика, связка карточек с рекламными кампаниями и учёт конверсий. Вы будете развивать рекламное ранжирование вместе с ML-инженерами и аналитиками — от формулы отбора до скорости, с которой новый продвигаемый объект доезжает до выдачи. Задача интересна тем, что здесь всё время приходится соблюдать баланс: продвижение приносит выручку, но конкурирует за внимание пользователя с органическим контентом. Решения принимаются на основе экспериментов, и вы будете видеть эффект своей работы и в деньгах, и в продуктовых метриках. Масштабирование на новые поверхности и пользовательские сценарии
Ритм расширяет список площадок, на которых показывается лента, поэтому вам предстоит поддерживать такие интеграции: управлять тем, какой набор контента доступен на конкретной поверхности, и учитывать её ограничения. Отдельный пласт работы — новые пользовательские сценарии, часто находящиеся на стыке нескольких сервисов Яндекса, которые повышают вовлечённость и приносят прибыль. Инфраструктура и данные сервиса
Вы будете работать с YDB, заниматься обработкой данных и офлайн-процессами: считать статистику по объектам, готовить данные для моделей, поддерживать регулярные расчёты и следить за тем, чтобы всё это не деградировало под нагрузкой. Больше о бэкенде в Яндексе — в канале Yandex for Backend* Отлично владеете C++ и стандартной библиотекой * Разбираетесь в базовых алгоритмах и структурах данных * Умеете писать скрипты на Python * Понимаете, как устроены высоконагруженные сервисы, и умеете искать узкие места * Хотите участвовать в жизни продукта и вносить собственные идеи* Работали с YDB или другими распределёнными базами данных * Занимались обработкой больших объёмов данных в офлайн-пайплайнах * Знакомы с фреймворком userver * Имеете опыт работы с рекомендательными или поисковыми системами. * Умеете работать с ML-моделями в продакшене — пусть и со стороны бэкенда
Сейчас лента собирается из карточек разных типов, и каждый источник отбирает лучшее со своей точки зрения. Главный вопрос, на который мы отвечаем: контент какого типа интереснее конкретному пользователю прямо сейчас? Вы будете строить технологию смешивания — от быстрой эвристики, которая уже регулирует состав ленты, до полноценного ранжирования самих карточек с помощью моделей. Ограничения здесь вполне инженерные: ранжирование должно укладываться в сотни миллисекунд на запрос, реакцию пользователя нужно учитывать как можно быстрее, а новый тип карточек — подключать без переписывания половины сервиса. Вам предстоит реализовывать этот контур, доставлять признаки и выстраивать логирование так, чтобы на этих данных можно было обучать модели. Новые типы контента и общая база объектов
Мы расширяем состав ленты за счёт интеграций с внутренними и внешними сервисами: у каждого своя модель контента, свои идентификаторы и свой способ отдавать рекомендации. Ваша задача — сделать так, чтобы подключение очередного источника было рутиной, а не проектом на квартал. Для этого мы строим общую базу объектов: единое представление карточки, её признаки и накопленную статистику, а также доставку всех этих данных до сервиса рекомендаций. Здесь вы будете придумывать схему хранения, продумывать архитектуру интеграций и решать, что считать онлайн, а что с помощью офлайн-процессов. Развитие платного продвижения
Часть карточек в ленте продвигается за деньги, и это отдельный технический контур: отбор продвигаемых объектов, аукцион, предсказание вероятности клика, связка карточек с рекламными кампаниями и учёт конверсий. Вы будете развивать рекламное ранжирование вместе с ML-инженерами и аналитиками — от формулы отбора до скорости, с которой новый продвигаемый объект доезжает до выдачи. Задача интересна тем, что здесь всё время приходится соблюдать баланс: продвижение приносит выручку, но конкурирует за внимание пользователя с органическим контентом. Решения принимаются на основе экспериментов, и вы будете видеть эффект своей работы и в деньгах, и в продуктовых метриках. Масштабирование на новые поверхности и пользовательские сценарии
Ритм расширяет список площадок, на которых показывается лента, поэтому вам предстоит поддерживать такие интеграции: управлять тем, какой набор контента доступен на конкретной поверхности, и учитывать её ограничения. Отдельный пласт работы — новые пользовательские сценарии, часто находящиеся на стыке нескольких сервисов Яндекса, которые повышают вовлечённость и приносят прибыль. Инфраструктура и данные сервиса
Вы будете работать с YDB, заниматься обработкой данных и офлайн-процессами: считать статистику по объектам, готовить данные для моделей, поддерживать регулярные расчёты и следить за тем, чтобы всё это не деградировало под нагрузкой. Больше о бэкенде в Яндексе — в канале Yandex for Backend* Отлично владеете C++ и стандартной библиотекой * Разбираетесь в базовых алгоритмах и структурах данных * Умеете писать скрипты на Python * Понимаете, как устроены высоконагруженные сервисы, и умеете искать узкие места * Хотите участвовать в жизни продукта и вносить собственные идеи* Работали с YDB или другими распределёнными базами данных * Занимались обработкой больших объёмов данных в офлайн-пайплайнах * Знакомы с фреймворком userver * Имеете опыт работы с рекомендательными или поисковыми системами. * Умеете работать с ML-моделями в продакшене — пусть и со стороны бэкенда