Características de um bom desenvolvedor

Artigo que peguei do IMasters que achei bastante interessante e quis postar neste blog para que eu sempre leia e relembre dos princípios que tornam um bom desenvolvedor, e quem sabe, eu me torne um bom desenvolvedor algum dia. ^^

Muita gente da área de programação às vezes se pergunta: Como podemos reconhecer um bom programador? Eu costumo dizer que não tem uma variável booleana para responder essa questão, mas consigo enxergar alguns atributos importantes e recorrentes em bom desenvolvedores.

É claro que é um assunto muito mais filosófico do que técnico, mas vale a pena abordarmos aqui. Sendo assim, segue uma lista com importantes características de um bom desenvolvedor. Confira!

Planejar antes de codificar

Um grande desenvolvedor reserva tempo para planejar uma abordagem de codificação antes de projetar ou codificar o sistema. Um grande desenvolvedor também sabe que o tempo necessário para fazê-lo poupará ainda mais tempo adiante, porque dessa forma ajuda a evitar possíveis refatoramentos não planejados. Esse planejamento vai da codificação de um método até um grande projeto.

Sempre sabe o porquê

Um grande desenvolvedor sempre sabe exatamente por que escreveu uma determinada linha de código, e por que escreveu daquele jeito. Ele escreve o código porque este é a melhor escolha para uma situação específica e não só para seguir um design pattern ou padrão irrelevante. Um grande desenvolvedor codifica de forma consciente.

Adapta o código a cada situação

Qualquer desenvolvedor pode codificar. Um bom programador escreve o código sólido. Um programador muito bom escreve códigos elegantes. Um grande desenvolvedor escreve o código que é tanto sólido (compacto, bem construído) quanto elegante (preciso, simples, polido). O mais importante: um grande desenvolvedor pode dizer quando não vale a pena o esforço para escrever um código elegante.

Sabe quebrar as regras

Um grande desenvolvedor não só conhece a implementação canônica (design patterns), mas entende o que é a implementação canônica. Um grande desenvolvedor pode dizer quando uma implementação canônica não é a melhor resposta para um problema particular.

Entende quando não se deve mudar o código

Um grande desenvolvedor sabe que refatorar um código às vezes é pior do que consertá-lo. Corrigir um bug pode causar instabilidade em outras partes do produto, por exemplo.

Um código macarrônico cuja função não é bem compreendida não deve ser reescrito até que haja tempo suficiente para garantir o entendimento real e qual impacto ele irá trazer para aplicação como um todo. Um grande desenvolvedor entende as vantagens envolvidas entre mudar o código versus deixá-lo como está.

Depura de forma analítica

Um grande desenvolvedor sabe que a depuração é uma ciência, e não uma arte. Ele deve formular uma teoria sobre a causa do problema, determinar um método para provar a teoria errada, realizar a experiência e observar o resultado. Um grande desenvolvedor registra essas informações e usa esses dados para nortear os trabalhos futuros.

Conhece a linguagem e plataforma intimamente

Um grande desenvolvedor conhece a linguagem de programação (e plataforma) que usa por dentro e por fora. Ele sabe por que cada API foi incluída na língua (plataforma) e por que outras APIs ficaram de fora.

Ele não concorda com determinados aspectos da linguagem (plataforma), mas entende o porquê desses aspectos e trabalha da maneira que eles foram projetados. Um grande desenvolvedor sabe o que a linguagem (plataforma) pode fazer, o que não pode, e como conseguir o mesmo efeito através de outros meios.

Conhece a fundo as ferramentas

Um grande desenvolvedor sabe quais ferramentas estão disponíveis e como usar cada uma delas. Ele também sabe que nem todas as ferramentas são apropriadas para qualquer tarefa em particular.

Um grande desenvolvedor sabe como tirar o máximo de aproveitamento de uma ferramenta para conseguir resultados muitas vezes inimagináveis.

Melhora as ferramentas

Um grande desenvolvedor sabe que suas ferramentas podem ser sempre melhoradas. Ele consegue modular e fatorar características de um problema de negócio, para ser reutilizado em vários pontos do mesmo sistema (ou de outros).

Um grande desenvolvedor procura constantemente oportunidades para aumentar a sua produtividade.

Sabe quando pedir ajuda

Um grande desenvolvedor tem o prazer de um desafio. Ele gosta de bater contra uma parede de tijolo e lentamente ir quebrando-a. Algumas paredes são mais espessas do que outras e às vezes a parede tem um buraco já quebrado, mas ele não conseguiu enxergá-lo.

Um grande desenvolvedor percebe quando é a hora de pedir ajuda e assim o faz. Ele sabe a quem pedir ajuda. Um grande desenvolvedor sabe que não há nenhuma vergonha em assumir o que não sabe.

Sempre tem um projeto paralelo

Um grande desenvolvedor nunca está completamente satisfeito com o projeto atual. Ele está sempre trabalhando também em um projeto paralelo (provavelmente muitos).

O objetivo é sempre destinado a investigar uma ideia, entender um recurso de linguagem ou biblioteca, automatizar um processo ou solucionar um problema já resolvido de uma forma mais eficiente/inteligente.

Documentação necessária e constante

Um grande desenvolvedor sabe o que documentar. Ele se esforça para manter uma auto-documentação de código, mas sabe que uma certa quantidade de documentação manual é sempre necessária.

Um grande desenvolvedor sabe que a documentação precisa satisfazer apenas dois objetivos: educar o público atual e preservar o conhecimento suficiente sobre o assunto para que o público atual possa expandir a documentação necessária para qualquer audiência futura.

Segue os padrões de codificação

Um grande desenvolvedor internaliza e usa continuamente um conjunto de padrões de codificação. Ele pode não ser capaz decorar todas as regras, mas quando questionado sobre um ponto particular a resposta correta é imediata.

O bom profissional escreve o código dentro das normas sem o auxílio de ferramentas de verificação, mas sempre as usa para certificar seu código.

Utiliza (e sabe usar) o controle de versão

Ele sabe que o controle de versão é tão importante para projetos pessoais como para projetos empresariais. Sempre versiona e guarda tudo.

Faz muitos checkins

Um grande desenvolvedor sabe que o controle de versão é mais útil quando o código modificado é guardado constantemente, mesmo quando existe somente uma única mudança lógica. Ele se esforça para verificar cada mudança de forma independente de cada alteração.

Testa seu próprio código

O bom profissional fica constrangido quando alguém encontra um erro no seu código. Ele cria programas de teste unitário para validar cada alteração/adição de código. Não há objetivo de ser um grande testador, mas há esforço para ser considerado um bom testador.

Tem paixão pelo seu cliente

Um grande desenvolvedor entende o que o cliente precisa fazer e como o cliente quer usar o produto. Ele vai além das necessidades do cliente para ver como o produto pode revolucionar as tarefas solicitadas.

Ele promove o ponto de vista do cliente durante todo o ciclo do produto, desde a primeira visão emergente através da especificação e implementação de recursos, triagem de bugs para lançamento de produtos e manutenção. O bom profissional ajuda para que o resto da equipe de produto entenda a demanda do cliente.

Sabe avaliar o código

Entende o caso de uso para o código que está escrevendo. Ele usa isso como base para qual código deve ser escrito e qual não deve ser.

Também utiliza esse fator como uma base para decidir quando escrever código e ao escrever código, o que deverá ser escrito primeiro. Um grande desenvolvedor usa isso para projetar para o futuro com a necessidade de que algo seja feito em tempo hábil.

É humilde

Um grande desenvolvedor traz seu parecer fundamentando a concepção e codificação, mas ouve atentamente quando as alternativas são oferecidas. Ele pesquisa e analisa os detalhes dessas outras opções.

Aprecia sugestões para melhorar o seu código ou design. Também sabe que vai acabar codificando bugs e vai gostar de entender os erros que são levados ao seu conhecimento. O bom profissional segue um processo porque o processo o protege de si mesmos.

Consegue tempo para treinamento

Ele sabe que a única maneira de continuar a ser um grande desenvolvedor é nunca parar de aprender. Não se limita a aprender apenas assuntos relacionados com programação, mas também pesquisa sobre testes, gerenciamento de programas de marketing e tudo o que é relacionado ao processo de criação de software.

Conclusão

É isso pessoal! Eis as características que considero as mais importantes ao desenvolvedores. Se você ainda precisa melhorar em alguns desses tópicos ou até mesmo aprender mais sobre alguma função descrita aqui, não perca tempo e desenvolva seus conhecimentos. No final das contas, quem ganha é você mesmo.

Espero que tenham gostado dessa série adaptada do artigo Hallmarks of a Great Developer.

Até a próxima!

2 comentários

  1. Amigo, boa tarde
    queria saber por onde posso começar a estudar programação, Java? PHP? C++, o que é mais conveniente? e se puder me apresentar algum curso que tenha em mente, um muito obrigado e parabéns pelo site

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s