Требуемый опыт работы: 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.