Название должности
Старший инженер-программист (C++)
Описание должности
Ищем опытного инженера-программиста для руководства разработкой основной инфраструктуры платформы Monad. В обязанности входит проектирование и реализация высокопроизводительных многопоточных стековых виртуальных машин (ВМ), которые служат основой для выполнения сложных вычислений. Кандидат также будет участвовать в создании распределенных систем, обеспечивающих консенсус с помощью механизмов византийской отказоустойчивости (BFT), гарантируя надежность в децентрализованных средах. Кроме того, вы будете разрабатывать функции ВМ, позволяющие разработчикам создавать продвинутые программы на платформе, одновременно оптимизируя производительность системы через профилирование и оценку проектных решений. Важным аспектом является сотрудничество с кросс-функциональными командами для улучшения инструментов разработки и повышения общей эффективности системы.
Ключевые обязанности
- Архитектура и разработка высокопроизводительных многопоточных стековых ВМ с дополнительными компонентами (хранилище, RPC) для поддержки масштабируемых и безопасных сред выполнения.
- Проектирование распределенных систем с использованием механизмов консенсуса BFT для обеспечения отказоустойчивости, согласованности данных и бесперебойной синхронизации между узлами.
- Реализация функций ВМ, позволяющих разработчикам использовать платформу Monad для создания сложных высокопроизводительных приложений.
- Проведение профилирования производительности для выявления узких мест и оценки архитектурных решений с целью оптимизации вычислительных потоков и эффективности системы.
- Сотрудничество с инженерными командами для улучшения инструментов разработки, включая утилиты отладки (GDB, perf), компиляторные цепочки (Clang, LLVM) и системные утилиты (Unix).
- Участие в код-ревью, ведение документации и соблюдение лучших практик в разработке программного обеспечения и проектировании систем.
- Отслеживание тенденций отрасли и новых технологий для внедрения инноваций в архитектуру ВМ и распределенных систем.
- Отладка и оптимизация сложных систем с использованием продвинутых инструментов, таких как gdb и perf, для обеспечения надежности и производительности в условиях высокой нагрузки.
- Тесное взаимодействие с заинтересованными сторонами для определения требований и предоставления решений, соответствующих долгосрочному видению платформы.
- Вклад в постоянное улучшение технологического стека, включая C++, Rust и Unix-системы, для расширения возможностей системы.
Требования к должности
- Продвинутое владение C++ и Rust для системного программирования и высоконагруженных приложений.
- Глубокое понимание архитектуры виртуальных машин, включая стековые модели выполнения и многопоточные парадигмы.
- Опыт проектирования распределенных систем, особенно в реализации алгоритмов консенсуса (например, BFT) для отказоустойчивости и синхронизации.
- Сильные навыки в оптимизации производительности, включая использование инструментов профилирования (perf, gdb) и анализ вычислительных узких мест.
- Экспертиза в Unix-системах, написании shell-скриптов, а также отладке и устранении неисправностей на системном уровне.
- Практический опыт работы с компиляторными цепочками (Clang, LLVM) и их интеграцией в процессы разработки.
- Отличные навыки решения проблем и способность проектировать масштабируемые, безопасные и эффективные программные решения.
- Владение системами контроля версий (Git) и практиками совместной разработки.
- Способность работать как самостоятельно, так и в команде для предоставления качественного кода и документации.
- Хорошие коммуникативные навыки для взаимодействия с кросс-функциональными командами и презентации технических решений заинтересованным сторонам.
- Желательно: Опыт работы с блокчейном или распределенными реестрами, а также знакомство с экосистемами инструментов разработки.
- Обязательно: 5+ лет профессионального опыта разработки программного обеспечения с акцентом на высокопроизводительные системы и распределенные архитектуры.