Hacker News new | ask | show | jobs
by foobiekr 1976 days ago
Embedded is a lot of fun. A lot of fun. It's "real coding" to me, though I haven't done any in fifteen years.

But .. embedded vendors can suck. A lot. Terrible docs, epic levels of errata (e.g., a PowerPC vendor who, at one time, shipped a bigger errata document than the entire manual set for an x86 of the same era), and just.. marginal everything. In some cases, they are really interesting - the Broadcom Fastpath SDK was actually a good mix of excellent and terrible.

But the SDKs can be absolute trash even from name-brand vendors. Without naming names, I'll give an example: SDK contains a linux distribution from an CPU ASIC company shipped as a tar file. You have no indication whatsoever what the reference point for the linux kernel is, no idea what patches it has or does not have, and so on. When you ask them, they don't even understand why you care. Get ready for the fun of massive diffing. The network stacks on the really low-end can be shockingly bad.

From a career standpoint, embedded is a bit of a niche. You will probably always have a job - especially in the IoT era, but even without that. It is typically a somewhat solitary role - you do the code for the XXX block (if drivers) or for some set if functions (IoT-style embedded), but you don't end up doing "broaden your scope" things as much - no system-level nor distributed systems work, which can be somewhat limiting.

2 comments

> It's "real coding" to me, though I haven't done any in fifteen years.

For what it's worth, as someone who's done both (Linux kernel maintainer and web developer), this sentiment reads as a kind of chauvinism to me -- the implication that higher-level work isn't real coding.

If I had to choose which was more difficult, I'll probably go with web development: the kernel simply had much less that you had to know to be effective, compared to the massive stack of protocols and frameworks that even a simple web app runs on top of and demands competency with.

OP made a judgement call and ranked his/her preferences. So be it. I understand the sentiment.

Comparing work I do, the higher up I go the less it can feel like coding. Javascript, Python, and Ruby frameworks at times can feel like a paint by numbers puzzle - and I don't mean that to be complimentary under any interpretation.

That doesn't make good web development "easy", nor does it diminish the value of good ideas and fast product development.

Interesting perspective about “real” coding. The purpose of software for me is to solve problems for people. Infrastructure-leave code doesn’t directly help users, though of course it does indirectly. But I think the low level stuff is fun for people who are interested in how things work, and completely inconsequential from an external value point of view.

So I see a real argument for the code that builds an application in the simplest way possible being the “realest” form of coding.