Software Engineering
Embedded & Systems Engineer
The least substitutable skill set in this field. Small demand, very little competition, and knowledge that does not expire.
The least substitutable skill set in this field. Small demand, very little competition, and knowledge that does not expire.
A day that is actually representative
| Time | What you are actually doing |
|---|---|
| 08:30 | A bug that reproduces once every few hours, which means instrumentation rather than debugging. |
| 10:00 | Reading a datasheet properly, because the answer is usually in it and usually in a footnote. |
| 13:00 | Memory work — no allocator, fixed budgets, and a failure mode that is corruption rather than an exception. |
| 15:00 | Timing analysis with a logic analyser on the actual hardware, since simulation only gets you so far. |
| 16:30 | A firmware update path conversation, because bricking a fielded device is unrecoverable in a way software rarely is. |
The decisive round
“It fails once every few hours. Debug it.”
Interviewer: “An intermittent fault appears roughly every four hours in the field and never on the bench. How do you approach it?”
A weak answer. “I'd add extensive logging and try to reproduce it under load, then use a debugger to step through when it happens.” A debugger is often unusable for intermittent timing faults — attaching changes the timing and the fault disappears. And 'extensive logging' on a constrained device can itself change the behaviour.
A strong answer. “The timing is the clue. A consistent interval points at something accumulating or something periodic, not at a code path — code bugs usually fail on an input rather than on a clock.
So my candidates are: a counter or buffer wrapping, a slow memory leak reaching a threshold, a periodic task colliding with another, thermal drift, or an external event on that cadence.
Method rather than debugger. I'd add minimally intrusive instrumentation — a ring buffer in RAM I can dump after the fault, or toggling a GPIO I can watch on a logic analyser, because both cost almost nothing in timing. Print-based logging over a serial line changes timing enough to hide the fault, which is why the bench never reproduces it.
Then bisect: instrument at coarse boundaries first, narrow on the next occurrence. With a four-hour period I get few attempts, so each one has to be designed rather than exploratory.
And I'd check the boring causes first — power supply ripple, a marginal connection, temperature. In my experience a meaningful share of 'intermittent firmware bugs' are electrical, and no amount of code reading finds them.”
Reasoning from the timing signature, choosing instrumentation that does not perturb the system, and being willing to suspect hardware. That last one is what separates embedded experience from software experience applied to embedded.
What to build or bring
- An intermittent fault you found, and the instrumentation you chose.
- Something you fixed that turned out to be hardware, or a datasheet detail.
- Memory work under a fixed budget — no allocator, no exceptions.
- A firmware update mechanism you designed or hardened, because bricking is the unrecoverable failure.
Compensation
| Market | Band | Notes |
|---|---|---|
| United States | $130k – $230k base | Specialised areas — safety-critical, RF, silicon-adjacent — run well above |
| India | ₹12L – ₹45L total | Smaller market, concentrated in product engineering and semiconductor companies |
The book for this field
Software Engineering
What postings now ask for, system design at the level actually assessed, product sense for engineers, code and review, debugging and the coding round, what changes from mid to staff, the loop round by round, and choosing a track.
Cross-cutting
Skills every archetype tests
These are shared across every field on this site — the same question asked in different vocabulary — so preparation here compounds rather than being spent once. The book above is specific to your field.
Practice the 10 Engineering questions → · Back to Software Engineering →