OA02 – Governança Arquitetural e Open Architecture- Você não pode esperar proatividade, muito menos de quem não tem acesso
Publicado em: segunda-feira, 16 de fev de 2026

As 7 regras que uso para governar componentes arquiteturais em projetos .NET de grande porte — e filtrar quem realmente está pronto para evoluir a arquitetura.

Existe uma expectativa velada em muitos times de desenvolvimento: a de que bons desenvolvedores simplesmente “se envolvem” com a arquitetura. Que eles naturalmente vão questionar decisões, propor melhorias e contribuir para a evolução técnica do projeto.

Mas aqui está o problema que quase ninguém está disposto a falar: como alguém pode ser proativo em relação a algo que não conhece, não enxerga e não tem acesso?

Em boa parte dos projetos .NET de grande porte que já restruturei, encontrei o mesmo padrão no legado. Os componentes arquiteturais existiam, funcionavam e sustentavam o ecossistema — mas viviam encapsulados na cabeça de quem os criou. Sem documentação acessível, sem convenções claras de contribuição, sem um caminho visível para quem quisesse entender o porquê das decisões tomadas.

O resultado é previsível: desenvolvedores que poderiam contribuir ficam à margem. Não por falta de interesse ou capacidade, mas por falta de acesso. E quando algo dá errado, a narrativa é sempre a mesma — “o time não é proativo”, “ninguém se preocupa com arquitetura”, “está na cabeça do arquiteto que saiu”.

A verdade é mais incômoda: não é possível cobrar proatividade, muito menos de quem não tem acesso à arquitetura. Se os componentes que sustentam o projeto não estão disponíveis, organizados e com regras claras de evolução, o problema não está no desenvolvedor. Está na governança.

E foi exatamente para resolver isso que, ao longo dos anos, construí um conjunto de regras que me ajudam a conduzir projetos de grande porte. Regras que não apenas organizam componentes, mas criam um caminho claro para quem quer — e pode — contribuir com a arquitetura e infraestrutura de aplicação.

Antes de chegar nelas, porém, é preciso reconhecer algo que muitos líderes técnicos ignoram: nem todo desenvolvedor tem a mesma relação com a arquitetura.

E está tudo bem.

Os 4 perfis de desenvolvedores diante da arquitetura

Ao longo dos anos, percebi que desenvolvedores se posicionam diante da arquitetura de formas muito diferentes. Não é uma questão de senioridade no crachá — é uma combinação de interesse, capacidade e momento de carreira. Identifico 4 perfis recorrentes:

Os que querem, mas ainda não podem. Têm a curiosidade e a vontade, mas ainda não acumularam a experiência necessária para propor mudanças arquiteturais seguras. São os futuros arquitetos do seu time — se você criar as condições certas para que aprendam. O erro mais comum é ignorá-los ou, pior, dar a eles liberdade total sem guardrails. O resultado quase sempre é retrabalho.

Os emocionados. Querem aprender, estão empolgados com a tecnologia, mas seu interesse é mais sobre absorver conhecimento do que sobre contribuir com mudanças. Não há nada de errado com isso. Eles são valiosos porque trazem energia e questionamentos que, muitas vezes, revelam pontos cegos na documentação ou na clareza dos componentes. Porém precisam de limites claros para não confundir entusiasmo com autonomia para alterar o que não compreendem por completo.

Os que não se importam — desde que funcione. Para eles, a arquitetura é um meio, não um fim. Querem entregar funcionalidades, resolver problemas de negócio e seguir em frente. Esse perfil não é um problema — é uma realidade. Nem todo desenvolvedor precisa se tornar arquiteto. O que você precisa garantir é que os componentes arquiteturais simplifiquem o trabalho deles, sem exigir que entendam cada decisão por trás do design.

Esses 4 perfis coexistem na maioria dos times. O papel da governança arquitetural não é forçar todos a se tornarem arquitetos, mas criar um sistema que atenda a cada perfil de forma adequada: acesso para quem pode contribuir, guardrails para quem está aprendendo, clareza para quem só quer usar, e um filtro natural para separar entusiasmo de comprometimento real.

É exatamente isso que as 7 regras a seguir fazem.

As 7 regras para governança de componentes arquiteturais

Essas regras não surgiram de teoria. Elas nasceram de projetos reais, com times reais, enfrentando os mesmos problemas que provavelmente você enfrenta hoje: componentes duplicados, mudanças que quebram o ecossistema, desenvolvedores que refazem o que não entenderam e uma sensação constante de que a arquitetura está se fragmentando.

Organizei as regras em 3 blocos para facilitar a compreensão: acesso e simplificação, organização e qualidade, e responsabilidade ecossistêmica.

Acesso e simplificação

Regra 1: os componentes arquiteturais precisam estar disponíveis para os desenvolvedores.

Parece óbvio, mas não é. Em muitos projetos, os componentes existem como pacotes NuGet internos mal documentados, ou como código em repositórios que poucos sabem que existem, ou pior — como conhecimento tácito na cabeça de alguém que já saiu do time.

Se um componente não está disponível de forma clara — com documentação, exemplos de uso e um caminho para entender suas decisões de design — ele não existe para o time. E você não pode cobrar envolvimento com algo que, na prática, é invisível.

Disponibilizar não significa apenas publicar um pacote. Significa tornar visível o quê o componente faz, por quê ele existe, como deve ser usado e quais são seus limites. Sem isso, cada desenvolvedor vai criar sua própria solução — e aí começam as duplicações, as inconsistências e a erosão arquitetural silenciosa que só aparece quando já é tarde demais.

Regra 2: os componentes arquiteturais devem simplificar o desenvolvimento e formalizar a forma de trabalho com determinadas tecnologias.

Um componente arquitetural que adiciona complexidade é um componente que falhou no seu propósito. Se o desenvolvedor precisa entender 15 camadas de abstração para publicar uma mensagem no RabbitMQ ou para configurar um cache no Redis, algo está errado.

O papel do componente é encapsular decisões arquiteturais e transformá-las em APIs simples e coerentes. Ele deve formalizar a forma como o time trabalha com determinada tecnologia — estabelecendo padrões, convenções e limites — mas sem criar uma barreira de entrada que afaste justamente quem deveria usá-lo.

Na prática, o componente deve ser o caminho mais fácil para fazer a coisa certa. Se o desenvolvedor percebe que é mais simples ignorar o componente e implementar diretamente, você tem um problema de design, não de disciplina.

Organização e qualidade

Regra 3: componentes são organizados em componentes locais (do projeto), regionais (compartilhados entre alguns projetos) e globais (da empresa).

Essa distinção é fundamental e resolve um problema que poucos times enfrentam de forma consciente: nem todo componente tem o mesmo escopo de impacto.

Componentes locais pertencem a um projeto específico. Eles encapsulam decisões que fazem sentido naquele contexto, para aquele domínio, com aquelas restrições. Seu raio de explosão é limitado — se algo der errado, o impacto é restrito ao projeto.

Componentes regionais são compartilhados entre um grupo de projetos que possuem afinidade técnica ou de domínio. Eles nascem quando dois ou mais projetos enfrentam o mesmo problema e a solução local se prova reutilizável — mas ainda não justifica uma adoção global. O regional é o nível mais traiçoeiro, porque vive no limbo entre a flexibilidade do local e a rigidez do global. Se não for governado com clareza, ele se torna um componente global disfarçado, sem o rigor que isso exige.

Componentes globais são compartilhados entre todos os projetos da empresa. Eles representam decisões arquiteturais que transcendem domínios específicos e afetam todo o ecossistema. Seu raio de explosão é proporcional ao número de consumidores — e, por definição, esse número é o maior possível.

Tratar os três da mesma forma é um erro. A exigência de qualidade, o processo de aprovação e a rigidez das validações precisam ser proporcionais ao impacto. E é exatamente isso que as duas regras seguintes estabelecem.

Regra 4: componentes locais possuem validações de arquitetura flexibilizadas para o processo educacional de formar novos arquitetos.

Componentes locais são o campo de treinamento. É aqui que os desenvolvedores dos perfis 2 e 3 — os que querem mas ainda não podem, e os emocionados — têm espaço para experimentar, errar e aprender.

Flexibilizar as validações não significa ausência de padrão. Significa que o custo de um erro é menor e que existe espaço para iteração. Um componente local pode ter uma abstração imperfeita, uma API que ainda não está no ponto ideal, um design que funciona mas não escala. Tudo isso é aceitável se o componente está contido no escopo do projeto e se serve como instrumento de aprendizado.

Esse é um ponto que muitos líderes técnicos erram: exigir o mesmo rigor de um componente local e de um componente global mata a iniciativa. O desenvolvedor que poderia estar aprendendo a pensar arquiteturalmente desiste porque o custo de contribuir é alto demais. E quando você perde essa janela de formação, perde futuros arquitetos.

Regra 5: componentes regionais e globais possuem validações exaustivas de qualidade — proporcionais ao seu alcance.

Se componentes locais são o campo de treinamento, componentes regionais e globais são produção. Aqui, o rigor é inegociável — mas a intensidade varia.

Um componente regional será consumido por um grupo conhecido de projetos. O processo de validação precisa ser rigoroso, mas o escopo de impacto é mapeável: você sabe quem são os consumidores, pode coordenar mudanças diretamente e o custo de uma migração é administrável. O rigor existe, mas com a vantagem de um raio de impacto controlado.

Um componente global vai ser consumido por todos os projetos da empresa, mantido por múltiplos times e vai sobreviver a múltiplas gerações de desenvolvedores. Ele precisa de testes exaustivos, documentação completa, versionamento rigoroso e um processo de revisão que garanta que cada mudança foi pensada no contexto do ecossistema inteiro. Aqui, o custo de um erro não é um projeto instável — é a confiança de toda a organização naquela fundação.

O padrão de qualidade mais alto não é burocracia — é proteção. Cada consumidor daquele componente confiou que ele se comportaria de determinada forma. Quebrar esse contrato sem critério é quebrar a confiança de todo o ecossistema.

Responsabilidade ecossistêmica

Regra 6: componentes não podem sobrepor-se em funcionalidade.

Sobreposição é o sintoma mais claro de governança ausente. Quando dois componentes fazem a mesma coisa de formas diferentes, o time perde a referência de qual é o caminho oficial. Cada desenvolvedor escolhe o que parece mais conveniente no momento, e a base de código se fragmenta.

Essa regra parece simples, mas sua aplicação exige disciplina constante. Toda vez que alguém propõe um novo componente, a primeira pergunta deve ser: isso já não existe? E se existe, por que não atende? Se a resposta for “porque eu não gosto de como foi feito”, voltamos ao próximo ponto — que é justamente sobre o que significa querer mudar algo que já existe.

Regra 7: ao querer recriar ou modificar um componente, é preciso pensar nos demais consumidores. Não é permitido manter duas versões totalmente diferentes em produção.

Essa é a regra mais exigente — e a mais importante. Ela estabelece que quem quer mudar um componente precisa assumir responsabilidade pelo ecossistema inteiro que depende dele.

Na prática, isso significa que subir uma nova versão de um componente global implica adaptar todos os projetos estáveis que o consomem. Não é permitido deixar a versão antiga rodando indefinidamente enquanto a nova segue em paralelo. Isso cria fragmentação, dificulta manutenção e gera inconsistências que se acumulam silenciosamente.

Essa regra é dura por design. Ela existe para filtrar mudanças impulsivas de mudanças fundamentadas. Se um desenvolvedor quer reescrever um componente, ele precisa primeiro entender por que o componente é como é — quais requisitos o moldaram, quais trade-offs foram aceitos, quais limitações foram deliberadas. Depois, precisa mapear todos os consumidores e planejar a migração.

Se, depois de tudo isso, ele ainda quer seguir em frente, é porque tem algo melhor a entregar. E esse dev merece livre passagem para entregar o seu melhor.

O filtro natural

Olhando para as 7 regras em conjunto, percebe-se que elas não são apenas governança técnica. Elas funcionam como um mecanismo de seleção natural.

Pense no desenvolvedor que quer modificar um componente global. Pelas regras, ele precisa:

  • Entender todos os requisitos que levaram o componente a existir na forma atual.
  • Mapear todos os projetos e serviços que dependem dele.
  • Planejar uma migração que não quebre o ecossistema.
  • Garantir que sua proposta atende às validações exaustivas de qualidade.

Cada uma dessas etapas é um filtro. Não um filtro burocrático, mas um filtro de comprometimento.

O desenvolvedor que desiste na primeira etapa aprendeu algo valioso: que o componente não é arbitrário, que existem razões concretas para cada decisão. Isso, por si só, já é uma vitória educacional — ele sai do processo entendendo o porquê, mesmo que não mude nada.

O desenvolvedor que desiste na segunda etapa descobriu a dimensão real do impacto. Percebeu que sua mudança não é isolada, que o ecossistema é maior do que o caso de uso que ele tinha em mente. Esse entendimento muda a forma como ele avalia mudanças dali em diante.

E o desenvolvedor que passa por todas as etapas e ainda quer seguir? Esse entendeu os requisitos, mapeou as dependências, planejou a migração e ainda assim está convencido de que tem algo melhor a entregar. Esse profissional não está agindo por impulso ou por preferência pessoal — está agindo por convicção técnica fundamentada.

Esse é o tipo de contribuição que evolui a arquitetura de verdade. E é exatamente o tipo de pessoa que as regras foram desenhadas para revelar.

Arquitetura aberta é arquitetura que evolui

Governança arquitetural não é sobre restringir. É sobre criar as condições certas para que a arquitetura evolua de forma sustentável, com contribuições de quem realmente entende o peso do que está mudando.

Abrir a arquitetura — tornar componentes disponíveis, documentados e com regras claras — não significa perder controle. Significa criar um funil que desenvolve pessoas enquanto protege o ecossistema. Os curiosos aprendem, os comprometidos contribuem e os que só querem entregar funcionalidades têm um caminho simples para fazê-lo.

O primeiro passo é simples, mas exige honestidade: olhe para o seu projeto hoje e se pergunte — os componentes estão realmente acessíveis? Existe um caminho claro para quem quer contribuir? Ou você está cobrando proatividade de quem nunca teve acesso?

Se a resposta for incômoda, talvez seja hora de começar pelas regras.

O Cloud Native .NET é meu principal projeto.

Onde empenho energia para ajudar, acompanhar, direcionar Desenvolvedores, Líderes Técnicos e jovens Arquitetos na jornada Cloud Native.

Conduzo entregando a maior e mais completa stack de tecnologias do mercado.

Ao trabalhar com desenvolvedores experientes, eu consigo usar seu aprendizado com .NET, banco de dados, e arquitetura para encurtar a jornada.

Ao restringir à desenvolvedores .NET eu consigo usar do contexto de tecnologias e problemas do seu dia-a-dia, coisas que você conhece hoje, como WCF, WebForms, IIS e MVC, por exemplo, para mostrar a comparação entre o que você conhece e o que está sendo apresentado.

É assim que construímos fundamentos sólidos, digerindo a complexidade com didática, tornando o complexo, simples.

É assim que conseguimos tornar uma jornada densa, em um pacote de ~4 meses.

Eu não acredito que um desenvolvedor possa entender uma tecnologia sem compreender seus fundamentos. Ele no máximo consegue ser produtivo, mas isso não faz desse desenvolvedor um bom tomador de decisões técnicas.

É preciso entender os fundamentos para conseguir tomar boas decisões.

0 comentários

Enviar um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.


4x Microsoft MVP

Categorias

Assine

Luiz Carlos Faria

Mensagem do Autor

Espero que goste desse post. Não deixe de comentar e falar o que achou.

Se acha que esse post pode ajudar alguém que você conheça, compartilhe!

 

Lives

Fique de olho nas lives

Fique de olho nas lives no meu canal do Youtube, no Canal .NET e nos Grupos do Facebook e Instagram.

Aceleradores

Existem diversas formas de viabilizar o suporte ao teu projeto. Seja com os treinamentos, consultoria, mentorias em grupo.