O caminho dos estudos sobre programação e suas etapas

Hoje só por curiosidade nas minhas pesquisas pela internet eu me deparei com um renomado cientista da computação chamdo Donald Knuth. Apesar de já conhece-lo, ao rever este nome eu fui buscar por suas obras, pelo menos a mais conhecida. Apenas para dar uma olhada rápida. Ao folhear sobre seus livros eu me deparo com coisas como.
Isso me fez refletir sobre a mesma sensação que tive ao entrar em contato com suas obras a anos atrás. O mesmo pensamento me veio a tona:
Este material é inacessível a mim! rsrsr Ao olhar isso, eu não sei se me sinto um merda, por realmente não ser capaz de entender nada ou se realmente é uma tamanha complexidade tão grande que realmente eu não deveria entender.
Dito isso, eu comecei a pensar a respeito dos processos e etapas do estudo sobre programação e computação no geral. Pois por mais que eu estude e avance no meu conhecimento, mesmo assim, sempre haverá obras na qual você não vai enteder nada e se sentir um merda por isso.
E pelo menos a obra de The Art of Computer Programming de Donald Knuth e entre outras obras por aí, ao me deparar com elas, eu acabo passando por isse sentimento de impotência intelectual. Dito isso nesta breve introdução, vamos para o foco deste artigo.
As etapas do aprendizado de um programador
Se você é um aspirante a adentrar no mundo da programação, seja lá qual for o motivo. Eu imagino que seus primeiros passos em busca deste conhecimento seja uma breve pesquisa no Youtube por canais que ensinam sobre o assunto para dar o seu ponta-pé inicial.
Óbviamente este é um excelente ponto de partida, porém você pode se deparar com algum tipo de conhecimento base que possa ser difícil para você entender e isso pode lhe causar frustração sobre o seu aprendizado. Com isso, eu quero te dizer que toda a sua carreira será uma eterna jornada de aprendizado. Muitas das vezes você vai se deparar com um tipo de cochecimento onde você não será capaz de entender. Mas esta incapacidade não é pelo fato de você ser incompetente, burro ou qualquer besteira deste tipo, mas sim por questões de você ainda não ter a maturidade adequada para absorver este tipo de conhecimento.
Existe um livro chamado Clean Code que é amplamente conhecido no mundo da programação. É inegável que todo programador vai sempre afirmar que sua leitura é obrigatória. Porém é obrigatória para que tipo de programador? um iniciante com poucos meses de estudo, ou um programador com anos e anos de carreira, com diversos projetos de bagagem?
É esta a grande questão que você programador, deve sempre levar em conta durante o seu caminho de estudos na ára da programação. Entenda que vão ter coisas que você vai fazer, coisas que você vai ler e que por hora não será de um entendimento tão claro. Mas a medida que evolui e que adquire mais bagagem ao longo dos seus projetos, várias coisas começam a clarear mais.
Então como uma das clarezas que você deve ter é a capacidade de perceber a hora certa sobre o aprendizado de um certo tipo de conhecimento.
Fase 2: Após alguns anos de experiência…
Como programador, você vai passar por muito tempo escrevendo códigos horríveis! Coisas tenebrosas e digna de vergonha alheia. Mas não se incomode com isso! Desde que você seja capaz de se autoperceber sobre sua evolução, tudo isso faz parte do processo.
Como programador, uma das principais características que você precisa ter, é a busca constante por autoaprimoramento. Se você não tem isso, provavelmente você tenderá a ser um programador raso e travado no tempo. Eu sei que cada um tem a sua velocidade de aprimoramento durante a sua jornada. Eu acredito que não seja válido o comparativo desmerecido a si mesmo ao ver um outro programador com metade da sua idade e o triplo do conhecimento que você tem. Eu acredito que isso não desmerece você, afinal, é cada um no seu tempo.
Porém, você deve sempre se manter em constante busca por aprendizado, mesmo que sua busca seja a passos de tartaruga, o importante é avançar e não se paralizar no tempo.
E se você sempre busca se aprimorar e avançar em seus conhecimento, com o tempo perceberá que certos assuntos vão ser mais fáceis de compreender, perceberá que aquele código que escreveu a x anos atrás realmente era horroroso, e com mais anos ainda, perceberá que o tal código aprimorado ainda não era tão bom assim.
Isso é ser um programador, é estar sempre buscando aprender e com o passar dos anos perceber o quanto evoluiu.
Se o foco é estudar, estude os fundamentos! E pare de se iludir com frameworks
Eu sempre tive muito preconceito com frameworks, mas não por se achar algum iluminado que percebeu que estudar isso no começo seja ruim ou algo do tipo. A minha questão é que eu sempre vi mais graça em quebrar a cabeça pra fazer as coisas da forma mais primitiva.
Mas esta parte de frameworks é um assunto muito interessante de se falar para quem quer estudar programação. Antes de tudo entenda que os frameworks partem de um principio na qual ele subentende que o programador não é um iniciante.
Vamos a este execício mental: Imagine que sua função seja montar uma bicicleta, mas para isso existe uma máquina que com três operações nela você consegue montar a bicicleta. Montar uma bicicleta usando esta máquina não faz de você um profundo profissional de montagens de bicicletas. Pois se a máquina quebrar, o seu conhecimento raso quebra junto. Mas se você entender cada peça que compõe uma bicicleta separadamente e ser capaz de monta-la sem o uso de uma máquina, então podemos dizer que seu nível de entendimento seja mais especializado.
Então baseado neste exemplo. Se seu objetivo é dominar o conhecimento e enteder o funcionamento, você não deveria usar uma máquina pronta e sim tentar resolver o problema “na mão”.
Por isso o uso de frameworks não é muito adequado durante o aprendizado de programação. Primeiro domine bem os fundamentos, crie diversos scripts que resolvam alguma coisa em específico e treina bastante criando projetos pequenos. Todo este treinamento vai aos poucos te dando a base necessária para que quando você for usar algum framework, sua experiência vai facilitar muito o seu entendimento.
O uso de frameworks é bem mais adequado em ambientes onde você já é um programador experiente e que o projeto em questão a ser desenvolvido tem prazo de entrega e envolve dinheiro. Dentro deste contexto, se você domina algum framework, é estreitamente importante o seu uso para uma velocidade na construção do projeto. Entenda que nesta fase, não vale mais a pena construir algo “na mão” só por causa que você sabe fazer. O foco não é mais mostrar o que sabe e sim entregar o projeto da forma mais rápida possível.