As others have said, tests are a great place to start. They give a bit more context. I also like looking for the entry point and seeing how the environment is created, and step through it from there.
Hopefully not self promotion, but I wrote a blog on this a while back: https://ruairidh.dev/how-to-understand-a-new-codebase