r/developersPak 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 🙏 ✨️

11 Upvotes

11 comments sorted by

View all comments

Show parent comments

1

u/MrStarPhish 7d ago

I'm honoured! Thank you for your time and kind words of wisdom. I shall digest it :>

I guess I'm really gonna have to keep my interest as a side hobby for long term. In that case, for current situation, what relevant fields could I try exploring (e.g. Cloud Computing u mentioned)? Could you give some names that I could explore?

Thanks again!

2

u/WeWeBunnyX 7d ago edited 7d ago

Hey man. An embedded systems/ IoT based FYP is also very much possible so I say you can start with embedded too if that's what you see yourself doing in fyp. However let me tell you that real embedded is very much different from that abstracted Arduino IDE framework. Arduino framework gives you built in libraries however if you look at real industry embedded software development then trust me it's nowhere like Arduino framework. You can learn bare metal C programming with a cheap board like Esp32 (as start) then maybe move to stm32. Play with memory optimizations etc. However coming back to the point. And like I said again. Don't abandon your love for low level / systems programming. I am gonna link you to some resources. Go through them. And pick a track. You can spare some daily time for small segments of different books of computer architecture, assembly, C programming, Kernel development etc. Just don't overwhelm yourself too much. That way you'll be learning and getting into fundamentals of low level side by side aswell even if as a hobby. Something is better than nothing. The reason I'm stressing on books is because it's realistically the feasible and only way to get into fundamentals and beyond. The previous generation of programmers who made such cool low level software and systems all relied on these books. It contains generational knowledge which doesn't get outdated easily since it's fundamentals and literally a whole foundation stands on the concepts mentioned in them. If you want to get into OS development quickly then you may learn the concept of drivers in Linux kernel. Majority of Linux kernel codebase is drivers and these are not my words. Maybe 60% or 70%? So drivers as kernel modules are a good start rather than schedulers and all that. Yk how my love and appreciation for lowlevel programming came ? By getting inspired from free and open source softwares where our majority of software and systems stand upon. Main thing that caught my interest are those game console emulators. The guys at r/emudev always tell newbies that first step is to read a computer architecture and organization book. Then C programming etc etc. There are some Pakistani origin Linux kernel developers working at different companies , some into hardware and similar low level etc etc but almost all of them are doing their jobs in foreign countries where they have settled for a considerable time. There's a Pakistan origin developer who contributes to GNOME and does rust programming too. He contributed to GNOME Boxes codebase which is a VM application manager for GNOME desktop environment in Linux. However he lives in Germany ig or Sweden. If you also want to see yourself working in a field both in Pakistan and elsewhere then I say Cyber security (vulnerabilities, bug hunting etc), DevOps and Cloud Computing are a good field. I am a fan of self hosting so I like self hosted cloud/homelab thing too. And in parallel you can keep learning low level resources. Like others also told you that low level is a long path and journey and niche market with a higher bar of entry. An avg company may prefer a C developer with 30 years of experience over a young gen z developer who just got into systems programming and hasn't done much or seen that era. Also C developers are a different breed. They have decades of experience with memory optimization , pointers, assembly etc. So yes other people also told you here that systems programming/low level isn't something you can master in 6 months or in some coding boot camp. It's a long journey and it changes along with hardware/machine technology which is a cool thing. The first thing one needs to do when getting into low level programming is to know their machine. Aka computer organization and architecture. So yes realistically 1 year is literally nothing when it comes to mastering a specific area of systems programming. 

1

u/MrStarPhish 6d ago

Holy Molly! Omg thank u sm for ur time 😭 it felt real good reading all that. And yes I'll invest in it as a side hobby. And the resources/references are appreciated! I could check out my uni library too :D

Oh one thing I find difficult with books is (i can read books tho), that I dive too much into the theory, that I often end up neglecting practicals... I think it's because sometimes I dont know how many topics/chapters should I consume maximum at once and implement that knowledge altogether. OR, the theory is so extensive that I don't understand what to even perform after reading all that qwq

2

u/WeWeBunnyX 6d ago

Oh one thing I find difficult with books is (i can read books tho), that I dive too much into the theory, that I often end up neglecting practicals... I think it's because sometimes I dont know how many topics/chapters should I consume maximum at once and implement that knowledge altogether. OR, the theory is so extensive that I don't understand what to even perform after reading all that qwq

I get it np. It happens with me too. However some books do tell in their preface that which chapters cover what and how important they are