I have seen lots of tutorials and posts teaching about different programming languages and frameworks and stuff but I have never seen a tutorial teaching about how to dive into large codebase. I am somewhere in between beginner-intermediate level programmer and I have always wondered how programmers familiarize themselves with large codebases. There are tons and tons of open-source projects on GitHub, SourceForge, Bitbucket and ... you name it. Most of them have contributers who starts contributing after project matured and it doesn't seem they would have red and understood whole source code of project before contributing or have they?
Now my question is:
Are there any tutorials,books or other materials teaching about how to dive,familiarize,read,understand and contribute to large codebases efficiently?
For open source, I would amend it by adding that you should hang out in the chat room -- you will pick up some answers to easy getting started questions by osmosis and be a better known name when you are ready to submit a patch -- and read any contributing guides that outline procedures for contributors. You should do this if you ever want to contribute even if you don't think you have the understanding/skill level to do so yet.
Over time I've begun to understand that what really causes issues with junior devs and established codebases is at least 50% psychological -- young good coders think code should be like a math problem, there is a number of formulas they know, they identify the problem, apply the formula, solve everything. When faced with a lot of code where the problem is not well-characterized, they start thinking they are not smart enough for the problem and the ensuing anxiety spiral usually makes them _actually_ not smart enough to see the forest for the trees.
[1]: http://arandr.github.io/2015/01/17/how-i-learned-to-stop-wor...