Golang-разработчик
Опыт работы: 3–6 лет
Полная занятость
График: 5/2
Формат работы: удалённо или гибрид или офис
☑️ Чем предстоит заниматься
•адаптировать процесс разработки под продукт, используемые технологии и команду, предлагать и внедрять улучшения в процесс разработки: правила code review, тестирования, CI/CD, релизов, документирования и контроля качества
•спокойно относиться к конструктивной критике и уметь давать её коллегам
•работать самостоятельно, но в команде с инженерами другой специализации (разработчики на других языках, DevOps и SRE инженеров)
•выполнять оценку сроков задач и уведомлять, если оценка существенно изменилась
•проектировать и обосновывать архитектуру продуктов
•формализовывать и согласовывать требования к задачам и план их реализации
•разрабатывать сопровождаемый код, пригодный к промышленной эксплуатации, договариваться о code style на проекте
•проводить и проходить code review
•писать документацию по проекту и описание комитов
•писать автоматизированные тесты и выполнять тестирование (unit, integration и т.д.)
•находить узкие места в CPU, памяти, I/O и сетевом взаимодействии
•хорошо понимать устройство Linux на уровне, необходимом для разработки и оптимизации высоконагруженных сервисов: процессы и потоки, системные вызовы, память, I/O, сеть, файловые дескрипторы
•проводить профилирование и нагрузочное тестирование
•оптимизировать конкурентный код
•проектировать эффективные структуры данных и алгоритмы
•контролировать аллокации и потребление памяти
•работать с GC и понимать его влияние на latency
•интегрировать C/Rust SDK с Go; глубокое знание С/Rust не требуется, но потребуется уметь читать чужой код и документацию
•при необходимости использовать lock-free / wait-free подходы и атомарные операции
•читать код на python, C, Rust и, желательно, PHP
•использовать линтеры и другие инструменты контроля качества кода
•работать с sql базами данных с использованием транзакций
•работать с внешними брокерами очередей, кэшами и т.п
•собирать docker контейнеры для улучшения процесса разработки
•писать make и bash скрипты
•использовать AI-инструменты в разработке для повышения продуктивности — при этом самостоятельно проверять сгенерированный код, тесты и технические решения и нести ответственность за результат (AI-assisted development)
•читать документацию на английском языке
☑️ Наши пожелания к кандидатам
•отчуждаемость и закрытость кода (поэтому cpython или pyinstaller не подходит)
•переход части библиотек (SDK) с C на Rust
•появляются ограничения по оперативной памяти
•требуется обеспечить производительность около 1000 rps
•требуется реализовать механизмы мониторинга сервиса как при развертывании в нашей инфраструктуре, так и в инфраструктуре заказчика
P.S.: Мы не хотим использовать в этом проекте Rust, поскольку у нас нет компетенций в данном языке.