Over the years I've learned many many things in depth. I've worked on codebases totaling hundreds of Mlocs. Perhaps I can say a thing or two about this.
First, it takes time to develop a method that will work for you, and I won't pretend that mine will, but as that's what I know... The first time you have to do this is the hardest, but each time you'll feel like you're at the bottom of the Himalayas and have to climb to the top without help -- you might always feel a bit helpless at first, and you might have to defeat that feeling every time, and that's OK.
Second, you need to get a handle on concepts first, details later. When you deal with hundreds of millions of lines of code you just can't know enough of the details. Instead you need to know how to navigate your way around the landscape, and you need to know the general lay of the land, and key landmarks. This will help you organize the details that you must remember, and discard the ones you can refresh as needed.
Third, the ABAB pattern to dealing with prerequisites is essential: learn as much of A as you need to before you block having to learn some of a prerequisite B, then switch to B enough to get back on track to A, lather, rinse, repeat. Even establishing all the prerequisites and topologically sorting them might be ETOOHARD, and learning them all in the right order might be ETOOBORING or not good enough to build the muscle memory you need for the earlier topics.
Fourth, learn the tools early. Whether you use a proper IDE or integrate usage of a bunch of standalone tools into something like an IDE, you'll need one of them.
First, it takes time to develop a method that will work for you, and I won't pretend that mine will, but as that's what I know... The first time you have to do this is the hardest, but each time you'll feel like you're at the bottom of the Himalayas and have to climb to the top without help -- you might always feel a bit helpless at first, and you might have to defeat that feeling every time, and that's OK.
Second, you need to get a handle on concepts first, details later. When you deal with hundreds of millions of lines of code you just can't know enough of the details. Instead you need to know how to navigate your way around the landscape, and you need to know the general lay of the land, and key landmarks. This will help you organize the details that you must remember, and discard the ones you can refresh as needed.
Third, the ABAB pattern to dealing with prerequisites is essential: learn as much of A as you need to before you block having to learn some of a prerequisite B, then switch to B enough to get back on track to A, lather, rinse, repeat. Even establishing all the prerequisites and topologically sorting them might be ETOOHARD, and learning them all in the right order might be ETOOBORING or not good enough to build the muscle memory you need for the earlier topics.
Fourth, learn the tools early. Whether you use a proper IDE or integrate usage of a bunch of standalone tools into something like an IDE, you'll need one of them.