Curious how hard it is to move from a generic web backend engineering job to a systems programming job.
I am currently a junior with 1.5 YOE. I took a few cs classes in C++ and have messed around on GitHub with C and Rust.
I enjoyed the extra challenge of memory management and thinking more of performance / memory safety. While I want to try and program an emulator or some sort of systems project (recommendations welcome / textbooks to read welcome) before I definitely decide to move into that area, I was curious how hard it is.
I’m sure companies aren’t thrilled to hire juniors with no systems or embedded experience. Would it be better to move to a company with low-level programming teams as a Java dev and then transfer to those teams? (Current employer does basically no low level work anywhere on any team)
Definitely a good idea to try writing an emulator, though. Writing a Game Boy emulator is popular: It's just at the right intersection to be a simple enough architecture to get results very quickly, but with enough intricacies if you dive deeper to keep it interesting.
I am not sure if you are committed to the later but for the former you can do that in Java by the finding the right company. I also think (but don't have anything to back it up other than anecdotes) that the job market for the former is much bigger than if you solely restrict yourself to embedded systems, not just in Java but also in Rust/Go where a lot of companies are making that type of software.
For embedded device playing around, you could do some fun projects with micro-controllers (eg Raspberry Pico or ESP32):
* Write tiny db library (think sqlite with a smaller set of features)
* Write a multitasking OS for the Pico (easier than writing an os for traditional machines as you don't really have to support peripherals, you could look at FreeRTOS api and try to implement something that looks like it)
Anyway 1.5yoe is still early in the career. For junior roles companies may rather seek enthusiastic candidates with self-learning potential to grow in their environment and some commercial experience may be just nice to have.
I would scratch my itch with side-projects - demos, blogs, community activity to show off to prospective companies. I did it like that in the past to get foot into Java shop doors, 22yoe Java dev here :)
But I encourage you to think instead about the next 20+ years.
What would make you a valuable contributor in that time frame? Much, much more education. Self-taught/experience along might have worked in 1980's-90's, but 2035 will demand deep training and initiative.
So don't just do your future self a favor; make a life-changing commitment.
If it seems not financially feasible, or you don't actually know what you want, just realize: (1) the longer you wait, the worse it gets (and the more confused you are); and (2) when you make that commitment, you'll start to put everything else into place. The commitment is the hardest part.
What might get you off the fence? Think of the coolest thing you want to see in the future, and work towards that.