Software engineer Go / Инженер-программист на Go (Common Yadro Platform)
Команда единой платформы компании YADRO (Common Yadro Platform) занимается разработкой единой программной экосистемы платформенного уровня для всех продуктов компании (СХД, Серверы, Сети и Телеком).Разрабатываемая экосистема включает создание Linux-based дистрибутива ОС, разработку основных платформенных сервисов и модулей, в частности, слоя управления платформой и ОС (Platform Manager), сервисов для сбора диагностических данных, авторизации и аутентификации пользователей, посылки сообщений и алертов. Common Yadro Platform позволяет продуктовым командам сосредоточиться на разработке бизнес-логики и берет на себя большую часть жизненно важных функций платформы, предоставляя необходимые интерфейсы для вышележащих уровней ПО.
Мы ищем организованного и общительного инженера, готового участвовать в разработке платформенных сервисов в стеке Go/Linux.
Чем предстоит заниматься:
– принимать активное участие во всех стадиях разработки CYP сервисов (анализ требований, дизайн, реализация, тестирование и поддержка);
– разрабатывать компоненты единой СYP платформы в технологическом стеке Go/Linux;
– разрабатывать unit-тесты, проводить код-ревью, писать техническую документацию;
– работать в кросс-функциональной команде, взаимодействовать с QA, DevOps и Distro инженерами, а также с инженерными командами различных продуктов компании.
Мы ожидаем от будущего члена команды:
– опыт коммерческой backend разработки на Go от 3 лет;
– способность писать поддерживаемый код и тесты для него;
– понимание паттернов проектирования ПО, классических алгоритмов и структур данных, принципов тестирования ПО;
– понимание принципов сетевого взаимодействия и опыт работы с gRPC/protobuf;
– опыт работы с ОС Linux;
– опыт написания многопоточных и/или асинхронных программ;
– уверенное использование инструментов для разработки: Git, CI/CD системы, таск-трекеры (e.g. Jira), инструменты code review и т.п.;
– умение работать в команде; самостоятельность, ответственность, способность ясно излагать мысли и презентовать результаты работы команде;
– знание английского на уровне, достаточном для чтения и написания технической документации; понимание гибких подходов к разработке
Дополнительно приветствуем:
– опыт системного программирования в Linux;
– глубокое понимание и опыт программного взаимодействия с одной из следующих подсистем Linux: авторизация и аутентификация (NSS, PAM, LDAP), устройства хранения (udev, SCSI, NVMe), сеть (netlink);
– понимание принципов работы современного аппаратного обеспечения;
– опыт чтения спецификаций и написания кода по ним (например, SMTP, SNMP, Syslog, DHCP);
– опыт работы с инструментами мониторинга – Prometheus, VictoriaMetrics, Grafana, OpenTelemetry;
– знание скриптовых языков (Python, Shell, Perl, etc.) и Makefile;
– опыт разработки библиотек и инструментов для разработчиков;
– опыт работы в крупных Enterprise или Open Source проектах.