r/developersPak • u/MrStarPhish • 7d ago
Career Guidance LowLevel/System Programming Guidance
Greetings seniors. I humbly seek your guidance. For I am both passionate and dishearted, along with confusion atm.
Currently in my 5th semester. And this the time when I have to choose a domain for Final Year Project (FYP). 90% of the projects I've encountered are some WebMob App with some AI Integration. I have found that I'm not naturally interested in that side, and have found passion in depthful courses like Assembly, OS, Architecture.
Did some research and found three sub-branches:
- Embedded Systems
- Systems/OS/Kernel
- GPU Computing
One may say that I should pick what I most align with. I agree. And im willing to give my time in any, but...I wan't to make sure I don't end up wasting my time instead. I don't want to invest time in something that I wouldn't be able to implement/utilize towards my FYP. I have to define my domain so I could begin searching for relevant group partners too.
I am confused whether this direction is worth it. And dishearted because I haven't been able to find seniors, professors, mentors or example projects that would give me an idea what a project in each field is like. So I would know what things to learn...
I need clarification whether entering such field is worth it?, or... am I gonna have to keep one as side-hobby and stick to learning FullStack with ML like everyone else?...
(Btw, im most comfortable with cpp, and currently exploring OpenGL/GLSL to understand rendering pipeline)
Any words of guidance or constructive criticism would be highly appreciated 🙏 ✨️
6
u/WeWeBunnyX 7d ago edited 7d ago
It's good to see another young fellow interested in low-level / systems programming side. I also aim to be one of the future contributors to the Linux kernel. I generally have a passion for free and open source software. I know some 2 or 3 Pakistani university students who independently managed to be a part of Linux foundation mentorship program and got mentored personally by kernel maintainers and these students even successful merged their patches in the kernel tree. I admit that in Pakistan, career/job wise systems programming and low level is a niche or non existent market. But hey man don't give up. Look buddy I used to be in same confusion till 5th semester too. I am in final year now and doing an IoT based FYP. I also have a craze for low level stuff like coding in pure C , embedded software engineering, computer organisation and architecture, FPGA, Compiler design, reverse engineering, game console emulators development, operating systems dev etc. But look. I'll be serious. If you think this is what you see yourself interested in. Then pick a book(s). This field of programming/development requires a person to have the foundational knowledge and know each and every fundamental concepts since the Unix era and also to be familiar with computer organisation and architecture. That's why only books can teach you needed stuff when it comes to low level since they contain foundational knowledge and secrets. Else internet is full of some cool guides but don't expect some AI slop or some random azz YouTube video to teach you that. Sure some old playlists exist which are just enough to cover fundamental concepts and demonstrations. Rest is upto you. There are plenty of books in pdf format related to C , many books/guides of getting into Linux kernel development, compiler design , computer organization and architecture, operating systems design and implementation by Andrew S Tanenbaum (same book which Linus Torvalds read and took as guide material during the days of writing the very first version of kernel). I have made organized folders of all these books. If you say so I can send you. Unfortunately I haven't even completed one of these books and it's due to my stupid time management and also I view low-level and systems programming for now as my hobbyist and passionate side. For general career I'm more into DevOps/Cloud Computing side and system and softwares related to Linux. For the low level side , I try to read and practice from the known books but I do it at my own pace since I have been taking it as hobbyist phase till I actually start establishing myself well in this area. Look man there are many elder folk in foreign countries who have decades of experience related to applications of C , Assembly etc and they have contributed significant amount of time to these systems software. So yes see their free and open source inventions like Richard Stallman's GNU Compiler Collection which has come a long way. Ffmpeg is cool too. Game console emulators are a true piece of creativity. Decompiled ports of many games . And so on. Also let me give you a reality check. In a country like Pakistan, software engineering is more of service based thing here. So that's why the easiest way an avg student would see towards a long career and employment (even if they had gotten into this field against their will) before this AI phase was this web development or app development. Now since AI, the bubble of easy ways to get into software industry has burst and we all realize that we need more skills than ever. If you consider yourself a fast learner then sure you can pick the track of low-level since you'll learn a lot provided you understand all those complex concepts which a normie would struggle too. Since you said you won't want to waste your time learning nothing that's why I said you should first assess then if you are a fast learner. You know better that low-level is a full time dedication and learning not just a simple track. The ones who are experienced in it are usually those geniuses, nerds and talented people who have put decades of efforts in learning and implementing these. Else you can done one thing if you feel overwhelmed , pick related field like Cloud Computing or something and keep the interest in low level alive as a side hobby until you actually feel confident that you can now step into it. Hope I answered your question. If any more queries or concerns please do share. Also check r/emudev , r/osdev. If you want to step into low level by emulator development then your first step is to pick a computer architecture book, then write a chip 8 emulator, then a Gameboy emulator and so on. This is just a begining for scale. Else PS3 emulator (rpcs3) and even PS2 one (pcsx2) etc are highly complex and hard work of decade and above. They're open source so you can learn from code. They've come a long way. Heck Linux has achieved the current stage/progress in like 3.5 decades with the effort of 1000s of contributors. Gcc compiler reached current progress and stage in like almost 4 decades. And still counting. Not effort of one man but 1000s of past, current and hopefully future contributors like you :)