this post was submitted on 08 May 2024
26 points (100.0% liked)

Ask Experienced Devs

1064 readers
1 users here now

Icon base by Delapouite under CC BY 3.0 with modifications to add a gradient

founded 1 year ago
MODERATORS
 

I'm really enthusiastic about anything involved with Unix/Unix-like operating systems and their ecosystems (Mostly Linux and a bit of BSD variations). I also know a couple of programming languages including C, C++23 and OCaml. But other than doing a couple of tiny projects mainly to practice my programming skills in the languages mentioned above, most of my experience is theoretical and it comes from reading books, blogs and watching conferences.

I'm interested in gaining "actual" experience by doing systems programming related projects but I'm not sure how to get started. How do I decide on which topic to choose? A topic which would not be too overwhelming and actually achievable? And how do I gain the background knowledge needed to implement a project without ending up copying and pasting everything from existing implementations?

Thank you!

you are viewing a single comment's thread
view the rest of the comments
[–] [email protected] 5 points 3 months ago (2 children)

Some "pro" guys on YT will probably point you to https://github.com/codecrafters-io/build-your-own-x and https://github.com/practical-tutorials/project-based-learning. But...

I don't recommend reinventing the wheel if you want to gain REAL development skills. Development is really about achieving your goal using existing (and preferably popular) solutions.

It makes no sense to write any system-level projects from scratch in 2024 if projects with a similar purpose already exist. Try using them as a regular user. Maybe you will find features that you would like to fix or add.

[–] [email protected] 3 points 3 months ago

If your goal is to complete a task, then using what exists is typically the best path. But that's not the only goal to strive for.

[–] [email protected] 3 points 3 months ago

I always found it overly prohibitive, to not reinvent the wheel, because there's a lot of wheels already out there. If I have an idea for a project, I do make sure to not look up any existing solutions, because that would kill my motivation immediately.

I wouldn't follow a tutorial either, though, since figuring out how to do it, that's half the learning process.