C++ разработчик в 2ГИС Mobile SDK
Прямой работодатель 2ГИС ( 2gis.ru )
Опыт работы от 3 до 5 лет
О проекте:
Мобильным приложением 2ГИС ежемесячно пользуется более 20 миллионов человек. Ищут адреса и фирмы, изучают карту, ездят по навигатору. Всё это должно работать быстро, надёжно и офлайн на ограниченных ресурсах мобильного телефона. Для этого основная бизнес-логика продукта реализована в виде кроссплатформенного SDK на C++, который делает наша команда. Сейчас это внутренний продукт, используемый в рамках 2ГИС, но перед нами стоит амбициозная задача сделать классное публичное API для сторонних разработчиков, что задирает планку качества ещё выше.
В рамках SDK нужно дорабатывать существующие и создавать новые компоненты.
Вот далеко не полный перечень того, чем предстоит заниматься:
- работа с картой: инструменты управления и визуализация различных данных;
- навигатор: построение и обновление маршрута, притяжка геопозиции к линии маршрута, озвучивание голосовых инструкций;
- компактное хранение на устройстве и инкрементальные фоновые обновления справочных данных;
- реклама: обновление дельтами раз в 15 минут, компактное хранение, быстрое подмешивание рекламных материалов в выдачу;
- собственная система аналитики для сбора бизнес- и продуктовых метрик внутри продукта;
- профилирование и оптимизация — боремся за миллисекунды на «горячих» участках кода.
Технически проект представляет собой несколько сотен тысяч строк кода на C++17. Используем CMake, свежие версии компиляторов (clang-10, gcc-10, Visual Studio 2019 — кому что удобней), clang-tidy. Обязательное ревью и сборки на CI перед вливанием организованы средствами Bitbucket Server и Jenkins. Иногда пишем вспомогательные скрипты на Python.
Мы ждём от тебя:
- отличное знание C++14/17 и опыт коммерческой разработки на нём от 2 лет;
- сильная алгоритмическая подготовка (знание основных алгоритмов и структур данных, умение оценивать сложность алгоритмов);
- умение самостоятельно разработать сложное программное решение — от проработки и обсуждения требований до проектирования архитектуры и написания качественного кода;
- умение работать в команде, работать с чужим кодом;
- умение писать эффективный и понятный код.
Будет плюсом:
- опыт мобильной/кроссплатформенной разработки на С++;
- опыт разработки многопоточных приложений;
- навыки измерения производительности и профилирования графических программ;
- опыт работы с Jenkins, знание Python, CMake.
Немного об R&D 2ГИС:
У нас комфортные офисы в городе Новосибирске и удобный график работы. Спокойно относимся к удалёнке. Даже после карантина. Если захочешь работать из офиса — поможем с релокацией в Новосибирск. На выбор предоставляем несколько вариантов техники и ОС, наиболее комфортных для работы. Для удалёнки — доставим и поможем настроить.