Pra mim a principal dica é a 4: no fundo tudo isso passa pelos fundamentos da computação (que aliás, não mudam há décadas). E que infelizmente, muitos acabam menosprezando, por considerar "um monte de teoria chata e inútil". Vemos até gente com muitos anos de carreira enchendo a boca pra falar que nunca precisou, o que é triste. Ela não sabe o que não sabe, não vê utilidade porque ela nem sabe que aquilo existe, e portanto não percebe como seria benéfico saber.

Os problemas mais comuns (e até muitos dos incomuns) já foram resolvidos, com algoritmos testados e melhorados ao longo do tempo, em situações reais. Se as pessoas estudassem mais esses fundamentos, não gastariam tanto tempo pra resolver tais problemas (e nem chegariam a gambiarras horríveis que se vê por aí).

Mais ainda, muitas vezes a pessoa não consegue aplicar tais algoritmos porque não consegue reconhecer que o problema se encaixa nos casos que o algoritmo resolve, porque faltou outro fundamento: a capacidade de abstração (que vc adquire estudando outra coisa que muita gente considera inútil, uma tal de matemática).

Pra mim, a falta dos fundamentos (seja por desprezo, ou pela má qualidade de muitos cursos) é um dos principais problemas da nossa área.

Vemos até gente com muitos anos de carreira enchendo a boca pra falar que nunca precisou, o que é triste.

Exatamente. Os fundamentos são essenciais para qualquer profissional de programação. Sem eles não conseguimos buscar por mais soluções e as vezes até mesmo entender o problema. Se um profissional não concorda com isso, principalmente com anos de experiencia, de nada vale a experiencia dele, provavelmente esse tipo de profissional gera apenas código sujo. Concordo muito e é bom saber que existem pessoas que sabem do valor dos fundamentos.