К содержимому

C-разработчик

EltexНовосибирск

Навыки: 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 не кадровое агентство: вакансия собрана с открытого источника, отклик подаётся на сайте работодателя.