Применяет алгоритмы для embedded: ring buffers, state machines, CRC-расчёты. Оценивает сложность с учётом тактов процессора и cache miss.
Роли · Embedded Developer · Middle
Что должен уметь Middle }
23 ключевых навыков, всего 57. Ожидания по каждому навыку и что меняется на следующем уровне.
На этой странице — что ожидается от Middle }, навык за навыком. Ключевые навыки оценивают руководитель и коллеги в цикле ревью; остальные учитываются только в самооценке. Основные области: Основы программирования, DevOps и CI/CD, Тестирование и QA.
Ключевые навыки для Middle
Сгруппированы по областям. Метка справа — ожидаемая глубина: Осведомлённость, Применение, Продвинутый или Эксперт.
Основы программирования · 6
Применяет асинхронные паттерны: DMA completion callbacks, timer-driven state machines, event-driven архитектура с очередями сообщений.
Применяет статический анализ (cppcheck, PC-lint), пишет doxygen-документацию. Проводит self-review, следует MISRA C guidelines.
Применяет продвинутую многозадачность: priority inheritance, event groups, task notifications в FreeRTOS. Отлаживает deadlock через трассировку.
Применяет embedded-специфичные структуры: static pool allocators, circular buffers, fixed-size hash maps. Избегает heap fragmentation.
Управляет памятью на embedded: custom allocators, memory pools, stack watermark monitoring. Избегает fragmentation, анализирует map-файл.
DevOps и CI/CD · 1
Проектирует CI/CD pipelines с нуля. Настраивает caching для ускорения builds. Использует matrix builds для тестирования на разных версиях. Настраивает deployment pipelines (staging → production). Работает с secrets и environment variables.
Тестирование и QA · 1
Пишет unit-тесты для embedded-модулей: mocking HAL через function pointers, тестирование state machines, protocol parsers. Достигает > 60% coverage.
Контроль версий и коллаборация · 2
Проводит review embedded-кода: проверяет memory safety, interrupt correctness, peripheral configuration. Даёт аргументированную обратную связь.
Применяет Git workflow: feature branches, interactive rebase, cherry-pick для hotfix. Использует git submodules для HAL/SDK зависимостей.
Embedded и IoT · 10
Самостоятельно разрабатывает bare-metal firmware: настройка PLL, конфигурация периферии через регистры, реализация boot sequence на Cortex-M.
Самостоятельно разрабатывает BLE-устройства: custom GATT services, bonding/pairing, connection parameter optimization. Анализирует пакеты через sniffer.
Самостоятельно пишет драйверы периферии на C для STM32/nRF52. Использует volatile, битовые маски, прямой доступ к регистрам через CMSIS.
Применяет C++17 для embedded: constexpr-вычисления, type-safe обёртки над регистрами, CRTP для HAL. Избегает dynamic allocation и exceptions.
Применяет продвинутую отладку: ITM trace, SWO viewer, Segger RTT, watchpoint на memory access. Использует осциллограф для timing-анализа.
Самостоятельно конфигурирует GPIO alternate functions, ADC с DMA multi-channel scan, DAC с timer trigger. Калибрует ADC для точных измерений.
Реализует MQTT-коммуникации: QoS 1/2, retained messages, last will, topic hierarchy design. Оптимизирует reconnect и keep-alive для нестабильных сетей.
Проектирует soft real-time системы с предсказуемым поведением. Анализирует worst-case execution time, применяет Rate Monotonic Scheduling.
Самостоятельно проектирует multi-task системы на FreeRTOS/Zephyr. Применяет mutex, event groups, software timers. Отлаживает race conditions через трассировку.
Самостоятельно конфигурирует SPI/I2C/UART на уровне регистров. Реализует DMA-передачу, обрабатывает ошибки bus collision, настраивает baud rate.
Performance Engineering · 3
Применяет продвинутое профилирование: Segger SystemView для task profiling, ETM trace для instruction-level analysis, hotspot detection.
Оптимизирует latency: приоритизация прерываний, размещение кода в RAM (ITCM), tail-chaining прерываний, cache configuration.
Оптимизирует ресурсы: code size через dead code elimination, RAM через static allocation, power через sleep modes и peripheral clock gating.
Дополнительные навыки
Команда их не оценивает, но они входят в самооценку и план развития.
Что меняется на Senior
57 навыков получают более высокое ожидание или становятся ключевыми при переходе с Middle на Senior. Сначала самые большие скачки.
- Алгоритмы и сложность: Применение → Продвинутый
- Асинхронное программирование: Применение → Продвинутый
- Качество кода и рефакторинг: Применение → Продвинутый
- Многопоточное программирование: Применение → Продвинутый
- Структуры данных: Применение → Продвинутый
- Управление памятью: Применение → Продвинутый
- Bare Metal Programming: Применение → Продвинутый
- BLE и Wireless: Применение → Продвинутый
- C для Embedded: Применение → Продвинутый
- C++ для Embedded: Применение → Продвинутый
} в открытой матрице компетенций: 57 навыков на 5 уровнях. Матрица бесплатна для специалистов и останется бесплатной.