Инженер-программист (МЕ)
Обязанности:
Чем предстоит заниматься: На первых этапах ознакомления с архитектурой проекта предстоит решить некоторое количество стабилизационных задач, а так же задач на развитие из разных направлений проекта. В дальнейшем, в зависимости от выбранного направления разработки, предстоит заниматься развитием и поддержкой компонентов проекта: реализация новых протоколов от конфигурирования до логики, поддержка аппаратной платформы, доработка внутрисистемных процессов, развитие функций интерфейсов управления и т.д. Контроль за разработкой осуществляется как со стороны команды, так и со стороны отдела тестирования при проверке итогового решения.
Требования:
Что требуется от кандидата: Знание структур данных и алгоритмов; Знание языка программирования C на уровне не ниже middle; Опыт разработки многопоточных приложений на языке C; Опыт разработки сетевых приложений; Опыт работы с ОС Linux на уровне пользователя; Умение читать и писать скрипты для утилиты make; Опыт работы с GIT; Понимание принципов работы L3 и L2 сетей; Опыт работы в команде; Умение проработать и разбить задачу на подзадачи; Навык чтения чужого кода и проведения code-review; Умение документировать результаты работы. Будет плюсом: Владение языками: Bash, Expect, Python, C/C++, Qt; Знание и опыт использования XML/JSON/YANG; Знание Docker; Опыт использования GDB для отладки приложений; Понимание принципов работы аппаратных средств вычислительных систем; Опыт разработки модулей и подсистем ядра Linux; Опыт работы с активным сетевым оборудованием; Опыт проектирования высоконагруженных систем. В процессе разработки используется статический анализ кода и Code Review, Docker, Gitlab, Redmine, Jenkins.