Habr Career · собрана 23 дня назад

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

Eltex

Формат не указанРоссияLead
DockerLinuxGit

Описание вакансии

C-разработчик Employment type: Полный рабочий день Grade: Middle Skills: C Description: Привет! Меня зовут Дмитрий, я 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 и другие системные инструменты. Условия работы официальное трудоустройство; работа в команде разработчиков с распределением ответственности по техническим направлениям; возможность профессионального и технического роста; участие в разработке реального продукта и принятии технических решений; ДМС (расширенный); зеленая зона, парк, уличный спорт рядом с офисом; современное офисное здание с удобной парковкой для авто и велосипедов; корпоративный транспорт; тренажерные залы в офисе, кикер и настолки; помощь с релокацией кандидатам из других городов.