C-разработчик
Навыки: C. Квалификация: Middle. Специализации: Инженер встраиваемых систем.
Привет! Меня зовут Дмитрий, я Team Lead команды разработки в отделе Сервисных маршрутизаторов.
Мы разрабатываем программное обеспечение для сетевых устройств, которые используются в качестве пограничных маршрутизаторов. Аппаратные платформы устройств также разрабатываются на нашем предприятии, поэтому мы работаем на стыке Linux, сетевых технологий и embedded-разработки.
Наш проект представляет собой полноценный программный стек сетевого устройства:
-
начальные загрузчики (Bootloader);
-
операционная система Linux;
-
драйверы устройств и вспомогательные модули ядра;
-
системные процессы, библиотеки и утилиты;
-
протоколы маршрутизации и коммутации;
-
системы управления устройством и интерфейсы для его настройки.
Проект постоянно развивается: появляются новые аппаратные платформы, сетевые протоколы и функции, расширяются возможности управления устройствами. Поэтому перед командой регулярно возникают задачи как по развитию существующего функционала, так и по созданию новых компонентов с нуля.
Нам нужен Middle-разработчик, который сможет самостоятельно решать технические задачи, разбираться в существующем коде и постепенно брать ответственность за отдельные компоненты проекта.
Чем предстоит заниматься
На этапе адаптации предстоит познакомиться с архитектурой проекта, инструментами разработки и существующим кодом. Первые задачи будут связаны со стабилизацией и развитием различных компонентов, что позволит постепенно погрузиться в проект.
В дальнейшем, в зависимости от выбранного направления, предстоит заниматься:
-
разработкой и развитием сетевых протоколов и функций маршрутизации и коммутации;
-
реализацией функциональности от конфигурирования до логики работы протокола;
-
разработкой и сопровождением системных процессов и библиотек;
-
поддержкой аппаратных платформ и взаимодействием с драйверами;
-
развитием интерфейсов управления устройством;
-
анализом и устранением сложных проблем на уровне приложения, ОС и сетевого стека;
-
проектированием и реализацией новых компонентов;
-
рефакторингом и развитием существующего кода.
Разработка ведётся совместно с другими участниками проекта. Решения проходят Code Review, а итоговая функциональность проверяется командой разработки и отделом тестирования.
Что требуется от кандидата
-
уверенное знание языка C/С++ и опыт промышленной разработки на нём;
-
понимание структур данных, алгоритмов и основных принципов разработки ПО;
-
опыт разработки многопоточных приложений;
-
понимание процессов, потоков, системных вызовов и механизмов IPC в Linux;
-
опыт разработки сетевых приложений;
-
понимание принципов работы L2/L3 сетей и TCP/IP;
-
уверенная работа с Linux на уровне разработчика;
-
опыт работы с Git;
-
понимание принципов сборки проектов с использованием make и Makefile;
-
способность самостоятельно разобраться в существующем коде и архитектуре;
-
умение декомпозировать задачи на подзадачи и самостоятельно оценивать объём работ;
-
опыт проведения и прохождения Code Review;
-
умение документировать технические решения и результаты работы;
-
опыт командной разработки.
Будет плюсом
-
опыт разработки для embedded/Linux-платформ;
-
опыт разработки модулей и подсистем ядра Linux;
-
опыт работы с активным сетевым оборудованием;
-
знание сетевых протоколов маршрутизации и коммутации;
-
практический опыт использования Wireshark, tcpdump;
-
опыт отладки с использованием GDB, Valgrind, Sanitizer;
-
знание Docker;
-
опыт проектирования и разработки высоконагруженных или отказоустойчивых систем.
Что интересного в работе
-
разрабатываем собственное сетевое оборудование и ПО полного стека — от Bootloader и Linux kernel до сетевых протоколов и интерфейсов управления;
-
можно глубоко погрузиться в Linux, networking и системную разработку;
-
работаем с реальным сетевым оборудованием, а не только с виртуальной инфраструктурой;
-
задачи разного уровня: от исправления отдельных проблем до проектирования и реализации новых подсистем;
-
можно выбрать и постепенно развивать собственное техническое направление;
-
разработчики участвуют в обсуждении архитектуры и принятии технических решений;
-
направление активно развивается: меняются архитектура, процессы и структура команд, появляются новые задачи и зоны ответственности;
-
для проактивных людей здесь есть пространство для инициативы: можно не только решать поставленные задачи, но и предлагать и реализовывать собственные улучшения;
-
используем Code Review, статический анализ и автоматические проверки качества кода.
В процессе разработки используем:
C, С++, Linux, Git, GitLab, Redmine, Jenkins, Docker, Make, AI.
Для анализа, диагностики и отладки используем GDB, Valgrind, Sanitizer, tcpdump, Wireshark и другие системные инструменты. Условия работы
-
официальное трудоустройство;
-
работа в команде разработчиков с распределением ответственности по техническим направлениям;
-
возможность профессионального и технического роста;
-
участие в разработке реального продукта и принятии технических решений;
-
ДМС (расширенный);
-
зеленая зона, парк, уличный спорт рядом с офисом;
-
современное офисное здание с удобной парковкой для авто и велосипедов;
-
корпоративный транспорт;
-
тренажерные залы в офисе, кикер и настолки;
-
помощь с релокацией кандидатам из других городов.
-
openqareer не кадровое агентство: вакансия собрана с открытого источника, отклик подаётся на сайте работодателя.