De uns tempos pra cá venho percebendo que o papel do “Arquiteto de Software” tá na boca do povo e em muitos lugares as pessoas falam, falam e falam a respeito do que esse fulano deveria fazer e/ou não fazer. Hoje recebi o último Architecture Journal que fala apenas a respeito deste papel dentro das empresas e do processo de desenvolvimento e manutenção de sistemas e como estou cada vez mais assumindo esse título decidi tentar colocar resumidamente o que eu penso a respeito desta importante figura.
Na realidade, eu não gosto muito do título, pois por toda minha vida profissional (que não é tããããão longa assim) eu acreditei que esse cara era o guru da sapiência e que ele nunca ficaria sem respostas a qualquer pergunta que fosse feita. Então, soa como uma responsabilidade muitooooo grande (e é mesmo) pra um desenvolvedor de apenas 21 anos como eu. De fato, deveria ser assim, mas é humanamente impossível ser ao mesmo tempo generalista e especialista em todas as áreas. Isso me frustrou um pouco, mas ao mesmo tempo, por outro lado abriu minha cabeça e me fez reconhecer que existem diversos tipos de arquitetos, cada um na sua. E que existem pessoas, mesmo sem carregar o título, que também fazem arquitetura em um momento ou outro de um projeto. É baseado em conhecimento próprio e utilizando o conhecimento dos membros da equipe que o arquiteto deve trabalhar.
Inicialmente, dentro da área de software (imaginando que infra-estrutura não exista) eu identifico dois principais arquitetos: Arquiteto de Soluções ou Corporativo e Arquiteto de Sistemas. O primeiro deles define quais tecnologias, metodologias e ambientes serão utilizados para os sistemas da empresa e procura manter todos os sistemas seguindo essas linhas agindo de forma incisiva nas fronteiras entre implementação e processos de negócio sem dar muita atenção nos detalhes técnicos de cada sistema.
Já o segundo, que é onde eu me encaixo por trabalhar em consultoria atendendo a diversos clientes, é o cara que dado um projeto deve atuar em todas as etapas da construção do sistema. Desde levantamentos inicias, passando por implementação e até roll-out em produção. Além das habilidades técnicas que são imprescendiveis nesse papel e isso ninguém pode negar, o arquiteto deve ser um cara balanceado pra atuar como um mediador entre todos os stakeholders do projeto. Em um projeto com papéis bem definidos, a tendência é que cada um cuide das apenas das suas responsabilidades. Isso é bom, pois cada especialista atua onde mais conhece, mas se não houver cuidado, pode fazer com que os principios inicialmente definidos não sejam seguidos. É ai onde o arquiteto deve entrar pra fazer com que todas as diretivas sejam seguidas. Isso exige liderança, habilidades em negociação e muitas vezes pulso forte pra suportar caras feias que aparecem quando uma decisão não agrada a todos.
No âmbito técnico, além de definir um modelo a ser seguido para implementação, ele deve atuar junto a equipe de análise nas etapas de modelagem a fim de entender do negócio para que seja possível escolher as tecnologias que melhor se encaixam no domínio de negócio. Uma vez modelado o domínio de negócio e tendo as tecnologias definidas, ele deve atuar junto a equipe de desenvolvimento guiando a implementação e removendo possíveis roadblocks. Sempre que houver um conflito técnico, ele deve atuar em prol do projeto para decidir a questão independente de chateação ou não por parte dos membros da equipe.
E pra finalizar, deve conhecer metodologia e processos de desenvolvimento a fim de tornar o planejamento e execução dos projetos mais baratos e acertivos.
Dava pra ficar enumerando a respeito das skills e habilidades que um arquiteto deve ter, mas em resumo acho que isso é o principal. O importante é ter em mente que não importa o quanto estudemos nunca vamos chegar no que eu imaginava que existia: arquitetos-sabe-tudo.
Ao longo dos dias vou procurar postar entries nessa categoria pra ir complementando os pensamentos e ai, quem sabe um dia, eu formato tudo num grande apinhado de informações! ehehehe…
Soçarba
Legal cara! Também gosto bastante das definição do papel do arquiteto de software do site agil architect: http://www.agilearchitect.org/agile/role.htm
Abraço