"Arquiteto de Software" é um dos cargos mais desejados por diversos profissionais da área de TI. Hoje em dia é cada vez mais comum vivênciar situações onde o próprio time define a arquitetura do projeto, frameworks, tecnologias, entre outros. Dado o cenário atual, onde o papel do Arquiteto de software se enquadraria? Ele é o responsável por escolher as tecnologias e estruturas de todos os projetos de uma empresa? O arquiteto deve ser um programador?
Foi com uma indagação desse tipo que se iniciou uma discussão sobre o que o arquiteto faz hoje em dia. Guilherme Silveira, diretor técnico da Caelum e criador do Restfulie disse:
Históricamente, o arquiteto começou sendo aquele que definia quantas máquinas, quais as tecnologias, etc, mas não colocava a mão no código – ou nos diagramas de sequência, na época. A desvantagem dessa abordagem é a pessoa se distanciar cada vez mais dos problemas e das soluções que cada estilo arquitetural e ferramenta implicam no dia a dia da equipe, e começar a considerar somente aspectos facilmente visiveis de suas escolhas.
[...]
Ainda historicamente, o mercado viu a necessidade de ter alguém conectando os projetos de uma empresa, afinal uma pessoa era responsável pela arquitetura de seu projeto, mas ninguém alinhava arquiteturalmente a empresa. Daí surgiu o “enterprise architect”, alguém com uma preocupação maior.
Guilherme complementa defendendo a idéia sobre a teoria do Ditador Benevolente, que é aquela pessoa que tem o voto final e que muitos confudem com o "Arquiteto 2.0".
Com o XStream aprendi sobre o ditador benevolente, que é uma pessoa (ou duas) que tem a decisão final. A arquitetura, o design, o código, o método podem evoluir pelo desejo da própria equipe, mas por fim possuem uma pessoa guia; alguém que, com mais experiência, saiba conectar melhor os planos da empresa, do produto, da equipe, da arquitetura e guiar todos para o mínimo de conflitos técnicos. Esse é o líder da equipe (não arquiteto 2.0).
[...]
Resumindo, na minha visão, os arquitetos somos nós, mas sempre em contato com as outras equipes dentro da empresa. E o líder (ou 2 líderes) é fundamental para manter o caminho em momentos de discórdia.
David Lojudice tem um ponto de vista diferente, onde o papel do arquiteto é manter a coêrencia entre as partes envolvidas em um projeto. Ele defende que a decisão de incluir ou não tal papel depende do tamanho do time e do projeto.
O seu pet project [projeto de fim de semana com 1 pessoa] precisa manter coerência entre as pessoas? Só tem uma pessoa pensando nas classes, suas responsabilidades, acoplamento e comunicação. O arquiteto é o desenvolvedor que mantêm a coerência entre essas classes. E é só olhar o código que é possível encontrar um “estilo arquitetural”, ou seja, um jeitão de implementação. Esse “jeito” é a coerência e mantida pelo desenvolvedor.
No time de 4 pessoas a arquitetura normalmente é colegiada. Precisa de arquiteto? Precisa. Só que nesse caso todo mundo é arquiteto tb. A coerência é mantida pelo time.
Já no sistema coorporativo, envolvendo muitas pessoas, muitos times, a solução do colegiado fica difícil. Precisa de arquiteto? [...] Precisa! :) Manter a coerência de integração e responsabilidades dos sistemas é o que o arquiteto(s) vai tentar fazer. Existem varias maneiras de fazer isso e depende muito do sistema sendo desenvolvido. A abordagem que usamos atualmente é a criação de um ecossistema, com regras simples, onde cada time pode criar um sistema para fazer parte desse ecossistema ao mesmo tempo que tem liberdade para usar a melhor ferramenta e a melhor arquitetura daquele sistema para resolver o problema.
Uma das coisas mais importantes para o arquiteto é que ele deve, sempre que possível, oferecer liberdade para os desenvolvedores escolherem tecnologias, framework, não engessando totalmente o software, visto que isso faz com que seu time aprenda mais e fique mais motivado. Uma outra atitute interessante é incluir os desenvolvedores em reuniões arquiteturais, pois os mesmos podem agregar com expriências vivênciadas entre outros conhecimentos adquiridos.
E você leitor o que acha? O que o arquiteto de fato faz? Você já passou em algum projeto onde o arquiteto "engessou" o projeto? Como foi a experiência?