3 ms·
"Assembly language, interrupt handlers, race conditions, cache coherence," says Jude Miller, long-time system consultant and industry curmudgeon. This is what
by zwieback 15y ago
"Assembly language, interrupt handlers, race conditions, cache coherence," says Jude Miller, long-time system consultant and industry curmudgeon.
This is what I do every day at my job and there are other people who know how to do this, plenty of them. Most of them are EE's, though, and consider SW/FW development as their secondary job.
It isn't easy to hire embedded programmers, graduates with computer engineering, EE or CS degrees will have some knowledge but it's experience more than anything that will help you acquire these skills. When I look at resumes I look for experience building small circuits, Arduino or PIC. If I don't see anything like that or if the skill list starts with Java, PHP, ... it would be kind of unfair to expect detailed knowledge about how to use "volatile" in C or how to use a scope to find race conditions.
- jmaygarden 15y agoI agree with all your points, but just want to add that I've seen very ugly code from EE-types (I'm a EE). An outstanding board design and audio/video engineer I worked with avoided loops whenever possible cost because they "made the code confusing." However, his FPGA code was immaculate. I chalked it up to a parallel versus sequential thought process that mirrors the differences between hardware and software.
- numeromancer 15y agoI chalked it up to a parallel versus sequential thought process that mirrors the differences between hardware and software. I don't think this is an essential difference. Programming has preferred the sequential models of computation, but more as a fashion than a necessity. Now, Turing's empire wanes as Church's empire waxes, and those parallel elements of computation that the hardware has hidden from software for so long can no longer be sequestered in silicon.
- zwieback 15y agoYes, I've seen this too. Many EEs with strong skills in low level FW design and HDLs lack software engineering skills. The computer engineering degrees try to bridge the two camps but ultimately there's only so much you can learn in a finite amount of time. I've drifted from ME to controls to FW and SW engineering over the last 20 years.
- cube13 15y ago>"Assembly language, interrupt handlers, race conditions, cache coherence," says Jude Miller, long-time system consultant and industry curmudgeon. The funny thing about this is that the CS degree I got covered all of these to a fairly decent extent. I wasn't an expert on any of those topics when I graduated, but I had enough of a background working with them that I wasn't completely in over my head when I ran into all of that at work(I work on high-throughput, low-latency financial messaging APIs). It's interesting work, but it's a very technical skillset, because you do need to understand all the various issues that can pop up.