Ideia

Sem um catálogo de patterns decidido pelo time, cada funcionalidade gerada inventa sua própria maneira de fazer

Info

Escrito originalmente em francês. Traduzido por IA — o sentido foi preservado, não a prosa.

Ideia principal

Como se escreve uma API neste time? Como tratamos os erros? Como escrevemos um job assíncrono? Como testamos uma chamada a um serviço externo? Enquanto essas respostas ficarem implícitas, elas serão reconstituídas a cada vez — e um assistente de desenvolvimento, que não tem motivo nenhum para preferir a convenção local a outra qualquer, propõe uma diferente a cada funcionalidade.

O resultado não é uma falha de qualidade funcionalidade por funcionalidade: cada solução pode estar correta isoladamente. O resultado é um time que mantém várias arquiteturas dentro de um único produto, sem que nenhuma decisão tenha assumido essa pluralidade.

O que falta é um catálogo dos patterns autorizados, decidido pelo time e escrito. Decidido, porque um inventário do que o código já contém apenas ratifica a dispersão; escrito, porque a convenção não formulada não se transmite nem a quem chega nem a uma ferramenta.

Por que isso importa

Isso desloca o alvo do esforço de homogeneidade: a revisão caso a caso não alcança uma vazão de geração, um referencial a montante alcança.

Também revela um custo que a aceleração esconde. A lentidão impunha uma homogeneidade de fato — reinventar a cada vez custava caro demais, então copiávamos o módulo ao lado. Esse freio cai quando produzir não custa mais nada, e nada o substitui enquanto a convenção não virar decisão.

Nuances e limites

Um catálogo grande demais vira estorvo: ele congela escolhas que o contexto deveria poder reabrir, e acaba ignorado porque ninguém o mantém atualizado. O valor dele está na pequena lista de perguntas recorrentes, não na exaustividade.

E a homogeneidade não é um fim. Num perímetro exploratório, deixar várias maneiras de fazer conviverem por um tempo é um meio legítimo de comparar — desde que a escolha depois seja decidida e registrada.

Questões em aberto

  • Quem arbitra a entrada de um novo pattern no catálogo, e a que sinal um time reconhece que uma entrada existente deixou de servir?