Como aprender programação: conceitos são importantes

Como aprender programação: conceitos são importantes

O melhor caminho para ser um desenvolvedor é começar praticando com uma linguagem de programação, uma linguagem de baixo de nível. Isso te permite aprender a linguagem e conceitos de programação em paralelo de forma mais profunda.

Aprender uma linguagem de alto nível no começo, facilita o processo inicial, mas faz você criar dívidas de conhecimento que com certeza voltarão para te assombrar. Começar apenas com seus conceitos de forma teórica vai ser exaustivo e impedir que você absorva o máximo do conteúdo.

Linguagens de tipagem forte e compiladas como C ou Rust e não de baixo nível mas Java, são as melhores para aprender já que com elas é possível aprender diversos conceitos básicos que na teoria muitas vezes parecem extremamente complexos e maçantes mas com o conhecimento adquirido deixa de ser um "funcionou! Nunca mais vamos mexer nisso" para algo que você possa explicar oque está fazendo e modificar fácilmente.

Existem ótimos motivos para começar os estudos aprendendo uma linguagem de programação de baixo nível de tipagem forte e compilada junto com os conceitos de programação, mas para isso precisamos entender primeiro que o desenvolvimento de software é a arte de traduzir a solução de um problema em código, seja ele qual for e para isso é uma arte que exige muita criatividade. Mas essa criatividade vem de conhecimento, que pode ser adquirido por todos nossos sentidos, algo que você viu, ouviu, tocou, cheirou ou provou. Tudo é um conhecimento adquirido e pode ser gatilho para uma ideia criativa, mas, para ter isso é necessário conhecimento. Como se cria algo novo se você não conhece oque já existe? O novo não é só a transformação do existente em algo diferente?

Para entender isso vamos supor que você esteja usando uma biblioteca e ela tenha uma função para fazer uma busca em um banco de dados, então você desenvolve a partir disso, coloca em produção e percebe que seus usuários estão reclamando de uma lentidão extrema para receber esses dados na tela. Você abre o código e percebe que a biblioteca está usando uma pesquisa linear ao invés de uma pesquisa binária, que nesse caso seria muito mais eficiente.

Esses são os primeiros algoritmos base que qualquer pessoa que esteja estudando programação aprende.

Com esse conhecimento você pode modificar a biblioteca localmente para usar uma pesquisa binária para ter uma eficiência melhor e talvez até subir uma solicitação no github da biblioteca com essa "correção", obviamente as vezes a biblioteca está usando uma função menos eficiente por algum motivo, não necessariamente o seu caso é o da maioria, até porque na programação tudo é uma troca, as vezes você precisa gastar mais armazenamento para economizar na memória ram, as vezes você precisa gastar mais tempo para economizar armazenamento, etc.

Obviamente esse é um exemplo simples, mas ao conhecer oque tem por debaixo do capô, aumenta sua capacidade criativa, e isso é longe do suficiente, não necessariamente precisamos saber todo funcionamento até chegar a impulsos elétricos, até porque é humanamente impossível atualmente. Mas você precisa saber que os zeros e uns de um computador na verdade são uma abstração para impulsos elétricos que tem apenas dois estados: ligado ou desligado, você também precisa saber que o sistema binário que tem a base dois, que na teoria tem o mesmo funcionamento da base 10(decimal) que usamos, mas poderia ser qualquer outra base e no final o sistema funciona da mesma forma. E você sabe disso aprendendo esses conceitos.

Aprender uma linguagem de baixo nível junto com conceitos de programação, também te da embasamento para escolher linguagens adequadas, ser leal a uma linguagem de programação é muitas vezes tolice, é o mesmo que levantar uma bandeira de um candidato sem nem mesmo entender de política e sem conhecer a proposta dos mesmos, como muitas pessoas fazem, não passa de uma escolha idiota sem embasamento. Isso não te impede de ter uma linguagem favorita, mas se você tiver pelo menos dois neurônios vai saber que ela não é a melhor escolha para tudo. Linguagens tem domínios específicos que a tornam melhores que outras em certas situações. Pense que a programação é como alquimia tudo precisa de uma troca equivalente e as trocas que os criadores da linguagem fizeram no seu desenvolvimento fazem elas terem características únicas que a fazem melhor em certo domínio.

Dito isso é importante ressaltar que o desenvolvimento de software é muito mais que só codificar, é em essência sua capacidade de transformar uma ideia criativa em código e essa ideia criativa advém também do conhecimento técnico. Principalmente hoje em dia ao criar código usamos muita coisa pronta, seja um framework, uma biblioteca, uma plataforma, etc. Isso é de longe errado, não faz sentido criar algo do zero se alguém já criou, mas faz sentido ter uma ideia de como isso foi criado para criar possibilidades e alternativas, caso algo saia do seu controle.

Além disso, é improvável que uma carreira nessa área seja somente com linguagens que você conhece ou gosta. Por isso é importante ter os conceitos claros em sua mente, isso fará o aprendizado de outras linguagens serem mais fáceis.