Como ser um bom programador

Para qualquer coisa que se queira fazer bem, o caminho nunca é fácil e nem simples. E talvez eu nem seja tão bom programador para poder falar disso...

Imagino que há vários caminhos diferentes que possam ser trilhados para isso. Para simplificar apresenterei apenas três: experiência profissional em equipe, experiência profissional com projetos sofisticados e experiência com linguagens de programação diversas.

A primeira coisa da qual não podemos desprezar são os tipos de conhecimentos e experiências que outros programadores podem trazer para nós. Creio que seja um tanto decepcionante saber que o primeiro caminho tenha relação com "relacionar-se com outras pessoas", especialmente falando da profissão do programador. Achar que programadores são profissionais que auto-suficiente que só precisam conversar com o computador para ganhar dinheiro é fantasia. Especialmente nos dias de hoje. Se relacionar com outros programadores é uma experiência muito enriquecedora, pois significa entrar em contato com outras perspectivas e pode significar ajuda mútua, em que uma perspectiva consegue enxergar um problema que outra perspectiva não consegue. Quando se fala em resolver problemas, a visão do outro pode resolver um problema muito mais rápido que uma pesquisa no Google.

O segundo caminho é trabalhar em projetos sofisticados, ou em uma boa quantidade de projetos com diferentes requerimentos. Isso ajuda a desenvolver o conhecimento dos aspectos mais avançados de uma linguagem, pois se não for desenvolvido esse conhecimento, o programador não conseguirá toda a flexibilidade necessária para lidar com as sofisticações do projeto. Quando se trata de um projeto muito simples, o programador consegue concluir projetos sem se aprofundar na linguagem. Lidar com diferentes projetos enriquece na medida em que cada projeto requer um aprendizado novo e ao longo do tempo, esse aprendizado se soma, formando um repertório que dá muito competência para lidar com questões novas e mais sofisticadas.

E por final, existe uma terceira opção, que é lidar com diverentes linguagens de programação. Assim como variar os projetos trazem perspectivdas diferentes e se somam, o mesmo ocorre quando o programador lida com diferentes ambientes de programação. É o caminho mais difícil, mas também um dos mais recompensadores, pois traz uma bagagem teórica grande que permite ter uma visão mais honesta e menos preconceituosa sobre as diversas tecnologias. É difícil também demora mais para o programador se especializar e portanto, também demora mais para se especializar ou conseguir dar cabo de projetos mais sofisticados, pois o tempo que se gasta para aprender novas linguagens é o tempo que um programador especializado gasta para se aprofundar em uma mesma linguagem e desenvolver um conhecimento mais aprofundado.


Talvez pensemos que um programador seja um sujeito que pode ganhar a vida sabendo lidar bem apenas com o computador. De fato, eu fui um destes. Acabei decidindo ser um "bom programador" pelo terceiro caminho, e isso é muito bom para em diversas situações ter uma boa segurança na hora de conversar sobre diferentes linguagens de programação e me deu um bom conforto ao transitar pelas diferentes tribos tecnologicas. Mas profissionalmente falando, talvez não tenha sido uma boa escolha. Apesar disso, não posso dizer que me arrependo, é apenas um trade-off. O mais importante é não pirar, e prezo muito este conforto e conhecimento que adquiri.

Sobre escolher a primeira e segunda opção da qual não posso falar por não tê-las seguido, isso ficou muito claro para mim quando percebi que não adianta nada saber programar e não saber traduzir essa habilidade em benefícios para outras pessoas. É preciso não ser soberba o suficiente a ponto de achar que se pode ser auto-suficiente apenas com um punhado de esfroço e um computador e que a partir disso, você poderia entrar em qualquer projeto tecnologico. Longe disso. Devo confessar que isso também foi um dos meus pecados.

Ser programador pode ser um ofício solitário. Mas isso só em uma parte do tempo. Em outra parte você precisa se relacionar com outras pessoas com diferentes conhecimentos e habilidades, e isso traz uma bagagem que não pode ser substitída com nenhuma outra experiência. É algo que inclusive, lhe dá mais perspectivas profissionais.

Comentar