Выберите текущую позицию
Укажите роль и уровень — система покажет путь развития, навыки и gap-анализ.
Путь развития
Junior
0-2 года
Ответственность: Написание firmware на C/C++. Работа с GPIO, UART, SPI, I2C. Отладка с помощью JTAG/SWD. Написание unit-тестов.
Ключевые навыки:
Middle
2-5 лет
Ответственность: Проектирование firmware архитектуры. Работа с RTOS (FreeRTOS). Оптимизация energy consumption. Драйверы устройств.
Ключевые навыки:
- Самостоятельно реализовал 3+ проекта
- Провёл успешные код-ревью
- Участвовал в разрешении production инцидентов
Senior
5-8 лет
Ответственность: Архитектура embedded-систем. Bootloader. OTA обновления. Безопасность firmware. Проектирование протоколов связи.
Ключевые навыки:
- Самостоятельно реализовал 3+ проекта
- Провёл успешные код-ревью
- Участвовал в разрешении production инцидентов
Lead / Staff
7-12 лет
Ответственность: Embedded platform. Стандарты разработки. Hardware-software co-design. Координация с hardware командой.
Ключевые навыки:
- Самостоятельно реализовал 3+ проекта
- Провёл успешные код-ревью
- Участвовал в разрешении production инцидентов
Principal
10+ лет
Ответственность: Embedded strategy. IoT platform architecture. Security certification. Standards compliance.
Ключевые навыки:
- Самостоятельно реализовал 3+ проекта
- Провёл успешные код-ревью
- Участвовал в разрешении production инцидентов
Gap-анализ: навыки для развития
Для перехода на следующий уровень необходимо развить:
Самостоятельно разрабатывает 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.
Проводит review embedded-кода: проверяет memory safety, interrupt correctness, peripheral configuration. Даёт аргументированную обратную связь.
Применяет продвинутое профилирование: Segger SystemView для task profiling, ETM trace для instruction-level analysis, hotspot detection.
Применяет продвинутую отладку: ITM trace, SWO viewer, Segger RTT, watchpoint на memory access. Использует осциллограф для timing-анализа.
Применяет Git workflow: feature branches, interactive rebase, cherry-pick для hotfix. Использует git submodules для HAL/SDK зависимостей.
Проектирует CI/CD pipelines с нуля. Настраивает caching для ускорения builds. Использует matrix builds для тестирования на разных версиях. Настраивает deployment pipelines (staging → production). Работает с secrets и environment variables.
Самостоятельно конфигурирует GPIO alternate functions, ADC с DMA multi-channel scan, DAC с timer trigger. Калибрует ADC для точных измерений.
Оптимизирует latency: приоритизация прерываний, размещение кода в RAM (ITCM), tail-chaining прерываний, cache configuration.
Реализует MQTT-коммуникации: QoS 1/2, retained messages, last will, topic hierarchy design. Оптимизирует reconnect и keep-alive для нестабильных сетей.
Проектирует soft real-time системы с предсказуемым поведением. Анализирует worst-case execution time, применяет Rate Monotonic Scheduling.
Оптимизирует ресурсы: code size через dead code elimination, RAM через static allocation, power через sleep modes и peripheral clock gating.
Самостоятельно проектирует multi-task системы на FreeRTOS/Zephyr. Применяет mutex, event groups, software timers. Отлаживает race conditions через трассировку.
Самостоятельно конфигурирует SPI/I2C/UART на уровне регистров. Реализует DMA-передачу, обрабатывает ошибки bus collision, настраивает baud rate.
Пишет unit-тесты для embedded-модулей: mocking HAL через function pointers, тестирование state machines, protocol parsers. Достигает > 60% coverage.
Применяет алгоритмы для embedded: ring buffers, state machines, CRC-расчёты. Оценивает сложность с учётом тактов процессора и cache miss.
Применяет асинхронные паттерны: 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-файл.