A palavra autocrítica tem a seguinte definição no dicionário: “Ação e resultado de autocriticar-se; crítica de si próprio ou das próprias ações, com reconhecimento dos próprios erros, defeitos e qualidades”.
A capacidade de fazer uma autoavaliação do nosso comportamento é uma boa prática que permite desenvolver as nossas habilidades. Assim, por meio da autoavaliação, identificamos os pontos nos quais precisamos melhorar.
Alguma vez você já se perguntou se pode se considerar um bom programador de software? Se assim for, você provavelmente também se perguntou o que significa ser um bom programador de software.
Quais são as habilidades de um bom engenheiro de software? Quais são as diferenças entre o mau e o bom desenvolvedor? Isso é apenas uma questão de experiência? Isso está ligado com conhecimento e prática ou está relacionado com algumas habilidades inatas? Como se tornar um bom programador de software? Será preciso ter habilidades específicas para se tornar um bom desenvolvedor?
Como em todas as áreas de atuação do conhecimento humano, um bom desenvolvedor precisa ter algumas habilidades e, neste artigo eu vou dar a minha opinião (baseada em estudos, leituras e na minha própria experiência) sobre cinco qualidades que são necessárias para ser um bom desenvolvedor.
1 – Você precisa querer ser um desenvolvedor e se dedicar com afinco em alcançar esse objetivo
As pessoas mais persistentes acabam indo mais longe do que aquelas que hoje querem uma coisa e amanhã querem outra.
Por minha própria experiência, digo que eu sempre fui atraído para a área de TI, eu não precisava fazer força para ficar entretido horas a fio na frente do meu TK85 com seus 16 KB de memória RAM e teclado chiclete.
Ficava acompanhando todas as novidades ligadas à área da informática e, dessa forma, vi o nascimento das BBS, depois da Internet e a evolução das linguagens de programação, nas quais iniciei pelo Algol. Sim, meu primeiro programa foi na linguagem Algol e depois Fortran, que rodou no computador da Escola Politécnica da USP em 1979.
Depois iniciei com o BASIC e Dbase. Fui um clippeiro atuante usando a linguagem Clipper (ou CA-Clipper), que é um compilador 16 bits da linguagem xBase para o ambiente DOS.
Na época, não havia os recursos que temos hoje, principalmente a Internet e, assim, era bem mais difícil encontrar informação sobre as linguagens e seus recursos. A principal fonte eram os livros, que não eram nada baratos.
Existiam muitas dificuldades e muitas vezes um problema mais complexo requeria muito do desenvolvedor para ser resolvido.
Dessa forma, atuava na área somente quem realmente gostava e queria ser um programador, pois os aventureiros e hobistas logo desistiam diante das dificuldades.
Muitos colegas que iniciaram comigo a jornada naqueles tempos hoje atuam em outra área, porque no fundo eles não queriam ser desenvolvedores ou não estavam dispostos a pagar o preço de ser um desenvolvedor.
Como em todas as áreas de TI, a de programação exige muita dedicação e um trabalho intenso.
Dessa forma, creio que o primeiro requisito para ser um bom desenvolvedor é querer e se dedicar com afinco a esse objetivo.
2 – Você precisa ter uma mente analítica
O que é uma mente analítica?
Em uma definição não rigorosa, podemos dizer que é a mente consciente, ciente de que pensa, observa os dados, se lembra e resolve problemas.
Assim, você tem uma mente analítica, você é capaz de pensar, observar os dados, lembrar-se e baseando-se nessas atividades, resolver problemas.
Essa é uma das habilidades mais importantes e necessárias a um bom desenvolvedor de software.
Isso significa que nem todo mundo pode se tornar um bom desenvolvedor de software, mesmo realmente querendo. Visto que a mente analítica é uma grande extensão de uma capacidade inata, se você não possui essa habilidade, é melhor mudar o campo de interesse.
Exercitar a mente e resolver muitos problemas de algoritmos e lógica pode aumentar o nível básico de capacidade de raciocínio analítico. No entanto, cada pessoa tem suas limitações a partir das quais não haverá mais progresso.
Dessa forma, se você verifica que costuma ter muita dificuldade em analisar problemas e resolvê-los baseando-se na observação e dados coletados, esteja certo de que isso não é apenas uma falta de prática ou mesmo de exercício, e seja sincero consigo mesmo, visto que admitir isso não será o fim do mundo, mas apenas que suas habilidades serão melhor aproveitadas em outra área de conhecimento.
3 – Você precisa ter uma percepção do futuro
Ter uma percepção do futuro não significa adivinhar o que vai acontecer, mas, com base no presente, prever as consequências que a sua intervenção no presente terá no futuro.
A criação de um produto de software é como jogar xadrez – para ganhar, você precisa prever alguns movimentos à frente.
Você não deve apenas olhar para o presente, mas também para o futuro durante a programação.
Para ser um bom desenvolvedor de software, você não pode apenas estar focado em um pequeno trecho de software que você está implementando.
Você não precisa apenas saber como implementar algo, mas também por que esta fazendo isso e quais os desdobramentos que isso poderá ter.
Você precisa ver o software como um todo, e não apenas como a pequena parte na qual você está trabalhando atualmente.
Você precisa entender o impacto que o seu pequeno pedaço de software vai ter no conjunto global do sistema do qual ele faz parte.
4 – Você deve ter uma percepção orientada ao negócio no desenvolvimento de software
Um bom desenvolvedor de software não é apenas aquele que possui grandes recursos técnicos. Você pode ser um bom programador e seu código pode ser de uma ótima qualidade, mas, ainda assim, você não vai conseguir entender e satisfazer as necessidades dos seus clientes se não souber ouvir, entender e traduzir o que eles desejam.
Tenha em mente uma coisa: o produto de software tem que atender a uma necessidade, tem que ter uma razão para existir, e essa razão não é aquele código legal que você descobriu e que está doido para aplicar no projeto. Não, o motivo para o software existir é atender somente àquilo que o cliente pediu. Se ele não pediu uma funcionalidade, você não deve implementá-la apenas por achar que vai ficar legal assim.
Assim, se você estiver voltado apenas para o software, para o código, e não também para o cliente, você pode potencialmente causar uma série de problemas, como mal-entendidos que se traduzem em funcionalidades desnecessárias, a criação de um software com baixa usabilidade, criar definições que vão precisar de alterações de última hora nas funcionalidades etc.
Então, o que significa ser um desenvolvedor de software orientado ao negócio?
Existem muitos fatores que influenciam essa característica de um desenvolvedor, dentre os quais cito os que julgo mais relevantes:
- Compreender o software a partir de uma perspectiva de negócios (visão dos clientes);
- Saber avaliar as necessidades do cliente (e somente do cliente);
- Ter a capacidade de converter os problemas de negócio em soluções técnicas (para atender o cliente);
- Ter a capacidade de cooperar e entender as pessoas a partir de um material não técnico.
Como um bom desenvolvedor, você não pode se fechar no seu mundo de código e achar que por que conhece e domina técnicas de programação é capaz de resolver tudo sozinho.
Você tem que saber ouvir e se fazer entender usando uma linguagem que o cliente entende, de forma a poder orientá-lo e ajudá-lo a descobrir suas reais necessidades, mostrando a ele a viabilidade técnica do projeto de software.
5 – Você deve ter a capacidade de trabalhar em equipe
Já se foram os tempos nos quais um bom desenvolvedor de software era aquela pessoa que ficava sentado o dia inteiro na frente do computador trabalhando apenas com o código.
Para que um projeto de software seja bem sucedido, a comunicação dentro da equipe é crucial.
A troca de pensamentos, ideias, conhecimento e experiência pode aumentar a eficiência e a qualidade do projeto de software.
Um desenvolvedor que não deseja ou que é incapaz de se comunicar com outros membros da equipe não vai conseguir se encaixar na equipe e no processo de desenvolvimento de software.
Estou ciente de que há muitos desenvolvedores muito introvertidos que estão fazendo realmente um grande trabalho e produzem código de alta qualidade. No entanto, as novas técnicas adotadas nas empresas de TI exigem mais do que apenas a codificação; exigem saber se expressar numa linguagem inteligível expondo os problemas, as dúvidas e as sugestões para o bom andamento do projeto.
Assim, a comunicação dentro da equipe é uma das principais chaves para o sucesso do trabalho do desenvolvedor.
Você pode acrescentar outras habilidades a essa pequena lista, mas creio que estas sejam realmente as cinco qualidades essenciais de um bom desenvolvedor.