O que faz um Arquiteto de Software?

No dia 13/02/2019, houve um meetup, organizado pela equipe DEVtalks PUC Minas, no Auditório Liberdade em Belo Horizonte. Um dos temas/debates foi “Qual é papel do Arquiteto de Software atualmente?” discutido por Rogério Baldini, Amanda Pinto, Marcelo Umberto e Alex Simonetti. Tal assunto faz questionar qual caminho trilhar ou o que fazer para chegar a um cargo de Arquiteto dentro de uma empresa.

Nas eras que programar em COBOL e/ou Clipper eram tendências e havia a preocupação de não escrever uma linha de código muito extensa ou um arquivo de algoritmo não muito pesado, pois gravava-se o sistema em um disquete (ou vários), os profissionais de TI eram quase operários industriais onde tinham cargos e funções específicas e bem definidas. Não possuía a necessidade de fazerem parte de alguma outra área ou de aprender algo novo em um curto prazo de tempo. A demanda de construção de qualquer sistema era pouca, seu método de desenvolvimento envolvia o modelo cascata (sequencial) e o termo “tempo é dinheiro” era ainda pouco conhecido e, na maioria das vezes, havia um gasto maior de tempo e menor era o ROI (traduzido do inglês “retorno sobre o investimento”) adquirido pelas empresas.

Neste contexto, exercer a função de arquiteto de software, até então, era analisar os requisitos levantados por um analista de negócios/sistemas, modelar diagramas para facilitar o entendimento do negócio e modelar algum tipo de arquitetura para o sistema como um todo e iniciar o desenvolvimento.

A grande questão é: em tempos onde empregar metodologias ágeis é algo que deve fazer parte da cultura de uma empresa e a entrega de valor deve ser algo feito constantemente e em um curto período de tempo, é suficiente saber apenas o que o cargo/função descreve? A resposta para essa pergunta é não, e mais adiante explica-se o porquê desta conclusão.

Numa época em que deve-se errar menos ou errar rápido e solucionar o erro em um tempo ainda menor, surge a necessidade de obter profissionais proativos, multidisciplinares e, muitas vezes, auto ditadas. Isso se dá, pois o Arquiteto, no caso, precisa tomar decisões cada vez mais pontuais e impactantes. E, para evitar falhas, é fundamental saber mais de questões de negócio e conjugá-las com questões técnicas. Com isso, é papel do Arquiteto fazer parte da interface com o cliente, para poder compreender mais a fundo sobre as necessidades do mesmo, indagando situações pontuais de negócio que impactam na construção do sistema, constituindo, também, participação na área de segurança e testes de qualidade, tendo que explorar qual é a melhor forma de realizá-lo e no setor financeiro, levantando custos que irá gerar e realizar benchmarks (como qual linguagem de programação utilizar). Além de ter que deter um vasto conhecimento sobre tecnologias, como linguagens de programação e/ou serviços em nuvem, para formular uma arquitetura e auxiliar na construção da mesma.

Assim, o papel do Arquiteto de Software vai muito além de ter um conhecimento técnico excelente. É saber falar em público, consequentemente conversar com o(s) cliente(s), ter uma boa relação, compreender as necessidades, imaginar cenários de segurança e em como irá realizar os testes de qualidade do software. Levantar custos financeiros para utilizar uma determinada tecnologia e/ou plataforma e, muitas vezes, tomar decisões como “Utilizar uma linguagem OpenSource ou gastar 1 milhão de reais utilizando outra” e “O que será o meu ROI”.

Acredita-se que tais habilidades são adquiridas com o passar do tempo, com os anos de trabalho conquistando experiência, onde gradativamente é obtido o conhecimento mais sólido em cada área apresentada. Além de ter muita dedicação e estudo.

Bachelor in Computer Science, MBA in Software Architecture and .NET Developer.

Bachelor in Computer Science, MBA in Software Architecture and .NET Developer.