Prefácio
Atualmente, desenvolvemos software de forma muito diferente da que desenvolvíamos quando comecei a trabalhar como programador, há mais de 20 anos.
As mudanças que ocorreram - Agile, DevOps e a mudança de projeto para produto, entre outras - envolveram uma descentralização e independência crescentes. Agora, as equipas geralmente lançam o seu próprio código, suportam os seus próprios sistemas e decidem como vão resolver as necessidades do negócio.
Mas o papel que tem sido mais difícil de resolver, na minha experiência, é o papel do arquiteto.
Quando eu estava a construir sistemas monólitos há mais de uma década, os arquitectos trabalhavam numa equipa separada, desenhando a arquitetura para todo o sistema, definindo padrões e escolhendo que base de dados, linguagem de programação ou mecanismo de implementação utilizar. Há várias razões pelas quais isso não funciona nas organizações de engenharia modernas: estas decisões tornam-se um estrangulamento, impedindo as equipas de progredir, mas também há ainda menos hipóteses hoje em dia de uma única decisão funcionar para todas as equipas.
Mas qual é a alternativa? Podes permitir que as equipas tomem as suas próprias decisões de arquitetura, quer atribuindo arquitetos para trabalharem em conjunto com essas equipas, quer fazendo da "arquitetura" uma coisa que as pessoas com funções de engenharia sénior fazem (juntamente com tudo o resto). No entanto, isso pode levar a uma grande divergência de abordagens. Isso pode ser arriscado: ...