Требуемый опыт работы: 3–6 лет
Мы ищем опытного С++ разработчика в команду разработки нового инновационного продукта компании. Это low-code конструктор для автоматизированного проектирования распределенных и отказоустойчивых систем управления бизнес-процессами, основанный на акторной модели взаимодействия, с поддержкой автоматического восстановления после сбоев. Ядро продукта разрабатывалось около двух лет – сейчас подходим к релизу MVP и планируем расширять функциональность. Продуктом будут пользоваться клиенты и наши коллеги из компании FIS.
Чем предстоит заниматься:
- Разрабатывать ядро нового продукта компании на C++;
- Работать над задачами разработки языка программирования и интеграций, улучшением производительности, отказоустойчивости и масштабируемости системы;
- Проектировать, реализовывать и тестировать новые распределенные решения;
- Профилировать и оптимизировать код;
- Технологические области разработки: серверное ПО для ОС Linux, компилятор, распределенные вычисления, language server.
Наш технологический стек:
- Основной язык разработки – C++17;
- Python для автоматизации тестирования и отладочных компонент;
- Jira для планирования задач;
- Gerrit для Code Review.
Наши принципы разработки:
- Раннее обнаружение проблем. Ключевой принцип, направленный на сокращение издержек в дальнейшем;
- Поощрение каждому привносить идеи. Инновационный продукт требует участия всей команды;
- Поощрение горизонтальных связей в процессе принятия решений. Это позволяет передавать важную техническую информацию в неизменном виде;
- Строгий процесс приемки. Технические решения оцениваются на предмет всех возможных недостатков на всех уровнях интереса.
- Инвестиции в тестируемость. Прямое следствие принципа «Раннее обнаружение проблем». Приемочное тестирование является ключевым моментом разработки функциональности.
Что мы ожидаем от вас:
- Уверенное владение С++/14-17, boost (5+ лет опыта) и готовность на нём разрабатывать;
- Умение самостоятельно проектировать решения на C++;
- Знание основных структур данных и алгоритмов;
- Опыт использования шаблонов С++ и понимание их работы;
- Понимание многопоточного и асинхронного программирования;
- Опыт отладки, профилирования и оптимизации кода;
- Хорошее знание английского языка, достаточное для чтения технической документации, проектирования и документирования собственных разработок.
Будет плюсом:
- Опыт разработки компилятора, интерпретатора или language server;
- Опыт проведения code review в роли ревьювера;
- Практический опыт в написании распределенных программ;
- Умение писать unit-тесты, понимание подходов к тестированию собственного кода;
- Уверенное знание Linux и опыт разработки под эту ОС;
- Знание Docker.