3 ms·
The term "Systems Programming" is pretty wide and encompasses everything from databases and distributed systems which can and are written in Java (eg Cassandra,
by avl999 5y ago
The term "Systems Programming" is pretty wide and encompasses everything from databases and distributed systems which can and are written in Java (eg Cassandra, Zookeeper, Kafka) to really low level embedded devices with only a few kb of memory.
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)
- markus_zhang 5y agoThis is an interesting approach. I'm taking some CS courses starting from this summer (advanced programming this summer and data structure this fall) and hopefully can get to either compiler or OS next year, probably both actually. I think porting a niche language to a MCU or write a tiny OS for it could be bery approachable. For the former definition I'd even treat say developing Airflow operators to be sort of sys prog. It's stretchy but gives me the same kind of satisfaction. Not sure if OP agrees though.
- 3a2d29 5y agoInteresting this was mentioned. I was wondering whether to try a class rather than do it on myself. Are you taking these at a local university or online?
- markus_zhang 5y agoOn local. However I believe taking material from a respected university (MIT/Berkeley/CMU) and work on oneself is a way better option, if you can grit through. It's just a few courses TBH: one for programming (can skip if already know), one for comp arch, one for data structure and you are done with the basics (drop in either a discrete math course if you have no exposure to it, which I do, or a computer language theory class if you want to do compiler). You can then take advanced courses e.g. Operating system or Compiler theories. I'm always thinking about going that route, saving some $$$ yet learn more than from mediocre local universities. Tried a few times but never get past the data structure course. Ping me if you want to do it altogether. It's probably easier when studying in a group. edit Just realized you are a backend developer so you are probably better than me. I mean you can probably skip more courses :)
- 3a2d29 5y agoThanks! Yeah I'll think it over. Thats sort of what I was thinking, surely all the textbooks and knowledge is out there, so I could teach it to myself, but having a structured class is nice. I'll let you know. If I decide to go down the study group route, I'll ping you. I have already taken a data structures course, but nothing close to Operating Systems or Compiler Theory.
- 3a2d29 5y agoThanks I appreciate the advice. Yeah I think I haven’t really dived deep enough into the area to know if either of those is what I prefer, but I’ll give both a go.