Que comentário edificante, com certeza não é crítica destrutiva, mas uma excelente afunilamento e a maneira correta de olhar para minha publicação. Muito obrigado pelo baita complemento!
Sobre alguns pontos:
Fundamentos, fundamentos mesmo, talvez você saiba. Tem o detalhamento de fundamentos. Isso quase ninguém sabe tudo.
Sei que existem diferentes níveis de abordagem para os fundamentos, mais baixo nível (detalhado, esmiúçado e/granular) e o mais alto nível, meu objetivo no artigo foi tentar ser o mais imparcial possível quanto ao nível, mas não tem jeito, tópicos que pra mim são importantes se eu pensar com minha cabeça mais backend com certeza irei pecar quando alguém com a cabeça de fronted ler.
Mas, com as breves descrições o objetivo era esclarecer que estes "fundamentos" estão em ambas as vertentes (backend, frontend, middle-end, etc) e níveis diferentes (top, down, middle, etc).
E também você tem razão em dizer que nem tudo o que eu trouxe são fundamentos de programação, neste compilado meu intuito era trazer o que eu achava de mais útil para a pessoa pensar em ter como pontapé inicial, sendo disciplinas fundamentais, habilidades fundamentais e maneiras fundamentais de pensar... mas de fato, nem tudo seria um fundamento de programação. Ex. Prática é um fundamento comportamental, Compreensão de Problemas é um fundamento disciplinar, Objeto é um fundamento mais abstrato, Classes já é mais específico, Sistema Operacional é um fundamento de alto nível, já o terminal é mais baixo nível e mesmo assim ele tem outros fundamentos compondo ele.
Já posso agradecer, até porque ajudará o que eu estou fazendo ser melhor.
Fico muito feliz que eu possa ter colaborado para sua missão, com certeza estou muito curioso para saber sobre o que você costuma compartilhar em suas redes sobre "Farei algo que muitos pedem para aprender a programar corretamente, gratuitamente." e se eu pude ajudar pelo menos com uma partezinha mínima se quer deste processo ficarei ainda mais feliz!
E tenho que dizer que o fundamento é básico, não é algo avançado.
Aqui tenho um contra-ponto a dizer: Existem níveis diferentes de abstrações, logo dependendo do nível de fundamento que estamos falando e o nível de domínio do assunto que desejamos ter... às vezes só precisamos saber trocar o óleo do carro e outras vezes precisaremos sujar nossas mãos no óleo para trocar o escapamento, são níveis diferentes de compreensão e fundamentos diferentes. O interessante aqui é entender que um fundamento é base para outros fundamentos.
Só mais um complemento neste tema fundamentos, estamos alicerçados nos fundamentos de nossos antepassados e por isso é incrível saber a história de como as coisas aconteceram, porque tal autor tomou tal decisão pra isso ou aquilo e com base nisso aprender a tomar boas decisões também.
Fundamentos não são teoria chata.
Concordo demais, como tudo na vida, fundamentos são aprendidos também e eles podem ser aprendidos de maneira divertida, seguindo o mesmo processo de aprendizado que qualquer ferramenta. Mas, este comentário me gerou um ponto interessante: Será que crianças quando estão no processo de aprendizado aprendem quais fundamentos para o início de sua vida? Por exemplo, aprender, falar, andar, enfim.... isso é muito interessante!
treina o erro.
Isso é matador. Não teria melhor benefício para o fundamento do que este, de não errar, de não propagar o erro e de não deixar ser enganado pelo errado.
Eu não gosto do termo "lógica de programaçao", mesmo amplamente usado.
Eu procurei em inglês (Programming Logic) e encontrei esta página How to Improve Your Programming Logic. Mesmo assim, neste ponto concordo com você de que o termo Lógica de Programação é ambíguo, não consistente e não faz sentido. Pensando nisto, inclui ele nessa lista de fundamentos como inter fundamento necessário para ter a crítica de sequenciar os passos de maneira lógica, tomando decisões a cada tarefa e entendo se vale ou não esmiúçar aquela tarefa, com o objetivo de resolver determinado problema. Em miúdos, Lógica de Programação (que não consigo pensar numa identificação melhor e mais genérica) é o pensamento de analítico de solução do problema, enquanto Algoritmo é a implementação desta resolução.
Não sei se eu classificaria pseudocódigo como fundamentos
Inseri pseudocódigo na lista pensando na maneira mais simples que qualquer pessoa poderia resolver um problema com código sem ao menos ter conhecimento bruto de semântica das linguagens de programação, somente tendo o conhecimento de sua linguagem natural e algumas poucas regras estabelecidas e a partir daí criar algoritmos.
É mais uma forma simplista de pensar como construir algoritmos para resolver problemas, pensando assim, também poderia ter incluído Dividir pra Conquistar e por aí vai, mesmo assim, minha ideia era ser genérico o suficiente para utilizar em todos os aspectos na tecnologia, especificamente para programação.
tem muito material errado.
Sem dúvida alguma, tentei ser o mais imparcial possível e até deixei no início da publicação para pesquisarem e ponderarem sobre estes tópicos e principalmente, quando se aprofundarem neste tópico, procurar materiais de boa qualidade, com base em instuições bem conceituadas, com pessoas bem estabelecidas e com conteúdo comprovadamente correto, pois não adianta só aprender qualquer fundamento, tem que ser os fundamentos corretos e com o conteúdo correto.
Eu iria só no nível mais alto.
Até tentei nivelar, mas, fui pensando nos meus diferentes momentos de estudos, desde inciante até agora - um iniciante com um pouco mais de compreensão disso - e percebi que alguns fundamentos estão presentes em níveis diferentes também, por exemplo o Gerenciamento de Memória, este é um assunto que é possível olhar o nível baixo como um espaço na memória, que a memória poderia estar em qualquer lugar, como cache, armazenamento randomico em registradores, memória persistente ou etc, ou olhar mais alto nível de complexidade mais ainda sim um fundamento, como um GC ou então alocação dinâmica e estática, e por aí vai... este assunto é gigante e tem fundamentos importantes pra todo o lado.
O que fala de objetos...
Concordo, objetos não são fundamentos, são abstrações de fundamentos e é mais um conceito do mundo real do que de fato um fundamento, inclusive irei remover este cabra da lista.
Versionamento é importante
Aqui tenho um contra-ponto: Versionamento é importante como um fundamento, pois existem diversos tipos de códigos, arquivos, estruturas e atualizações, correções ou remoções que precisam ser controlados, rastreados e organizados de certa forma e ter essa compreensão é fundamental para melhorar sua programação e avançar em outros tópicos. Talvez não seja fundamento o processo de versionar por exemplo com o git no github, mas este fundamento vai além do git. Existe o versionamento semântico, versionamento de api, versionamento de código, versionamento de arquivos e pastas e em conjunto a este conceito, também incluo backups e suas estratégias, organização de todos estes conteúdos e seus arquivos correspondentes, disponibilidade dessas informações, etc. Entendo o versionamento como um fundamento abrangente e muito necessário, até mesmo como um dos primeiros fundamentos.
Não tome isso como críticas
@maniero, já te acompanho a muito tempo e sei que todas suas análises críticas ou não são preciosas, trazendo mais qualidade em pontos que jamais nem chegariamos perto de pensar, então mesmo sendo crítica ou não, pra mim este seu complemento é muito valioso! Muito obrigado por isso mister.