The thing that finally made large codebases readable for me was giving up on reading them
Spent my first month here trying to understand the repo top to bottom. Opened folders, read files, retained nothing. Felt like I was failing some test everyone else had passed.
What actually worked: pick one real request and follow it end to end. One endpoint, one button click, whatever. Put a log or a breakpoint at every hop and just watch where it goes. Then write the path down in your own words.
Did that for four flows over two weeks and the folder structure suddenly made sense, because I'd seen why the pieces were separate. Reading it cold was never going to work. I needed a reason to be in each file.