Select your current position

Pick a role and level — we'll show the growth path, skills and gap analysis.

Development path

Junior

0-2 years

Current

Responsibility: Writing firmware in C/C++. Working with GPIO, UART, SPI, I2C. Debugging with JTAG/SWD. Writing unit tests.

Key skills:

Bare Metal Programming Need
BLE & Wireless: Zigbee, LoRa, WiFi Need
C for Embedded Need
C++ for Embedded Need
Code Review Need
CPU Profiling Need
Embedded Debugging: JTAG, SWD Need
Git Advanced Need
GitHub Actions / GitLab CI Need
GPIO, ADC, DAC Need
Latency Optimization Need
MQTT Protocol Need
Real-Time Systems Design Need
Resource Optimization FinOps Need
RTOS Fundamentals: FreeRTOS, Zephyr Need
SPI / I2C / UART Protocols Need
Unit Testing Need
Algorithms & Complexity Need
Async Programming Need
Code Quality & Refactoring Need
Multithreading Need
Data Structures Need
Memory Management Need

Middle

2-5 years

Next

Responsibility: Designing firmware architecture. Working with RTOS (FreeRTOS). Optimizing energy consumption. Device drivers.

Key skills:

Bare Metal Programming Need
BLE & Wireless: Zigbee, LoRa, WiFi Need
C for Embedded Need
C++ for Embedded Need
Code Review Need
CPU Profiling Need
Embedded Debugging: JTAG, SWD Need
Git Advanced Need
GitHub Actions / GitLab CI Need
GPIO, ADC, DAC Need
Latency Optimization Need
MQTT Protocol Need
Real-Time Systems Design Need
Resource Optimization FinOps Need
RTOS Fundamentals: FreeRTOS, Zephyr Need
SPI / I2C / UART Protocols Need
Unit Testing Need
Algorithms & Complexity Need
Async Programming Need
Code Quality & Refactoring Need
Multithreading Need
Data Structures Need
Memory Management Need

Senior

5-8 years

Responsibility: Embedded systems architecture. Bootloader. OTA updates. Firmware security. Communication protocol design.

Key skills:

Bare Metal Programming Need
BLE & Wireless: Zigbee, LoRa, WiFi Need
C for Embedded Need
C++ for Embedded Need
Code Review Need
CPU Profiling Need
Embedded Debugging: JTAG, SWD Need
Git Advanced Need
GitHub Actions / GitLab CI Need
GPIO, ADC, DAC Need
Latency Optimization Need
MQTT Protocol Need
Real-Time Systems Design Need
Resource Optimization FinOps Need
RTOS Fundamentals: FreeRTOS, Zephyr Need
SPI / I2C / UART Protocols Need
Unit Testing Need
Algorithms & Complexity Need
Async Programming Need
Code Quality & Refactoring Need
Multithreading Need
Data Structures Need
Memory Management Need

Lead / Staff

7-12 years

Responsibility: Embedded platform. Development standards. Hardware-software co-design. Coordination with hardware team.

Key skills:

Bare Metal Programming Need
BLE & Wireless: Zigbee, LoRa, WiFi Need
C for Embedded Need
C++ for Embedded Need
Code Review Need
CPU Profiling Need
Embedded Debugging: JTAG, SWD Need
Git Advanced Need
GPIO, ADC, DAC Need
Latency Optimization Need
MQTT Protocol Need
Real-Time Systems Design Need
Resource Optimization FinOps Need
RTOS Fundamentals: FreeRTOS, Zephyr Need
SPI / I2C / UART Protocols Need
Unit Testing Need
Algorithms & Complexity Need
Async Programming Need
Code Quality & Refactoring Need
Multithreading Need
Data Structures Need
Memory Management Need

Principal

10+ years

Responsibility: Embedded strategy. IoT platform architecture. Security certification. Standards compliance.

Key skills:

Bare Metal Programming Need
BLE & Wireless: Zigbee, LoRa, WiFi Need
C for Embedded Need
C++ for Embedded Need
Code Review Need
CPU Profiling Need
Embedded Debugging: JTAG, SWD Need
Git Advanced Need
GPIO, ADC, DAC Need
Latency Optimization Need
MQTT Protocol Need
Real-Time Systems Design Need
Resource Optimization FinOps Need
RTOS Fundamentals: FreeRTOS, Zephyr Need
SPI / I2C / UART Protocols Need
Unit Testing Need
Algorithms & Complexity Need
Async Programming Need
Code Quality & Refactoring Need
Multithreading Need
Data Structures Need
Memory Management Need

Gap analysis: skills to develop

To reach the next level you'll need to develop:

Bare Metal Programming

Independently develops bare-metal firmware: PLL configuration, peripheral setup through registers, boot sequence implementation on Cortex-M.

BLE & Wireless: Zigbee, LoRa, WiFi

Independently develops BLE devices: custom GATT services, bonding/pairing, connection parameter optimization. Analyzes packets through sniffer.

C for Embedded

Independently writes peripheral drivers in C for STM32/nRF52. Uses volatile, bitmasks, direct register access through CMSIS.

C++ for Embedded

Applies C++17 for embedded: constexpr computations, type-safe register wrappers, CRTP for HAL. Avoids dynamic allocation and exceptions.

Code Review

Reviews embedded code: checks memory safety, interrupt correctness, peripheral configuration. Gives well-reasoned feedback.

CPU Profiling

Applies advanced profiling: Segger SystemView for task profiling, ETM trace for instruction-level analysis, hotspot detection.

Embedded Debugging: JTAG, SWD

Applies advanced debugging: ITM trace, SWO viewer, Segger RTT, watchpoints on memory access. Uses oscilloscope for timing analysis.

Git Advanced

Applies Git workflow: feature branches, interactive rebase, cherry-pick for hotfixes. Uses git submodules for HAL/SDK dependencies.

GitHub Actions / GitLab CI

Designs CI/CD pipelines from scratch. Configures caching to speed up builds. Uses matrix builds for testing on different versions. Sets up deployment pipelines (staging → production). Works with secrets and environment variables.

GPIO, ADC, DAC

Independently configures GPIO alternate functions, ADC with DMA multi-channel scan, DAC with timer trigger. Calibrates ADC for precise measurements.

Latency Optimization

Optimizes latency: interrupt prioritization, code placement in RAM (ITCM), interrupt tail-chaining, cache configuration.

MQTT Protocol

Implements MQTT communications: QoS 1/2, retained messages, last will, topic hierarchy design. Optimizes reconnect and keep-alive for unstable networks.

Real-Time Systems Design

Independently develops real-time systems: priority-based scheduling, deadline monitoring, jitter analysis. Implements watchdog timers and timing constraint verification.

Resource Optimization FinOps

Optimizes resources independently: Flash/RAM usage analysis, power profiling, code size optimization through compiler flags and linker scripts.

RTOS Fundamentals: FreeRTOS, Zephyr

Independently develops on RTOS: task decomposition, inter-task communication (queues, semaphores, event groups), priority inversion prevention. Configures FreeRTOS for specific hardware.

SPI / I2C / UART Protocols

Independently implements SPI/I2C/UART drivers: DMA transfers, error handling, multi-slave bus management. Debugs communication issues using logic analyzer.

Unit Testing

Tests embedded code independently: Unity/CMock for C unit tests, test doubles for hardware dependencies, coverage analysis. Integrates tests into CI pipeline.

Algorithms & Complexity

Applies algorithm optimization for embedded: fixed-point arithmetic, lookup tables instead of computation, loop unrolling. Analyzes time complexity considering cache effects.

Async Programming

Implements async patterns in embedded: interrupt-driven I/O, DMA completion callbacks, event-driven state machines. Manages shared state between ISR and main loop.

Code Quality & Refactoring

Maintains embedded code quality: static analysis (PC-lint, Coverity), MISRA C compliance checking, complexity metrics. Configures quality gates in CI.

Multithreading

Implements concurrent embedded systems: RTOS task management, mutex/semaphore synchronization, priority ceiling protocol. Detects and resolves priority inversion and deadlocks.

Data Structures

Implements data structures for embedded: statically-allocated ring buffers, memory pools, intrusive linked lists. Optimizes for cache locality and deterministic performance.

Memory Management

Manages memory in embedded systems: static allocation strategies, memory pool implementations, MPU configuration for memory protection. Detects and prevents memory leaks.