Não se preocupe em encontrar algum conceito ridículo de "habilidade" tão comumente ouvido em declarações como:
- Todas as linguagens de programação são basicamente as mesmas.
- Depois de escolher um idioma, você pode escolher qualquer outro idioma com rapidez e facilidade.
- As linguagens são apenas ferramentas, há uma magia cerebral abrangente que realmente faz o software.
Essas declarações são todas baseadas em premissas falhas e revelam uma falta de experiência em um espectro mais amplo de linguagens de programação. São declarações muito comuns e strongmente acreditadas por uma grande quantidade de programadores, não vou contestar isso, mas vou contestar a sua precisão.
Isso é provado simplesmente: gaste uma semana (ou realmente qualquer quantidade de tempo maior do que alguns dias) tentando aprender os fundamentos de Haskell , Prolog ou Agda . Logo após você começar a ouvir a antiga música Sesame Street , toque em sua mente "Uma dessas coisas não é como as outras. .. ".
Como se constata, há toda uma gama de linguagens de programação, técnicas e abordagens que são tão estranhas do que 95% de nós já fez ou já fez. Muitos ignoram completamente que qualquer um desses outros conceitos existe, o que é bom e esses conceitos não são necessários para ser um programador empregado e até mesmo efetivo.
Mas o fato permanece: essas técnicas e abordagens existem, elas são boas para muitas coisas diferentes e podem ser muito úteis, mas elas não são exatamente como as que você está acostumado e as pessoas não podem simplesmente pegá-las com uma tarde de brincar.
Além disso, eu diria que a maioria dos casos em que as pessoas afirmam ter ou podem aprender coisas tão complexas como linguagens de programação tão rapidamente como uma semana, elas estão sofrendo de um pouco During Kruger Effect , Wikipédia (grifo meu):
The Dunning–Kruger effect is a cognitive bias in which unskilled individuals suffer from illusory superiority, mistakenly rating their ability much higher than average. This bias is attributed to a metacognitive inability of the unskilled to recognize their mistakes.
Gostaria de encaminhar as pessoas para esta entrevista mais experiente sobre o conceito de aprender a programar por Peter Norvig: Aprenda a programar em dez anos .
Researchers (Bloom (1985), Bryan & Harter (1899), Hayes (1989), Simmon & Chase (1973)) have shown it takes about ten years to develop expertise in any of a wide variety of areas, including chess playing, music composition, telegraph operation, painting, piano playing, swimming, tennis, and research in neuropsychology and topology. The key is deliberative practice: not just doing it again and again, but challenging yourself with a task that is just beyond your current ability, trying it, analyzing your performance while and after doing it, and correcting any mistakes. Then repeat. And repeat again.
Certamente, há um conjunto de princípios abrangentes que tornarão todas as línguas fáceis de aprender!
Talvez, mas eu diria que esse conjunto de princípios é tão grande que quase sempre haverá idiomas fora do seu alcance de uma semana. À medida que você adiciona novos conceitos à lista com a qual está familiarizado e se sente à vontade, essa lista de idiomas fora de seu alcance imediato pode diminuir, mas acho difícil acreditar que isso vá desaparecer. A lista de abordagens de computação conceitual para as coisas é tão ampla que é desconcertante, a partir de idiomas concatenativos para idiomas baseados em vetores para idiomas especializados em AI ou < a metaprogramação ( ou línguas que existem inteiramente para apoiar expressões ).
Após dez anos, você poderá programar em geral. Isso significa que você pode escrever um código decente em algum idioma ou estilo de idiomas. Então, depois de 10 anos, você está pronto para começar a lidar com esses incontáveis conceitos transversais para o resto de sua vida, além de ser Edsger W. Dijkstra , Donald Knuth ou John D. Carmack , você não vai chegar a todos eles.