Semana passada, Alberto Souza e eu fizemos um Hangout sobre arquitetura de software. E uma pergunta que nos fez pensar bastante foi “o que é um arquiteto de software?”

Não sei se há uma definição oficial por alguém chique, mas para mim, um arquiteto é aquele que:

  • Consegue comparar duas tecnologias/práticas/etc e discutir sobre suas vantagens e desvantagens.
  • Já entregou muito software, e já passou por diferentes situações. Experiência.
  • Não necessariamente sabe cada vírgula do framework que a equipe usa, mas compreende a idéia por trás dele, bem como suas desvantagens e as soluções concorrentes.
  • Apesar de conhecer bastante os conceitos, ele os experimenta no mundo real, por exemplo, por meio de POCs ou projetos menores.
  • Reflete constantemente sobre suas decisões.
  • Participa do processo de desenvolvimento com a equipe. Talvez não programando 100% do tempo, mas revisando e discutindo a implementação atual.
  • Não precisa ser necessariamente o mais experiente da equipe. É um papel dentro dela, e pode rotacionar de acordo com o problema e conhecimento de cada um.

Esqueci algo? Me ajudem a completar a lista com diferentes opiniões!