8 ms·
The Soon-To-Be-Extinct Embedded Software Engineer
- phendrenad2 8y agoYou know what you call embedded software developers who move up the stack and start programming in Java and “don’t understand why the hardware works”? Not embedded engineers.
- cjensen 8y agoWell that's just silly. Is your CPU going to work with bespoke hardware connected on the whatever bus? Then you still need to know both software and hardware to debug the connection to the bespoke device. Stuff rarely works the first time; FPGA designers make simple typos just like software engineers do. Yes, the ecosystem is changing. Instead of a wide range of embedded CPUs, we're shifting to tiny bit-bangers (8051 or Arduino) and most everything else is ARM Linux. CPUs were never the hard part of embedded. The hard parts have always been (1) debugging the hw/sw interface and (2) meeting realtime requirements, if the system has any.
- mywittyname 8y agoThis has been the push since the dawn of computing. The need for low-level engineers is much less than need for high-level engineers. This is not just the case for embedded developers, but also for OS, database, browser, IDE, etc. developers. A handful of people who are experts in these fields support the millions of "high-level" developers that build apps. I'm sure most of the people in these fields have generic degrees in CS/CE/EE.
- new299 8y agoI don't understand the take in this article. I've done embedded work. I could do embedded work, I probably wont because the pay is mostly terrible compared with either traditional software engineering or the more data orientated stuff I usually do. So, if there is a shortage of embedded engineers, it's because nobody really want to pay them properly. As to moving things up the stack... well that's always been a trend. But someone has to write the board support package and do all the hardware interfacing to the often broken and buggy hardware.
- rorykoehler 8y agoI always found that bemusing. The more low level, difficult and involved your programming job the less you get paid. It makes sense on a capitalist pays for productivity level but it really doesn't make sense on any other level.
- MrBuddyCasino 8y agoI suspect its because the work itself is more fun for a certain kind of people than pushing data from A to B. You also need more data pushers than bit-bangers, so maybe there is not such a shortage?
- nightski 8y agoIt makes sense on all levels. Pay is not correlated with how hard your job is. It's correlated with how large of an impact you have on the business. It's really easy to have $1M+ (or basically very large) impact on a business by making data more accessible and providing solid analysis. On the flip side, it's really hard to have a really large impact writing low level embedded code. The reason for that is because since it is a well defined problem (control this hardware, send data from here to there) there is not a lot of room for creative flexibility. So it's hard to differentiate yourself above others (even though very technical people know that the quality of low level code can vary dramatically, this often isn't reflected in the success of the business). At the end of the day I always ask myself, is what I am doing driving business value for my clients. If not, I try to reframe what I am working on so that is the case.
- deleted 8y ago[deleted]
- jcoffland 8y ago> even though very technical people know that the quality of low level code can vary dramatically, this often isn't reflected in the success of the business I would rephrase that as the quality of low level code is not often recognized as having a huge impact on the success of the business but when low level code goes wrong it can have very costly negative effects which ripple up through the company. The usual manifestation is a buggy product with many layers of hacked together bloat. Low level code often does not get the attention it deserves because the higher ups don't understand it.
- codewritinfool 8y agoI guess I'm working lower than embedded, then. For the things I work on, there is no API, just a chip data sheet, and usually it is marked "preliminary" or "advance copy".
- bryanlarsen 8y ago... and the translation has mangled things so badly you also ask for a copy in the original language even though you don't speak it.
- monocasa 8y agoHahaha, I've absolutely learned a little written Chinese for reading datasheets. It's not that bad either, resistor for instance is "electricity pushing back device".
- embd_throwaway 8y agoEmbedded people will be extinct because of the salaries. Embedded SW I wrote runs on hundreds of millions of devices and anything from a single core small ARM to a multi-architecture SoC, but when I was last looking for a job--higher in the stack things like infrastructure / DevOps paid 50% more than embedded.
- notacoward 8y agoYeah, it's really sad. I've dabbled in embedded stuff, in the course of doing lower-level OS/infra stuff. The people I've met who make a living at it have generally been in the top quartile for development skill, because the consequences for doing a sub-par job are severe and that naturally winnows out anyone further down the scale. For a long time pay scales did reflect that, but not in the days of front-end types (who call themselves "full stack" without a trace of awareness of how deep the stack really is) and ML/AI folks. I know it's all about supply and demand, but I think "demand" is being mismeasured in this case. People don't think they need a good embedded developer, until they really really do.
- Bucephalus355 8y agoAre you kidding me? We need these guys like you wouldn’t believe. Does anyone really trust that their bios / drivers are actually secure?? My job is to secure Web Applications, so usually cleaning up PHP code. But literally everything I do is pointless if the lower level firmware is compromised (it probably already has been).
- jpeg_hero 8y agoThat was kinda the whole point of the article: Very high demand for embedded engineers => too expensive, hard and time consuming to train the needed engineers => market responds by creating API’s so less “traditional” skill is required
- julian55 8y agoSomeone still needs to implement the frameworks that these so-called embedded engineers will be using! The article is right in that users of embedded devices now expect a lot more software support. I work for a semiconductor manufacturer supplying devices to tier 1 auto electronics companies and these customers expect a full OS port with drivers and middleware for the device (including a lot of graphics processing for ADAS applications).
- haywirez 8y agoSeems like the opposite, there's a smaller revolution going on in audio and music tech. Several big software names are about to start manufacturing their own dedicated hardware devices running DAWs.
- PsylentKnight 8y agoReference?
- Animats 8y agoLook at what the author is selling. "An API Standard for MCUs".[1] He's promoting his hardware abstraction layer for embedded programming. [1] https://www.beningo.com/store/an-api-standard-for-mcus/ https://www.beningo.com/store/an-api-standard-for-mcus/
- xt00 8y agoYea, obvious slant that makes about zero sense.. embedded devices firmware devs are worth a ton if they can quickly figure out how to use low cost chips to get a lot done. Maybe in the authors case he is like: “Step1: buy 450MIPS processor with 1GB DDR, step2: install API abstraction layer, step3: sell product for $200 to monitor your water pressure in your house”.. then sure that maybe is a thing.. but the reality of making products is, oh hey can I use this poorly documented 25 cent processor that has an adc and some gpios and needs a custom bit banged protocol to talk to a special purpose sensor chip.. yea so where’s the magic api for that???
- new299 8y agoI don't think his take makes much sense either. But you can get a MCU with embedded wifi/tcpip and 80MHz that costs about 1USD (esp8266). There are also pretty cheap/low power full Linux systems (KeyASIC make one that sits in an SDCard, similar to the eyeFI). They're not too expensive either (~10USD).
- xt00 8y agoThe ESP8266 is sort of a unicorn chip.. prior to that chip existing virtually everything in that space was $10 for getting wifi bolted onto a design unless you were a super high volume company who could get Broadcom's attention. In fact, the Electric Imp which was the SDcard / wifi combo thing was actually designed by somebody who left apple and managed to actually get broadcom to sell them chips -- I'm fairly certain they just happened to still remember how to use the broadcom chips that virtually nobody in the world has outside of samsung and apple and the associated SDK's -- so when that tiny electric imp startup used that chip I was optimistic that broadcom would make their chips more avail, but nope.. no change, and finally ESP8266 came out and changed the market completely for wifi.. pretty amazing thing..
- upofadown 8y agoOK, then we will call them driver writers and they will do exactly the same stuff. An embedded application that doesn't do something fairly unique with the hardware isn't an embedded application. It's just a regular computer application. That's why we make the distinction. Low resource systems won't be going away any time soon either. The ignition (or battery controller) in something like a weed whacker is unlikely to be communicating with anything and will likely be running on a 8 bit processor with no room for libraries. I don't see that the problem is that we will lose the skillset as suggested in the article. The bigger problem is that we have trouble producing embedded programmers in the first place. The universities/colleges are doing a terrible job. Most embedded programmers picked it up on their own by messing around.
- ChuckMcM 8y agoWhile I get the author is tired of people who have mastered the use of Arduino libraries calling themselves "embedded programmers", that additional capability is available which opens up embedded programming to more people isn't a bad thing. It will be incumbent on people who hire them for jobs involving Fire & Life Safety (FLS) systems to recognize their limitations.
- pdelbarba 8y agoLate 20-something embedded dev here. This is horseshit. The bulk of the embedded developers right now are aging boomers who are soon to be exiting the workforce. I barely know anyone else my age who does this stuff. Yes the ecosystem is changing. There's been a "recent" movement towards ARM-all-the-things, even the little bit-banging chips that everyone is talking about. You can get uCs with clock rates from the single digit MHz all the way to GHz with loads of features. Most people seem to be running an RTOS on top of anything over a few Mhz but there are a few of us who do things the hard way when things get tight. That's just the uC stuff though. There's so much more going on in the industry. Someone needs to write the windows drivers for your system, same with pretty much everything that's going on in the linux kernel, android, etc. Embedded wraps the entire computing space. Can't really say the same for any other discipline. On top of all of this, there's a solid demand from the "mission critical" world for good devs. Airliners, satellites, rockets and cars all, by necessity, run extremely thin stacks consisting almost entirely of C (though some of us are starting the push for Rust). You can't just Python your way to glory in a fly-by-wire controller because that's how you get people killed. Yes, the pay is mostly shit unless you work for a large company. Qualcomm and similar typically offers six figures starting. I work in aerospace but they're starting to get desperate as they no longer get to pay nothing for getting to build cool flying stuff. YMMV here.
- auto 8y agoFellow late 20-something mobile turned server turned embedded dev here as well. It is indeed bullshit. I'm working on my Master's in CS right now, and my stepdad, a professional web dev who started in the Apple II days, used to ask me "Why do you still want to learn low level code/hardware/ways of doing things? It seems the industry keeps moving towards higher level frameworks/hardware/products." The answer I've always given him is because someone has to build the world that the easier to understand, higher level pieces live in. There's still a niche for bespoke, highly performant and well architectured low level code, and there's not really a shortage of jobs because it's not what's being taught in undergrad CS programs, at least at my alma mater and others in my area.
- new299 8y ago
- ansible 8y ago> Interestingly enough, microcontroller manufacturers are currently in a big push to provide developers with high-level software frameworks and tools that abstract out the low-level hardware. Ha. I wish. We're usually working with chips where the software from the chip vendor isn't done, and isn't going to be done before we need to ship a product. And then there's issues where the vendor calls it 'done', and it isn't done, and we have to fill in the gaps.
- bitwize 8y agoIn Japan, with the possible exception of certain industries -- such as video games -- programming historically hasn't been seen as a professional practice in its own right, but something done in the course of other engineering work. I think this is where embedded software development is headed. The real low-level stuff will be done by HWEs; everything above that will have an easy peasy Node wrapper that you can assign Fullstack Academy grads to develop for.
- godelmachine 8y agoTo all those who say that we will always need Embedded Engineers to keep things optimized at the register level, I humbly put forth these two research, which may possibly automate optimization at the hardware level https://news.ycombinator.com/item?id=15894896 https://news.ycombinator.com/item?id=15894896 https://news.ycombinator.com/item?id=5521029 https://news.ycombinator.com/item?id=5521029
- TFortunato 8y agoAs someone who held the title of Embedded Systems / Embedded Software engineer at multiple places, just want to respond that optimizing things at the register level is NOT the main focus, or even a sizable amount of what embedded engineering is all about...
- godelmachine 8y agoOk, thanks for letting me know
- hak8or 8y agoI agree with a few comments here about how the field seems to skew heavily towards the older range, but based on my job hunt in NYC there are very few jobs like this. After a week and a half I have no interviews even though I have a few beefy side projects (embedded Linux system I designed myself), use both C and c++, heavily, contributed a bug fix to the Linux kernel, and even have 3 years experience at a company. To be fair, there are few jobs like this it seems on nyc (managed to find only ~25 on LinkedIn).
- TickleSteve 8y agoEmbedded jobs are very geographically clustered. You have to have either existing engineering/industrial area (such as Reading in the UK) or a h/w startup & high tech area such as Cambridge (UK).
- ropeadopepope 8y agoDo you happen to know where those clusters are in the US?
- chillingeffect 8y agoWow, massive Gell-Manning effect going on in these comments. I've taken one of Jacob Beningo's courses after working for a long time in embedded and I know exactly where he's coming from. Granted the title is a bit clickbait. The fact that he's "selling something" doesn't mean he's shill. It actually underlines his authority on the matter. In this short article he only had a short space to address the state of embedded engineering. But of the key trends, IoS is only one of them. The other important one is the abundance of CPU cycles. It's hardly required to be close to the metal these days. In some cases, yes, but things are hardly bound like they were 10-20 years ago. Also, perihperals are standardizing. This means the skills are more abundant. Plus, education is widespread, so many things that were mysterious aren't anymore. Next, product cycles are shorter, so shortcomings in products can be fixed in the next rev when better HW is available. Also, SW engineering practices are getting inherited from the rest of SW eng industry, so quality and predictability are increasing. Also traditional CS people can be very effective in embedded areas. However, there will always be about 10% of the market that is difficult enough or requires enough expertise that only highly experienced people can achieve. These embedded engs can't be replaced any time soon.
- TickleSteve 8y agoThis is complete c..p. Frameworks have existed since forever, the same as in desktop, server and UI software. There is a) nothing new here and b) an assumption that the frameworks provide something valuable. Very poor quality article based on false assumptions and lack of experience.
- oflannabhra 8y agoI've recently transitioned from being an "application developer" (to use the article's terminology) to embedded firmware. The difference between the two is not as great as the article is trying to make it. Yes, there are specialized skills, but that is true of any platform. Win32 and iOS are as far apart from each other as iOS and embedded. I've worked with several developers with 20+ years embedded experience who wrote horrible, unmaintainable code. However, the article's main tenet I agree with: Higher level abstractions are being pushed for lots of platforms. A great example of this is Google Things [0]. I have my doubts about the quality of product you'll get by asking Android developers to write "firmware" for you hardware product, but it is evidence of the general push. The author seems to accept that these pushes will be immediately successful. I have my doubts. [0] - https://developer.android.com/things/ https://developer.android.com/things/
- jonahrd 8y agoThis article doesn't ring true for me at all. I'm a recent (last year) university grad from a "software engineering" program that was super heavily focused on electrical engineering and low-level embedded stuff. I currently work as an embedded software engineer. Maybe it's the only program like this left, but I doubt that. Where does the author back up his claims that universities are shifting away from offering this?