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).
Ja dei uma estrela no seu repo, sua resposta foi uma maravilha, esse vai ser o meu começo obrigado amigo, serei um bom programador Rust no futuro que domina bem os fundamentos <3