Acredito que muitos programadores ou aspirantes a programadores gostariam de saber a resposta para a seguinte pergunta. Quais são as qualidades fundamentais para um bom programador?
Obviamente a resposta absoluta para essa pergunta eu não tenho, a resposta que eu tenho é resultado da minha experiência e convivência com outros programadores, possivelmente posso estar esquecendo de alguma outra qualidade importante, e neste post eu desafio o nobre amigo leitor a dar sua humilde opinião sobre uma qualidade que não esteja presente nesta humilde listinha.
vou começar pela qualidade que na minha opinião é a mais essencial de todas…
Conhecer bem ao menos uma linguagem de programação
Acho que é praticamente unanimidade que um bom programador tem que conhecer bem pelo menos UMA linguagem de programação, é melhor ser expert em somente uma linguagem, do que ser um programador mediano em 3 linguagens diferentes, claro que isso vai gerar discussões, mas a intenção é justamente essa 🙂
Dominar o sistema com o qual você trabalha (ou os processos principais do sistema)
Como muitos sabem trabalho como analista de sistemas em uma fábrica de software, quando eu entrei, do nada fui parar em uma equipe que fazia um tal de SPED, eu não sabia nem se isso era de comer, eu já sabia programar, mas não sabia nada do negócio, porém com a ajuda de um analista senior e com um pouco de estudo, consegui adquirir um bom conhecimento no SPED, hoje ao ouvir o relato de um bug, já me vem na cabeça possíveis motivos para ocorrer o erro informado, isso só acontece devido ao conhecimento que hoje eu tenho do sistema, então por esse motivo eu considero muito importante conhecer o sistema com que se trabalha, se você desenvolve ou dá manutenção em softwares de advocacia, você tem que saber um pouco de advocacia, entender um pouco das regras do negócio, caso contrário, a sua evolução como programador pode ficar prejudicada.
Conhecer os ambientes com o qual você desenvolve
A maioria dos programas interage com um sistema operacional, portanto, acredito que conhecer o sistema operacional que roda o seu sistema é um requisito muito importante para um bom programador, por exemplo, saber como o windows gerencia as threads, ou como o banco de dados trata as conexões abertas, etc.
Pensar em algoritmo
Ao contrário do que alguns possam pensar, eu não estou falando de ter conhecimento sobre algoritmos (busca binária, quicksort e outros), eu me refiro ao fato de poder dar uma solução abstraindo a linguagem de programação, sem envolver o sistema, seria algo como dar uma instrução para um programador resolver um problema do sistema sem usar dialeto relacionado a programação ou ao sistema em si, isso facilita a comunicação com outras partes que não tem conhecimentos de programação.
Não depender de frameworks
Hoje em dia existem frameworks pra um monte de coisas, desde mapeamento objeto-relacional à user interface, porém, a pergunta é, você saberia fazer uma determinada tarefa sem utilizar um framework? conseguiria fazer uma CRUD na mão sem mapear as entidades com um ORM da vida? conseguiria abrir uma conexão com o banco de dados sem usar aquele “frameworkzinho” maroto? concordo que frameworks aumentam e muito a produtividade, porém, eles também estimulam a ignorância e a preguiça de aprender, obviamente isso não significa que você não deva conhecer frameworks, significa simplesmente que você não deve depender única e exclusivamente deles.
Ser Proativo
Qualidade extremaaaamente importante para um bom programador, proatividade, antecipar-se aos problemas, visualizar futuras necessidades, se você sabe que determinado código pode lhe causar problemas no futuro no momento em que uma determinada ação for tomada, por que não simplesmente reescrever o código de forma que aquele problema seja evitado? a proatividade é uma qualidade muito valorizada pelas empresas, como diria um amigo meu, “antecipe-se aos erros ao invés de reagir a eles”
Gostar de programar
Essa eu não vou nem entrar em muitos detalhes, acho que o nome do tópico já diz tudo…
Ter espírito empreendedor
Ser um bom programador não significa ser um robô, é muito importante ter um espírito empreendedor, desenvolver como se o produto que você vai entregar fosse seu (caso não seja), como funcionário de uma empresa, o sucesso do produto é mais do que uma mera continuação do seu contracheque, vista a camisa da sua empresa, trabalhe para que o seu projeto seja um sucesso.
Não encarem isso como uma verdade absoluta, isso é apenas uma pequena parte, desenvolvimento é mais do que isso, outras qualidades podem ser conhecimentos em álgebra linear, estrutura de dados, estatística e probabilidade e mais…
Já deu preguiça de escrever e vou parando por aqui… mas e você? acha que ficou faltando alguma coisa? deixe seu comentário e quem sabe eu atualize o post com a sua opinião, ou não…
Qualidades fundamentais para um bom programador,