Roles · Embedded Developer · Mid-level

What a Mid-level } should know

23 core skills, 57 in total. Expectations per skill, and what changes at the next level.

This page lists what a Mid-level } is expected to know and do, skill by skill. Core skills are the ones a manager and peers assess in a review cycle; the rest count only in self-assessment. Main areas: Programming Fundamentals, DevOps & CI/CD, Testing & QA.

23core skills
34additional skills
6skill areas
2%at Advanced or Expert
Assess myself as Mid-level Full role matrix

Core skills for a Mid-level

Grouped by area. The label on the right is the expected depth: Awareness, Working, Advanced or Expert.

Programming Fundamentals · 6

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

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

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

Data Structures Working

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

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

Multithreading Working

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

DevOps & CI/CD · 1

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.

Testing & QA · 1

Unit Testing Working

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

Version Control & Collaboration · 2

Code Review Working

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

Git Advanced Working

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

Embedded & IoT · 10

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

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

C for Embedded Working

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

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

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

GPIO, ADC, DAC Working

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

MQTT Protocol Working

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

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

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

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

Performance Engineering · 3

CPU Profiling Working

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

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

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

Additional skills

Not assessed by the team, but part of the self-assessment and the development plan.

API DocumentationAWSBenchmarking Tools & MethodologyChatGPT / ClaudeCursor IDEDatabase IndexingDesign PatternsDockerEmbedded CI/CDGitHub CopilotGraphQL DesignI/O & Disk ProfilingIntegration TestingIoT SecurityKubernetes CoreMemory ProfilingMemory ProfilingNetwork FundamentalsOOP & SOLID PrinciplesOpenTelemetryOWASP & Application SecurityPostgreSQLPrometheus & GrafanaPrompt Engineering for CodeRedisREST API DesignRust for EmbeddedSecure Coding PracticesStructured LoggingSystem Design FundamentalsTCP/IP Deep DiveTDD & BDDTerraformType Safety & Type Systems

What changes at Senior

57 skills get a higher expectation or become core when moving from Mid-level to Senior. The biggest jumps first.

See the Senior page →
Run this with your whole team
Self-assessment plus manager and peer reviews against the same matrix, gap analysis and next-level readiness for every engineer. Team Pro is free for 14 days; individual tools stay free forever.
Start a team trial (14 days free) Send to my manager

} in the open competency matrix: 57 skills across 5 levels. The matrix is free for individuals and stays free.