Understands O-notation and basic algorithms in embedded context: sorting, searching considering MCU memory constraints. Selects appropriate algorithms.
Roles · Embedded Developer · Junior
What a Junior } should know
23 core skills, 57 in total. Expectations per skill, and what changes at the next level.
This page lists what a Junior } 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.
Core skills for a Junior
Grouped by area. The label on the right is the expected depth: Awareness, Working, Advanced or Expert.
Programming Fundamentals · 6
Understands async model in embedded: interrupts, callbacks, event-driven architecture. Implements simple ISR handlers on STM32.
Follows coding standards: variable naming, formatting, commenting in embedded C/C++. Uses clang-format for consistency.
Knows basic data structures for embedded: arrays, linked lists, queues. Understands dynamic memory limitations on MCU.
Understands MCU memory model: Flash, RAM, stack, heap. Knows linker script sections (.text, .data, .bss). Monitors memory usage.
Understands basic multithreading for embedded systems: RTOS task creation and scheduling, basic semaphore and mutex usage for resource protection, interrupt service routines and thread interaction. Follows team conventions for concurrent firmware design patterns.
DevOps & CI/CD · 1
Understands CI/CD concepts for embedded development: build, test, deploy for firmware. Uses existing workflows for cross-compilation and hardware-in-the-loop tests. Can add a step for firmware validation. Reads failed build logs for toolchain issues.
Testing & QA · 1
Understands basic unit testing for embedded code: CUnit/Unity test framework basics, hardware abstraction layer mocking, simple register value assertions. Follows team patterns for testing firmware modules on host before flashing to target.
Version Control & Collaboration · 2
Participates in code review: checks formatting, naming. Learns to give constructive feedback on embedded code.
Uses Git for embedded: commit, push, pull, basic branching. Understands .gitignore for build artifacts and IDE files.
Embedded & IoT · 10
Understands bare-metal development: startup code, linker script, interrupt vector table. Writes simple programs without OS on STM32.
Understands the fundamentals of BLE & Wireless: Zigbee, LoRa, WiFi. Applies basic practices in daily work. Follows recommendations from the team and documentation.
Knows C basics for embedded systems: data types, pointers, register operations. Writes simple drivers under mentor guidance on STM32/ESP32.
Understands C++ memory management basics for microcontrollers. Writes simple drivers and peripheral access code. Follows coding standards for embedded safety-critical systems.
Uses basic debugging tools: JTAG/SWD through ST-Link, breakpoints in IDE, printf debugging through UART. Analyzes simple bugs.
Understands GPIO, ADC, DAC operation on MCU. Configures pins through HAL, reads analog values. Uses multimeter for signal verification.
Understands the fundamentals of MQTT Protocol. Applies basic practices in daily work. Follows recommendations from the team and documentation.
Understands the difference between hard/soft real-time. Knows task scheduling basics, deadlines and jitter. Measures latency with oscilloscope.
Understands RTOS concepts: tasks, priorities, semaphores, queues. Creates simple multi-task applications on FreeRTOS under mentor guidance.
Understands the fundamentals of SPI / I2C / UART Protocols. Applies basic practices in daily work. Follows recommendations from the team and documentation.
Performance Engineering · 3
Uses basic CPU profiling: DWT cycle counter, GPIO toggle + oscilloscope for measuring function execution time on MCU.
Understands latency sources in embedded: interrupt latency, context switch, bus wait states. Measures response time with oscilloscope.
Understands MCU resource constraints: Flash, RAM, CPU cycles, power. Optimizes binary size through compiler flags (-Os, LTO).
Additional skills
Not assessed by the team, but part of the self-assessment and the development plan.
What changes at Mid-level
57 skills get a higher expectation or become core when moving from Junior to Mid-level. The biggest jumps first.
- Algorithms & Complexity: Awareness → Working
- Async Programming: Awareness → Working
- Bare Metal Programming: Awareness → Working
- BLE & Wireless: Zigbee, LoRa, WiFi: Awareness → Working
- C for Embedded: Awareness → Working
- C++ for Embedded: Awareness → Working
- Code Quality & Refactoring: Awareness → Working
- Code Review: Awareness → Working
- CPU Profiling: Awareness → Working
- Data Structures: Awareness → Working
} in the open competency matrix: 57 skills across 5 levels. The matrix is free for individuals and stays free.