Não sei se há uma resposta fácil para isso, nem um caminho único, mas vou te falar o caminho que eu trilhei.
Eu comecei na programação ainda criança no final dos anos 90, criando bobagens em visual basic, brincando e testando.
Meu primeiro contato mais profissional com programação foi já em 2008, onde na empresa que estagiei me colocaram para ler o codigo de um produto de cabo a rabo, e escrever um resumo sobre como funcionava. Isso serviu para eu entender como aquilo funcionava, e consegui enxergar um pouco o porquê de determinadas decisões tomadas.
Depois quando passei a trabalhar com web, trilhei meu próprio caminho usando o google como instrução, para mim sempre foi facil fazer assim.
Depois eu deriveina usar um framework (Laravel) e daí passei a entender outros conceitos, aprender design patterns, orientação a objeto. Ver vídeo aulas sobre o framework (Laracasts) foi fundamental pro meu crescimento.
Mas sempre aliado a isso tudo, houve muita pesquisa e tentativa e erro, eu nunca trilhei uma faculdade ou curso de programação.
Se você não tem essa facilidade, busque aprender através de um curso ou faculdade