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!

  • 4wd
    link
    52 months ago

    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.

    • @ericjmorey
      link
      32 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.

    • Ephera
      link
      fedilink
      32 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.