If you want to be good at writing or working on or reading large code repositories, then yes. It needs a whole separate set of skills that take time to learn and need to be practised.
But of course, if you're content to work on small projects (and as an amateur, you might be), then there's no need... (Sorry if that sounds redundantly obvious).
So if you've decided that this is worthwhile, some hints:
- There is a huge difference between codebases; if you have a choice, choose a well-designed one so it'll be easier and you'll learn more.
- Make sure you know the language well enough (I know 'amateur' doesn't mean 'beginner' but there's overlap).
- Make sure you understand at a functional level what the code does (e.g. what is the purpose? learn some domain knowledge if needed).
- Try to get an overview of the 'parts' of the codebase, e.g. the different functions involved. Possibly by just starting from the main file.
- After that, go one module at a time (hope it's compartmentalized, see hint #1).
- Use debugger to step through the code.
- Try to change something. Choose a simple open issue if available.
- Add a small feature. If no functional changes should be made, try to refactor it to be better somehow.