Eu passei por essse caminho também!
Acabei criando a seguinte estrategia: Através de um código funcional eu aprendo o maximo possivel sobre ele. Tento implementar tudo que for necessário nele, usando como base exemplos existentes no projeto.
Com o tempo fui aprendendo aquela estrutura em especifico.
Conforme fui tendo oportunidades diferentes praticava isso, chegou um momento que tenho facilidade em entender projetos e linguagens diferentes.
Uma segunda estrategia que utilizei foi: Criar o mesmo projeto exemplo, só que eu codificando e escrevendo... Tentando rodar, pegar os erros e sair caçando o motivo do problema (aplico ela apenas quando entendi 100% a estrutura usando a 1 estrategia).