11 minutos de leitura

Como se tornar um bom programador?

Por Juliano Faccioni
Conteúdos do artigo

Neste relato, compartilho minhas opiniões sobre o que é (e o que não é) um bom programador, e no que você deve focar para se tornar um programador de sucesso.

Como se tornar um bom programador? Esta é uma pergunta que muitos de nós – desenvolvedores, analistas e estudantes – fazemos rotineiramente.

Percebo esta ânsia em muitos programadores, dos estagiários aos sêniores. O desejo de nos aperfeiçoarmos, de procurarmos por mais conhecimento ou de aumentarmos nossa produtividade é, de certa forma, inerente à programação. Esse sentimento é potencializado pelo surgimento contínuo de novas tecnologias, linguagens de programação e frameworks no mercado, em um fluxo de novidades impossível de ser acompanhado por uma única pessoa.

Já tive esses mesmos questionamentos ao longo da minha trajetória dentro da área de programação. Mas o que eu considerava ser um bom programador mudou muito desde que escrevi a primeira linha de código, há mais de 5 anos.

Neste artigo, quero compartilhar minha visão sobre o que entendo ser um bom programador de fato, e o que você pode fazer para atingir esse nível.

Precisa decorar todos os códigos?

Para começar, quero discutir o que considero que um bom programador não é.

Comecei a programar dentro da área acadêmica, durante meu TCC em Biomedicina, uma área do conhecimento distante da computação. Naquele momento, o foco do meu aprendizado estava voltado para a resolução de um problema prático: analisar um enorme volume de dados que havia gerado em experimentos em laboratório.

No começo, ter um objetivo claro – a escrita do meu TCC – ajudou muito a motivar meu aprendizado em Python. Contudo, quando decidi seguir para a pós-graduação e voltar meu projeto para a análise de dados e programação, surgiram muitas incertezas.

Será que conseguirei ser um programador tão bom quanto quem cursou uma faculdade de Ciências da Computação? Quantos conceitos e conhecimentos me faltariam, em função da minha trajetória pouco ortodoxa no mundo da programação? Afinal de contas, quem faz Ciências da Computação deve saber de tudo, não é mesmo?

Quando começamos a aprender a programar, é muito comum termos o sentimento de que não somos bons o suficiente porque não “sabemos tudo” o que há para saber. Entretanto, ao longo dos anos, fui percebendo que “saber de tudo” não é essencial para nenhum programador. Programadores com décadas de experiência também procuram por respostas no Google, mesmo para dúvidas relativamente simples: “como faço para ler um arquivo de texto em Python?”.

Da mesma forma em que um engenheiro não tem a solução de todas as integrais em sua cabeça, e um escritor não conhece todos os parágrafos de todos os livros, programadores também não vão decorar a forma de fazer cada operação possível em uma linguagem. Saber algo de cor é consequência de experiência e repetição, não um indicativo de capacidade técnica.

Então, o que é um bom programador?

Se saber todos os códigos e conceitos não fará de você um bom programador, o que é preciso fazer? De forma bastante sucinta, a minha resposta é: foque em resolver problemas.

Quero enfatizar: bons programadores resolvem problemas. Seja na empresa onde trabalha, no seu negócio ou na sua vida pessoal: o valor do seu código vem de encontrar um problema a ser solucionado, entendê-lo profundamente e resolvê-lo de forma eficaz.

No livro Coders at Work, o autor Peter Seibel entrevista diversos programadores para entender o processo criativo de cada um. Na conversa com Jamie Zawinski, um dos criadores do Netscape (navegador de internet dos anos 90), há o seguinte trecho (em tradução livre):

Seibel: Qual é a coisa com que você trabalhou [no navegador Netscape] de que você mais se orgulha?

Zawinski: Na verdade, é o simples fato de que nós publicamos [o Netscape]. O negócio todo. […] Não é que eu tenha orgulho do código; apenas de que foi feito. De muitas formas, o código não era muito bom, porque ele foi feito muito rapidamente. Mas ele fez o seu trabalho. Nós publicamos – isso é o que importa. […] Um mês depois, dois milhões de pessoas estavam rodando um programa que eu havia escrito. Foi inacreditável. 

Como Zawinski deixa claro, o que importa no final das contas é atingir o seu objetivo: publicar o código, rodar o programa, gerar os resultados. Um programa de computador é uma sequência de passos e instruções que, quando concluídos, chegarão em alguma tarefa realizada. Se a tarefa for concluída com sucesso, então o fato de alguns loops serem pouco otimizados, variáveis terem nomes ruins e algumas porções do código terem sido copiadas e coladas a partir de outras, é algo secundário.

Com isso, não quero dizer que acho bom ter códigos bagunçados, complexos, sem documentação e não testados. Na realidade, sou uma das pessoas que mais presta atenção na estruturação de código e boas práticas em programação que conheço (possivelmente até demais). Mas existem milhares de projetos no GitHub que, apesar do design perfeitamente estruturado e dos scripts lindamente organizados, jamais resolveram um problema na vida real.

Se eu tiver que escolher entre um código com bugs que resolve meu problema hoje ou a promessa de um código perfeito daqui um ano, adivinhem qual vou escolher?

O que faço para ser um bom programador?

Dito tudo isso, que passos você deve tomar para se tornar um bom programador?

Na minha opinião, não há outro caminho senão praticar, praticar e praticar. E para fazer isso, nada melhor do que ter um objetivo prático em vista – da mesma forma como eu tive no meu TCC. Não há nada de errado em “aprender por aprender”, mas a nossa motivação é potencializada quando temos um objetivo claro à nossa frente.

Não é coincidência que, aqui na Asimov, insistimos tanto em ter projetos práticos dentro de cada uma de nossas trilhas. Todos na empresa passaram por uma evolução semelhante à minha e entendem o potencial que existe em desenvolver projetos práticos. E a melhor parte é que você aprende algo novo enquanto desenvolve uma solução. Atingir o seu objetivo é duplamente gratificante!

Olhe ao seu redor: existe algum problema que você poderia resolver com programação? Talvez a sua empresa tenha processos repetitivos que consomem dias de trabalho no Excel. Ou talvez, sempre no início de cada mês, você precise mandar os mesmos e-mails para as mesmas pessoas, fazer as mesmas transferências bancárias, baixar os mesmos documentos, organizar as finanças na mesma planilha…

Uma vez identificado o seu objetivo, não se preocupe se não souber como fazer algo. Os momentos em que mais evoluí como programador foi quando não fazia ideia de como resolver um problema.

Como compartilho meu código com colegas que não sabem programar? Talvez eu tenha de desenvolver uma interface ou dashboard para isso.

Como faço para customizar um modelo de Machine Learning além dos parâmetros disponíveis? Bom, acho que vou precisar aprender a criar um do zero

Meu código funciona, mas levo horas para executá-lo? Vou ter que estudar sobre otimização e refazer meu código.

Em resumo: para ser um bom programador, resolva problemas. E para se tornar bom em resolver problemas, pratique o máximo possível, com os mais variados problemas

Espero que o meu relato tenha feito sentido para você. Se você está começando sua carreira como programador ou se já programa há anos, deixe seu comentário com seu ponto de vista para que possamos enriquecer a discussão.

Inscreva-se gratuitamente e fique atualizado

Receba toda semana um resumo dos principais conteúdos da Asimov direto no seu e-mail. 100% livre de spam.

Áreas de interesse:
Conteúdos do tutorial