Vou começar dando uma informação que as pessoas não entendem sobre esses títulos, e isso não deixa de ser um fundamento de carreira. Fundamento não é só aprender programação.
Ao contrário da crença popular, ser júnior não é saber quase nada. É saber quase tudo. Ainda com falhas, e sem a experiência necessária para aplicar bem, sem ser produtivo, precisando de apoio. Mas não é não saber, quem não sabe é no máximo trainee, talvez até aprendiz.
Como o próprio nome diz, fundamento é algo básico, não é avançado. É algo de baixo, algo que começa antes da pessoa aprender programação. Sênior é um título que se dá para pessoas experientes, que estão na parte de cima da carreira, não na de baixo. Fundamento é algo que tem chance menor de usar diretamente, que serve para sustentar outras coisas.
O fundamento é saber o que vem antes da computação. É saber os termos corretos das coisas (as pessoas não sabem o que é uma API, muito menos ABI). Não deixa de ser fundamento ter comprometimento com o acerto e não com o erro. Fundamento é também a atitude certa.
Eu já vi gente falando que o termo certo não importa (atitude errada). Mas se a pessoa usa o termo atributo onde não cabe ou pelo menos não sabe que está usando em contexto errado e que faz sentido em outro, ela vai usar errado aquilo (outro exemplo). E ela vai programar mal porque ela não dá valor para ontologia, taxonomia, dialética (viu como comunicação e expressão é importante?). Sem isso a pessoa não dá nome certo para as coisas. Não entende bem o que é aquilo que ela está criando. Não cria seus objetos de forma coerente, que é todo o propósito de um paradigma (secundário, outro erro por falta de fundamento) inteiro. Não é piada que uma das coisas mais difíceis da computação é dar nomes para as coisas. O termo correto ajuda a entender o problema.
Mas eu sei que as pessoas querem lista. Um dia eu farei uma lista, mas preciso de tempo e cuidado para errar pouco.
Vou te dar um exemplo do que muita gente coloca como fundamento e não é: orientação a objeto. Não é fundamento porque é avançado, não é fácil fazer certo, precisa de experiência e dá para viver sem, por exemplo não é usado em Rust. Se começar aprender cedo demais, vai aprender errado, vai treinar esse erro, e adivinha o que vai acontecer no futuro?
Vão colocar na lista a "lógica de programação". Eu entendo isso, tem até livros com esse título. Mas em inglês sequer têm esse termo e nos livros daqui não definem claramente o que é isso, ou define o que é construir algoritmos, o que é programar. Percebe como é fácil ter falhas e sem todos os fundamentos, até o que vem antes da programação, a pessoa deixa de ser questionadora e aceita receitas de bolo? Quem segue receitas de bolo, que alguns chamam de "boa prática" despreza os fundamentos. O conceito é fundamento. O termo é equivocado.
Por que você acha que ultimamente surge tanta coisa nova mal definida e até com nome errado (tipo serverless, NoSQL, responsivo, etc.)? Falta ter gente que se dedica aos fundamentos para tornar essas coisas fundamentadas. O mercado não entende de fundamentos.
Pela falta de fundamento as pessoas adotam web onde poderia fazer algo melhor. Ok, não é só por isso, mas ajuda. Muitas vezes falta completo entendimento do fundamento e saber aplicá-lo corretamente, algo que muita gente com título de sênior não sabe, o que faz-se questionar o título.
Fundamento se aprende um passo de cada vez. Um que aprende puxa o outro.
Eu dei uma resposta falando sobre isso.
Também será útil: https://pt.quora.com/Quais-conhecimentos-complementares-al%C3%A9m-de-l%C3%B3gica-de-programa%C3%A7%C3%A3o-voc%C3%AA-recomendaria-para-algu%C3%A9m-que-est%C3%A1-aprendendo-a-programar. E mais uma: https://pt.quora.com/Qual-%C3%A1rea-da-programa%C3%A7%C3%A3o-voc%C3%AA-acha-que-%C3%A9-mais-adequada-a-um-iniciante/answer/Antonio-Maniero.
E se quiser mais veja o que tem de mais votado no SO e SOpt (nem tudo mais votado é o melhor, mas tem pouco erro lá, não é como o Reddit que o mais votado você faz o contrário). O meu perfil é de respostas principalmente sobre fundamentos. Pode ser pelo menos um começo.
Faz sentido para você?
Espero ter ajudado.
Farei algo que muitos pedem para aprender a programar corretamente, gratuitamente. Para saber quando, me segue nas suas plataformas preferidas. Quase não as uso, não terá infindas notificações (links aqui).