O que fazer para aprender a programar melhor?

Victor Turrisi
4 min readSep 14, 2020

--

Você já se deparou com a situação de começar a estudar uma linguagem nova, aprende suas funcionalidades básicas e depois não saber mais o que estudar ou como prosseguir? Se você nunca viveu isso, com certeza irá viver em algum momento.

Além de muito comum e de causar um sentimento de não saber o que fazer, muitas pessoas desistem de se aprofundar nos estudos, ou acabam achando que já sabem tudo da linguagem. Caso você esteja passando por isso, recomendo ler qualquer um dos inúmeros artigos sobre “Coding Desert of Despair”, ou algo como “Deserto do desespero de codificação”. Nesse post, pretendo focar em quais estratégias eu acho importante e utilizo diariamente, sem o transformar em um texto motivacional sobre não desistir ou como lidar com os sentimentos quando estamos nesse “deserto” (apesar de muito válido, muita gente já trata disso).

1- Leia o código e a documentação de bibliotecas famosas

Isso é de extrema importância. Não importa qual o seu nível como programador, é sempre possível melhorar analisando e refletindo sobre como outras pessoas fazem e organizam seus códigos. Para escolher uma biblioteca, selecione algo que você use diariamente e considere de boa qualidade. Leia a documentação, abra o código fonte no repositório do projeto, analise como ambos se relacionam. Veja os padrões impostos pelo o grupo de desenvolvedores, como o código é organizado e por aí vai. Isso pode ser EXTREMAMENTE intimidador no começo. Caso você escolha projetos com milhares de contribuidores e uma longa trajetória, você muito provavelmente vai se sentir perdido, mas isso é normal. Mesmo sendo muito experiente, leva tempo para começar a entender como um código que você nunca viu antes é organizado.

Algumas bibliotecas que eu considero como referências em Python: Pytorch (caso você nunca tenha mexido, a combinação de código em C++ e Python torna a organização do repositório complexa, mas ainda é uma biblioteca incrível na qualidade de código e organização); numpy; sklearn; bibliotecas padrões do Python; etc.

Não escolha repositórios com poucas estrelas/contribuidores. Um repositório pouco movimentado tem mais chances de ser de uma qualidade inferior a algo utilizado e revisado por muitas pessoas. Isso não quer dizer que só repositórios famoso são bons, mas é uma boa métrica na hora de escolher. Outra coisa, ignore repositórios de papers. Esses repositórios tem uma quantidade extremamente alta de estrelas no github, mas isso não quer dizer que o código é bom. Na realidade, só mostra que a comunidade científica está interessada no trabalho e/ou quer reproduzir os resultados do paper. Sempre prefira bibliotecas.

2- Adquira proficiência em suas ferramentas

Eu utilizo Python e diversas bibliotecas diariamente e, por isso, é fundamental que eu me sinta confortável ao usar as sintaxes e funções fornecidas. Além disso, eu preciso estar constantemente explorando novas funcionalidades. Problemas complexos podem ter diversas soluções, e é comum que várias ferramentas que facilitam a resolução do problema já estejam disponíveis. É importante se desafiar, explorar e descobrir novas funcionalidades da linguagem e das bibliotecas constantemente.

Você conhece as bibliotecas collections, itertools, random, math, os, sys, pprint, json, time, argparse e concurrent? Tenho certeza que alguma dessas vai ser útil para você. *Olhe as outras bibliotecas também e não se esqueça dos recursos da linguagem.

3- Busque soluções melhores

Não é porque você resolveu um problema que essa é a melhor solução. Sempre procure refatorar o código, melhorar o nome de variáveis, refletir sobre as operações que são feitas e procurar bibliotecas que também resolvam o que você resolveu, por exemplo. Um código quase sempre pode ser aperfeiçoado.

4- Não caia na armadilha gastar o seu tempo resolvendo desafios de programação

É algo que é muito recomendado para iniciantes, mas que eu abomino. Resolver problemas de lógica não é a melhor maneira de se aprender a programar. Quer que eu prove? Ok, me responda, qual foi a última vez que você teve que programar algo e usou algum conhecimento que aprendeu exclusivamente em um desafio de programação?

Aprenda na prática. Leia livros, blogs, códigos de outras pessoas e resolva problemas. Resolver desafios de programação pode ser um passatempo (se esse é o seu tipo de diversão), mas, na minha opinião, é uma das piores maneiras de se aprender.

5- Se divirta explorando os recursos

Sei que para muitos programar não é um hobby, mas tente se divertir explorando e aprendendo. Uma coisa que eu sempre faço é estudar sobre algo novo, criar suposições sobre o que eu aprendi e executar trechos de código para confirmar tais suposições. Se elas se concretizam, isso é mais um indicativo que eu aprendi sobre algo.

6- Não fique mudando de linguagem toda hora

Quando eu aprendi a programar, eu explorei diversas linguagens até acabar escolhendo Python. Os tempos eram outros, eu estava na graduação (hoje estou no Doutorado), meu conhecimento era bem menor, e Python não era o monstro que é hoje. Escolha uma ferramenta que você se sente confortável e aprenda o máximo possível sobre ela. De nada adianta você saber fazer um if em 30 linguagens diferentes.

Algumas coisas mais específicas:

  • Aprenda a lidar com operações vetorizadas: elas são muito mais rápidas do que loops. Só uma palavra: numpy.
  • Aprenda alguma biblioteca de gráficos: eu odeio matplotlib (não merece nem um destaque no texto), mas quando eu comecei com Python, há muito tempo atrás, era uma das únicas/mais completas disponíveis. Acabei me acomodando com ela, mas existem opções com sintaxes e APIs melhores, como plotly. Seaborn também é uma boa escolha por facilitar o uso de matplotlib.
  • Aprenda ferramentas de debug/profiling de código: muitas vezes queremos otimizar nossos códigos e não sabemos quais são as partes mais custosas. Por isso, é sempre bom aprender alguma ferramenta para analisar isso. Algumas sugestões: print com time (é simples, mas às vezes resolve), timeit e line_profiler (essa é uma das melhores ferramentas).

*Pretendo ir atualizando esse post com o que vier a minha mente, mas por enquanto é só.

https://static01.nyt.com/images/2014/10/08/multimedia/science-take-snakes/science-take-snakes-superJumbo.jpg

tchau.

--

--