Применяет алгоритмы для системного ПО: B-tree для FS, hash tables с open addressing, cache-oblivious algorithms. Оценивает hardware-specific complexity.
Роли · Systems Programmer (C/C++) · Middle
Что должен уметь Middle }
11 ключевых навыков, всего 94. Ожидания по каждому навыку и что меняется на следующем уровне.
На этой странице — что ожидается от Middle }, навык за навыком. Ключевые навыки оценивают руководитель и коллеги в цикле ревью; остальные учитываются только в самооценке. Основные области: Основы программирования, Облако и инфраструктура, DevOps и CI/CD.
Ключевые навыки для Middle
Сгруппированы по областям. Метка справа — ожидаемая глубина: Осведомлённость, Применение, Продвинутый или Эксперт.
Основы программирования · 7
Применяет async I/O: io_uring для Linux, completion-based I/O, coroutines (C++20/Rust async). Проектирует event loop архитектуры.
Применяет quality tools: sanitizers (ASAN/MSAN/TSAN/UBSAN), static analysis (clang-tidy), fuzzing для edge cases.
Применяет concurrent programming: reader-writer locks, thread pools, atomic operations, memory ordering (acquire/release/seq_cst).
Применяет системные паттерны: Flyweight для memory optimization, Reactor для I/O multiplexing, Chain of Responsibility для packet processing.
Применяет системные структуры: arena allocators, intrusive lists, radix trees, concurrent hash maps. Оптимизирует memory layout для cache.
Управляет памятью: custom allocators (pool, slab, arena), memory-mapped files, huge pages. Анализирует через Valgrind и perf.
Облако и инфраструктура · 1
Понимает внутреннее устройство стека TCP/IP на уровне ОС — настройку буферов сокетов, алгоритмы управления перегрузкой и оптимизацию сетевых параметров ядра. Настраивает TLS/SSL для реализаций кастомных протоколов. Работает с низкоуровневыми сетевыми примитивами, включая raw-сокеты и создание пакетов. Понимает внутреннее устройство разрешения DNS и распространение TTL. Отлаживает сетевые проблемы с использованием tcpdump, Wireshark и eBPF-трассировки сети.
DevOps и CI/CD · 1
Проектирует CI/CD pipelines с нуля. Настраивает caching для ускорения builds. Использует matrix builds для тестирования на разных версиях. Настраивает deployment pipelines (staging → production). Работает с secrets и environment variables.
Архитектура и проектирование · 1
Проектирует системные компоненты с правильными абстракциями: HAL, platform abstraction, API contracts. Применяет layered architecture для ядерных подсистем и драйверов.
Контроль версий и коллаборация · 1
Самостоятельно проводит review драйверов и ядерных модулей. Обращает внимание на race conditions, корректность обработки ошибок, правильное использование API ядра и memory barriers.
Дополнительные навыки
Команда их не оценивает, но они входят в самооценку и план развития.
Что меняется на Senior
94 навыков получают более высокое ожидание или становятся ключевыми при переходе с Middle на Senior. Сначала самые большие скачки.
- Алгоритмы на графах: Применение → Продвинутый · становится ключевым
- Дженерики и параметрический полиморфизм: Применение → Продвинутый · становится ключевым
- Основы функционального программирования: Применение → Продвинутый · становится ключевым
- Профилирование памяти: Применение → Продвинутый · становится ключевым
- Типобезопасность и системы типов: Применение → Продвинутый · становится ключевым
- AST и IR Manipulation: Применение → Продвинутый · становится ключевым
- Bare Metal Programming: Применение → Продвинутый · становится ключевым
- Benchmarking Tools: Применение → Продвинутый · становится ключевым
- C для Embedded: Применение → Продвинутый · становится ключевым
- C++ для Embedded: Применение → Продвинутый · становится ключевым
} в открытой матрице компетенций: 94 навыков на 5 уровнях. Матрица бесплатна для специалистов и останется бесплатной.