I’m really surprised they didn’t teach us anything about this at school.
One of the biggest barriers of entry (at least for me personally) to contributing to open source software is the fact that you don’t know the code. You weren’t there as it was being built up from the ground, so you don’t have an immediate and complete understanding of how it’s structured or why certain choices were made. You’re missing a lot of knowledge that could help you work with the code, but it’s all very foreign.
Now of course you can read it all, step through it with a debugger, attempt to get a grasp on the flow. And while that may be important if you want to work on the more complex bugs or features, it’s also a huge pain in the ass, especially on larger projects.
Instead, try working on smaller things. Implementing a simple feature might not have you touching more than a single file, maybe look at a couple others, and you’re done already. What’s more, you’ve learned how a small part of the codebase works, which will aid in your understanding of other parts.