Pra mim foi aprender estrutura de dados em linguagens mais baixo nível, tipo C, aprender como funciona a memoria RAM, como os dados são salvos e como são identificados, o que são ponteiros, quais os tipos de estruturas de dados... Enfim, isso meio que esclareceu muita coisa na minha mente, e aprender POO em Java e dominar os canceitos mudou tudo também. Foi depois dessa "aventura" que eu tive, guiada pela curiosidade de aprender os fundamentos e explorar linguagens de mais baixo nível, eu tive uma visão bem mais ampla sobre programação. Muitos iniciantes erram nisso, a maioria só fica no superficial, pegam uma linguagem de alto nível, um framework, faz o básico do básico a acham que aquilo é tudo, mas não se aprofundam em lingugens mais "old schools" para aprender de fato os conceitos, e muitos até criam uma barreira e tem medo de linguagens como Java, C, C++, etc... Tem muita gente que já está bastante tempo codando e não sabe os fundamentos de verdade porque não se aventurou, e se limitaram a ficar só no alto nível ou no mais fácil. E nessa questão, eu acho que a faculdade ajuda de mais (dependendo da qualidade de ensino), antes dela te ensinar algum framework, ela te ensina a lógica, depois te ensina uma linguagem baixo nível, tipo C, te ensinam algoritmos, estrutura de dados e vários outros conceitos mais "raizes", só depois que você vai aprender algo de alto nível. Isso é muito bom porque você aprende o que está por traz daquilo que está fazendo, quando você cria um objeto no javascript você sabe que aquilo é uma hashmap, você sabe o que é uma list no python e uma list no Java, ao estudar os conceitos de POO em Java, você aprende conceitos que você não aprenderia se você só se fechasse no mundinho do javascript. Eu acho que todo iniciante deveria ter essa visão, e não apenas escolher a linguagem hype do mercado para conseguir emprego rápido, mas focar em aprender os fundamentos e ter uma visão mais generalista e aberta (Não estou dizendo que não deva focar uma linguagem), mas que seja mais aberto e que não foque apenas em linguagens, mas sim nos fundamentos. Porque tendo os fundamentos, você aprende qualquer linguagem com muita facilidade, na minha visão, o que te faz um bom programador não é a linguagem que você sabe, mas sim o quanto você sabe os fundamentos, o cara que tem os fundamentos na mente. Se um dia alguma linguagem hype cair em desuso, o cara que só focou em aprender a linguagem direto vai estar ferrado, ele vai ter que começar do zero de novo. Já o cara que tem uma base sólida nos fundamentos, ele já pega a documentação de outra, e em semanas já consegue ser produtivo nela. No canal do Fabio Akita, tem uns videos dele que ele fala sobre isso para quem está iniciando, que é sensacional.
1