EEEmbedded Software Engineer
EE
Career

Embedded Software Engineer

By the numbers
Typical pay
$135,980 / yr
Education to start
Bachelor's degree
Future demand
+15.8% by 2034
People in this job
1.7M
Figures shown for ·closest of 2 O*NET occupations
The work
A day, hour by hour
08:30
Standup & triage

Sync with hardware and firmware team; sort blocked tickets from ready.

09:00
Schematic review

Read new board schematics; flag a pin-mapping conflict before silicon is cut.

09:30
Driver deep work

Write C driver code so the MCU and a new sensor can talk over SPI.

11:30
Hardware debug

Oscilloscope and JTAG out — hunting whether the glitch is code or the board.

13:30
Flash & field test

Flash new firmware onto the physical device; run it through real-world test cases.

14:30
Memory squeeze

A feature won't fit — cut or optimize until the binary is small enough to ship.

15:30
Safety call

Debate with QA: is that rare timing fault safe to ship, or does it need another round?

16:15
Code review

Review a teammate's RTOS task code; catch a priority-inversion bug before merge.

17:00
Wrap & notes

Log debug findings, update tickets, leave breadcrumbs for tomorrow's session.

Things you do
  • Write low-level C code that tells hardware exactly what to do.
  • Build device drivers so software and hardware can talk to each other.
  • Hook up a debugger and oscilloscope to hunt down hardware-software bugs.
  • Squeeze code to use less memory and battery on tiny chips.
  • Flash new firmware onto a physical device and test it in real life.
Decisions you’ll make
  • Is this bug in my code, or is the hardware misbehaving?
  • Can I squeeze this feature in, or do I need to cut it to fit memory?
  • Is this timing issue rare enough to ship, or will it crash in the field?
  • Should I write my own driver, or trust the vendor's library?
  • Is this system safe enough to release, or does it need one more round of testing?
Education Pathways · how you get there
95 in 100 went the college route · 5 in 100 found another way in None, typically
Education mapped from O*NET:
If you like this, also look at