O que faz um bom engenheiro de software? Essa é uma pergunta que a Universidade de Washington tentou responder junto com a Microsoft. Eles entrevistaram 59 desenvolvedores experientes de 13 divisões diferentes da gigante, e chegaram a um total de 53 atributos que um engenheiro de software deve ter.

Lá vão eles:

  • Tenta melhorar o tempo todo.
  • É apaixonado pela área.
  • Cabeça aberta.
  • Avalia o resultado das suas ações.
  • Sistemático.
  • Produtivo.
  • Perseverante.
  • Trabalho duro.
  • Curioso.
  • Aceita riscos.
  • Adaptável.
  • Auto organizado.
  • Toma ações de melhoria quando preciso.
  • Alinhado com o objetivo da empresa.
  • Executa ações.
  • Tem orgulho da equipe e do produto que trabalha.
  • Consegue transformar ideias em realidade.
  • Focado.
  • Conhece as pessoas e a organização.
  • Analisa uma situação nas suas diferentes perspectivas.
  • Atualiza seus modelos mentais.
  • Lida bem com complexidade.
  • Conhece o domínio que trabalha.
  • Conhece o negócio e os usuários.
  • Conhece as ferramentas de trabalho.
  • Conhece processos de engenharia de software.
  • Cria modelos mentais para resolver problemas.
  • Sempre coloca contexto quando fala com outros engenheiros.
  • Compartilha seu sucesso com a equipe.
  • Cria um ambiente seguro para trabalhar.
  • Honesto.
  • Consegue integrar diferentes contextos.
  • Trabalha os outros com respeitos.
  • Busca por contexto quando não entende a situação.
  • Não torna uma briga pessoal.
  • Faz mentoring.
  • Traz desafios à equipe.
  • É um desenvolvedor exemplar.
  • Gerencia expectativas.
  • Tem uma boa reputação.
  • É firme em relação à pressão e prazos.
  • Troca favores com a equipe.
  • É uma pessoa legal.
  • Pede ajuda.
  • Cria soluções simples e elegantes.
  • É criativo.
  • Antecipa necessidades.
  • Faz tradeoffs.
  • Atento à detalhes.
  • Conhece bem o código.
  • Cria software fácil de ser evoluído.
  • Pensa não só no curto prazo, mas também no longo prazo.
  • Constrói software com cuidado, por exemplo, usando testes automatizados.

O artigo, claro, entra nos detalhes de cada um desses atributos.

Quais os impactos que essa lista traz para nós? E você, tem todos eles?

Li, Paul; Ko, Andrew; Zhu, Jiamin. What Makes a Good Software Engineer? 37th International Conference on Software Engineering, 2015.