C-разработчик (Embedded/Linux)
Описание
C-разработчикКомпанияУсловияТребованияИнженер встраиваемых систем Middle C Новосибирск Привет! Меня зовут Дмитрий, я 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 и другие системные инструменты. ** Условия работы**официальное трудоустройство;работа в команде разработчиков с распределением ответственности по техническим направлениям;возможность профессионального и технического роста;участие в разработке реального продукта и принятии технических решений;ДМС (расширенный);зеленая зона, парк, уличный спорт рядом с офисом;современное офисное здание с удобной парковкой для авто и велосипедов;корпоративный транспорт;тренажерные залы в офисе, кикер и настолки;помощь с релокацией кандидатам из других городов.