O que é um arquiteto de software? Onde eles vivem? O que eles comem? O que eles fazem?

A posição de arquiteto de software é, na minha opnião, um dos conceitos mais confundidos na industrial de software. Apesar de ser muito simples a primeira vista pode se tornar uma bagunça quando as empresas e desenvolvedores decidem implementá-lo.

Vamos começar falando sobre a posição de arquiteturo de software. Quem deveria ocupar esta posição? O desenvolvedor mais velho, correto? Errado! Seria então o seu desenvolvedor estrela doido por uma promoção que caso contrário irá deixar a empresa que deveria receber? Provavelmente não. Seria o desenvolvedor mais experiente então? Talvez.

Bem, então quem deveria receber? Ok, Primeiro de tudo é importante entender que arquiteto de software não é um titulo ou posição como as demais mais uma muito importante, vital para a saúde do software da empresa e por tanto não deveria ser desconsiderada. Sendo assim, a resposta reside em que um arquiteto de software realmente é.

Ok. Então, O que é um arquiteto de software? Um arquiteto de software é um desenvolvedor de software cuja a única responsabilidade seja criar e vigiar sobre toda a arquitetura do software

Bem rapaz, não me diga!

Não, sério. Eu gosto de considerar esta posição como uma espécie de guardião. Ele é responsavél por guardar a qualidade do código, estabelecer as regras gerais para escrita, design patterns usados em todo o código bem como a experiência do usuário com o código. Também são responsáveis por desenhar outros aspectos do sistema como confiabilidade, tolerância a erros, qualidade do código, manutenção do código, refatoração do código, comunicação dos serviços, orquestração dos serviços entre outras coisas. São responsaveis por escolher qual arquitetura(MVC, MVVM ou DDD?; Monolitico ou microserviço?; etc.) será usado. Suas decisões irão afetar diretamente a velocidade, manutenabilidade e confiaça no código (quanto que você confia no seu sistema?) e o mais importante para a empresa: a lucratividade do software.

É muito importante também entender que você não pode ser um arquiteto e desenvolvedor ao mesmo tempo. Se você colocar qualquer bom arquiteto de software para escrever uma boa arquitetura de software e ao mesmo tempo uma funcionalidade bem complicada para o software da empresa, ele irá escrever um código de merda e isso é um fato. A pressão para entregar uma funcionalidade irá cegar qualquer boa arquitetura e principios, bloqueando sua criatividade para escrever um bom código. Por isso que você precisa de alguém que não esteja diretamente envolvido no processo de desenvolvimento para vigiar sobre todo o código.

E sim, arquitetura de software é um processo puramente criativo. Não basta seguir os padrões de projetos padrões (gang dos 4, KISS, SOLID, etc.) e arquiteturas (microserviço, serverless, monolítico, etc.). Por que não é sempre possível ou cabível usá-los. As vezes, fazendo as coisas de forma simples sejá a melhor solução ao invés de super complicar tudo. Outras vezes você terá que adaptar a arquitetura para as necessidades da empresa.

Por isso você não deve dar essa posição para qualquer um como uma expécie de prêmio por ser um bom empregado, caso contrário, você poderá estar arruinando sua própria empresa. Você deve escolher o melhor desenvolvedor que tenha um bom gosto para qualidade de código, legibilidade, manutenabilidade, e o mais importante: um excelente senso de abstração. Escolhendo alguém com essas qualidades você pode estar certo de que não só você tem um bom software mas que você poderá estar confiante o suficiente para mostrar a qualquer um sem o medo dele colapsar na sua apresentação (Eu já vi isso acontecer tantes vezes que eu já perdi a conta). Você terá melhores noites de sono e uma melhor ainda rentabilidade.

Arquitetura de software

Image source: unsplash-logoDaniel McCullough