Olha @LucasLeao, já tivemos uma série de excelentes respostas aqui que concordo totalmente, mas deixo meus 50 centavos também que uma lista que construi com base em várias outras fontes: Os Principais Fundamentos da Programação.
Leve em consideração a publicação que escrevi e todos os comentários dela, lá tem diversos esclarecimentos (como o ponto do maniero sobre Lógica de Programação).
Mas entenda, fundamentos precisam ser entendidos, levados em conta, mas nem sempre é o que você irá trabalhar. Entenda que você entende o que faz com os fundamentos, sem os fundamentos você só faz. E só fazer não significa que é fazer certo. A pior sensação é só fazer copiando da internet por que alguém falou pra fazer ou pior é você falar que não dá pra fazer algo porque você não entendeu e este algo não existe por aí. Entender os fundamentos, levar eles a sério e a partir daí você passar a trabalhar melhor no que faz, é realmente por aí o caminho do crescimento no mundo do desenvolvimento.
Espero ter contrbuído mais um pouco depois de tantas outras grandes contribuições aqui!