o melhor jeito de aprender quase qualquer coisa é tendo um problema para resolver.
problemas que são resolvidos utilizando programação normalmente são coisas repetitivas ou que podem ser automatizadas.
e aos poucos você vai avançando e entendendo o que não sabe, e aí vai procurar mais sobre.
se não tiver um problema na mão pra resolver ou se acha que está tentando dar um passo maior que a perna, sugiro que pesquise as grades curriculares de ciência da computação de universidades boas e aí estude de acordo com a ordem que eles apresentam as coisas.
normalmente boas universidades gastam um bom recurso estudando a melhor ordem de ensinar as coisas.
existem também cursos inteiros online de universidades como MIT, Stanford e outras nos EUA que gravam as aulas e disponibilizam online.
e se procurar, existe um github que alguém criou com uma grade curricular "open source" do que seria um curso de ciência da computação.
já deve ter notado duas coisas:
1. inglês é fundamental. se não tem comece por ele pois é o mais trabalhoso.
2. não tem atalho. se quer um "curso milagroso pra virar programador e ficar rico" é melhor buscar outra coisa.