HNHacker News
TopNewBestAskShowJobs

throwaway777836

13 karma · joined April 13, 2017

submissionscomments
throwaway777836··on Low-Level Programming University – A roadmap to becoming a low-level programmer
Are you me? Honestly, that all sums it up even better. In an embedded role, you are always a second class citizen. After 6-12 months of planning by the hardware folks: "The hardware is all done. Where's the software? What do you mean it's not finished, you had all year...?" You're a complete afterthought, and it's only amplified when working with a team that doesn't really "get" that without access to the actual, finalized hardware you're extremely limited in capabilities. It only gets better when they decide to go with one-off vendors who have a single product support engineer and its pulling teeth any time something goes wrong. It's often hardware related, but who cares -- you're the guy at the end of pipeline who's tasked with making it work, so yeah, you feel the wrath.

I'm only extra cynical because I'm dealing with that right now. As I have many times before, though. It's part and parcel.

throwaway777836··on Low-Level Programming University – A roadmap to becoming a low-level programmer
Because those companies, and their mindsets, represent a fraction of all software jobs. The performance improvements that come from having good systems programmers appeal to only a small subset of companies. Even if the opportunity is there, features are what matter primarily to most companies. Only the ones with deep pockets and forward thinking will shell out for talent who will improve the infrastructure in a way that leads to often incremental and unnoticed or "unnecessary" improvements.
throwaway777836··on Low-Level Programming University – A roadmap to becoming a low-level programmer
As an embedded programmer, I wholeheartedly second this.

I'm in an area where there are relatively few opportunities to do close to the metal work. The ones that do, don't pay any more than backend web developers make. In fact I've come to assume that they can offer less due to either the intrigue of the work, or because you often compete with computer/electrical engineers who aren't expecting outsized developer salaries.

Likewise, while I have loved the skills I've learned in embedded and low-level work, working at an embedded shop has taken a lot of the joy out of the learning. You trade off an inherent rewarding development environment with the realities of developing against hardware, where project cycles are long, you're often dependent on horrible vendor APIs and support, and where everything moves much slower.

The counter to that is the type of work I believe you're describing, which sounds like HFT optimization on Intel. I got into embedded because I wanted to eventually end up there, but again, it's an extremely limited market. And as someone who has indeed dabbled in the Fog optimization manuals, you quickly learn to realize how much the ROI of assembly isn't worth it. The future of speed isn't going to be going lower down the programming stack. It's going to be in new hardware: FPGAs and ASICs, writing RTL for system specific CPUs. And that is highly exciting, though it necessitates a pure programmer has to learn hardware at a deep level as you imply.

As for me, I concur with the statements others are making about using my skillset for security research and reverse engineering. Working in embedded development has bored me to tears, and taken the magic out of learning to love the skills themselves. I'd much prefer to work at a pace that isn't limited by the pace of a cross functional team of software and hardware engineers.

Learn the skills, yes, completely. The knowledge is worth it. But for the love of God, don't get expect to get joy out of working in it.