Разработчик бэкенда в группу Проводника

Яндекс Go — один из крупнейших в России агрегаторов такси. Мы ищем разработчика бэкенда, который будет улучшать алгоритмы подбора заказов и разрабатывать кросс-платформенные фичи. Ждём, что вы работали с PostgreSQL и Unix-подобными системами, проектировали архитектуру сервисов, знаете C++/STL.Разработка кросс-платформенных фич
При разработке фич вам предстоит учитывать, что основу сервиса составляет унифицированное ядро и протокол взаимодействия с системой распределения заказов и клиентом. Благодаря этому удаётся сохранять единую логическую кодовую базу и разделять функционал для автомобилистов, велосипедистов и пешеходов на уровне протокола взаимодействия бэкенда и клиента, а также на уровне данных (например, дорожных маршрутов), которыми оперирует бэкенд. Решение архитектурных задач высоконагруженного распределённого сервиса
Вы будете выполнять оптимизацию и актуализацию архитектурных решений, которые со временем перестают эффективно справляться со своими задачами: в пиковое время в режимах Проводника одновременно находятся ≈170 тысяч человек, сервис ежесекундно проверяет ≈80 тысяч пар заказ — исполнитель, оценивает ≈200 тысяч дорожных маршрутов. Каждый год продукт растёт на 20–40%. Разработка и улучшение алгоритмов подбора заказов по пути и в районе
Вам предстоит развивать продукт за счёт новых механик или комбинации базовых механик. Примеры простых кейсов: поездка в конце рабочей смены домой с попутными заказами; подбор заказов внутри окружности. Мы заменили окружность на комбинации сложных полигонов, а поездки по пути в точку расширяем до поездок по пути в полигон. Выстраивание Проводника как платформы для создания новых продуктов
Проводник существует не только как самостоятельный продукт — он представляет собой систему, которая позволяет перемещать водителей внутри геозоны. Примеры: система быстрой подачи такси на основе FIFO-очереди водителей на парковках аэропортов (наполнение такой очереди реализовано через Проводник); режим «Обратно» в междугородних поездках (Проводник помогает подобрать заказ на обратном пути). Двигаемся в сторону модели Backend as a service. Эффективное распределение водителей по городу
Мы знаем, где и когда возникает повышенный спрос на такси, и у нас есть система перемещения водителей. На стыке этих двух фактов мы построили [сервис](https://vc.ru/yandexgo/76605-kak-algoritmy-yandekstaksi-raspredelyayut-avtomobili-v-gorode), который предлагает водителям поехать туда, где они особенно нужны. Вам предстоит улучшать качество данных и скорость работы сервиса, чтобы предложения о перемещении были ещё лучше и полезнее. Больше о бэкенде в Яндексе — в канале Yandex for Backend* Работали с бэкендом, проектировали архитектуру сервисов * Использовали реляционные базы данных, в идеале — PostgreSQL * Разрабатывали в Unix-подобных системах — Linux, macOS (терминал, cmake/make, Python/Bash-скрипты не вызывают панику) * Понимаете, как клиенты (другие сервисы, мобильное приложение) работают с бэкендом: в новых фичах ретраи и идемпотентность проектируются изначально * Знаете C++/STL (или готовы к быстрому погружению), а также классические алгоритмы и структуры данных* Работали с высоконагруженными и/или распределёнными системами * Строили системы, в которых возможны и учтены гонки данных * Работали с MongoDB, Redis/Valkey