Москва
Обязанности:
- Проектировать и воплощать в коде функции блока аппаратной абстракции, обеспечивающего программирование состояния передающего уровня (Data Plane) Ethernet и IP в аппаратный компонент—специализированный обработчик передачи данных (network ASIC);
- Разрабатывать и писать тесты, подтверждающие ожидаемое поведение Data Plane;
- Исправлять ошибки (баги) и улучшать производительность системы;
- Взаимодействовать с разработчиками других блоков, например, Control Plane;
- Следить за развитием и тенденциями отрасли с целью реализации в нашем продукте функций, отвечающих запросам рынка;
- Принимать участие в планировании развития итогового продукта (roadmap).
Требования:
- Умение и опыт программирования на C — именно на этом языке написаны наши компоненты ОС программирующие сетевые процессоры и SDK, которые мы используем;
- Умение работать с большим массивом кода: способность интерпретировать написанный чужой код и быстро вникать в логику, заложенную разработчиками;
- Умение работать в отладчике;
- Операционные системы Linux на уровне понимания архитектуры данного семейства ОС, способности заглянуть в код, например ядра Linux, когда необходимо улучшить свое понимание устройства какого-то смежного компонента. И, конечно, нужно быть уверенным пользователем этих ОС;
- Принципы построения сетевых инфраструктур и функционирования использующихся в них протоколах (Ethernet, IP, control plane протоколы BGP, OSPF), с умением работать со стандартами IETF RFC, IEEE и пр.
Будет плюсом:
- Опыт разработки ПО, непосредственно (через SDK производителя) взаимодействующего с аппаратными компонентами — программируемыми интегральными схемами, микроконтроллерами, специализированными процессорами;
- Понимание современного устройства процесса разработки ПО:
- работа с кодом в системе SCM (Git, GitLab);
- работа с системами сборки autoconf, automake, make;
- применение подходов DevOps и CI/CD;
- работа с задачами в трекере (Jira и пр.), проектная работа Agile Scrum.
- Знание архитектуры сетевого блока ядра Linux;
- Опыт разработки многопоточных приложений;
- Опыт разработки сервисов (daemons) в среде Linux;
- Опыт разработки патчей для Linux Kernel или других больших Open Source проектов;
- Опыт разработки и сопровождения решений с высокими требованиями к надежности;
- Понимание принципов работы цифровой схемотехники;
- Знание протокола связи I2C, интерфейсов SMBus и PMBus, интерфейса ACPI.
Условия:
- 5/2, удаленный формат работы;
- Официальное трудоустройство (белая заработная плата, оплачиваемые отпуска, больничные);
- После прохождения испытательного срока ДМС.