Skip to content
Preptima

Embedded Systems & IoT

Software that runs on hardware small enough to have no operating system worth the name, where the requirements come from something physical and the resources are fixed at the moment the board was designed. The skill it rewards is reasoning about worst cases rather than averages.

Steady demand18 min readEmbedded software engineer, Firmware engineer, Embedded systems engineer, Real-time software engineer, IoT device engineer, Hardware validation engineer, Systems engineer for safety-critical softwareUpdated 2026-08-10

Assumes you know: C, to the level of pointers, storage classes and bit manipulation, A working mental model of memory addresses and integer representation, Willingness to read a reference manual rather than a tutorial, Enough electronics to know what a voltage, a pull-up resistor and ground are

Overview

What this area actually covers

Software whose requirements come from a physical thing and whose resources were fixed before a line of code was written. That is the whole definition, and both halves matter equally.

The physical requirement is what separates embedded work from everything else on this site. A web service that answers in 400 milliseconds instead of 200 has a performance issue. A motor commutation routine that fires 200 microseconds late destroys a motor winding. An airbag controller that decides correctly but 50 milliseconds late has failed completely, and nobody is interested in its average response time. Because of that, the entire discipline is organised around worst cases: worst-case execution time, worst-case stack depth, worst-case interrupt latency, worst-case current draw. Averages, which dominate almost every other kind of engineering interview, are close to useless here.

The fixed resources are what makes it feel unfamiliar. There is a specific amount of RAM on the die and no way to add more without a new board, a new supply chain qualification, and possibly a new certification cycle. There is no swap, usually no memory protection, frequently no operating system, and often no filesystem. When your code overruns its stack, nothing catches it: the write simply lands in a variable belonging to something else, and the bug surfaces three modules away as a value that changes on its own.

Concretely, the area covers writing and structuring firmware in C for microcontrollers; configuring peripherals by writing bits into registers described in a reference manual; handling hardware interrupts correctly and sharing state with them safely; deciding whether you need a real-time operating system and, if so, how tasks and priorities are laid out; the buses that connect chips on a board — UART, SPI, I2C, CAN and their relatives; power management for devices expected to run for years on a cell; and the debugging craft that applies when there is nowhere to print to and the failure happens once a week in a customer's building.

It is worth naming what gets wrongly bundled in. Electronics design is a different profession: reading a schematic and understanding what the hardware requires of your firmware is expected, but designing the board, choosing the passive components and running signal integrity analysis is a hardware engineer's job. Embedded Linux sits at the boundary and is genuinely a different skill set — once you have an MMU, a kernel, a filesystem and a package manager, most of the constraints described above stop applying and the work looks much more like systems programming. Digital signal processing and control theory are the mathematics that often runs on these devices, and they are studied as their own subjects; embedded engineering is how that mathematics gets to run in 8 kilobytes on a fixed deadline. And IoT as a marketing term routinely means cloud back ends and dashboards, which is backend engineering with a device-shaped input.

Where to go next

Now practise it

3 interview questions in Embedded Systems & IoT, each with the rubric the interviewer is scoring against.

All Embedded questions
embeddedfirmwarertosinterruptslow-poweriot