Ideia

Aceitar código que ninguém sabe explicar contrai uma dívida de compreensão

Info

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

Ideia principal

Fazer merge de um código que nenhum integrante do time saberia explicar não é uma negligência de revisão: é um empréstimo. O time recebe a funcionalidade na hora e se compromete a pagar depois, em incapacidade de diagnóstico — no momento em que for preciso alterar, proteger ou retomar esse código sem saber por que ele foi escrito assim.

O passivo fica invisível enquanto nada quebra: a aplicação roda, as telas respondem, os testes passam. Dezenas de pull requests abertas durante a noite por um assistente e integradas sem que ninguém tenha verificado os impactos parecem adiantamento; são juros correndo.

Daí uma regra de merge simples, quase brutal: não integrar código que ninguém consegue explicar. Ela não pede uma documentação interminável — um pequeno orçamento de compreensão por funcionalidade basta: o contrato, os testes, a decisão de arquitetura, os limites conhecidos. O suficiente para que o raciocínio continue transmissível entre pessoas.

Por que isso importa

Isso devolve um preço imediato à incompreensão, no lugar e no momento em que a decisão é tomada. Enquanto o custo fica adiado, cada integração isolada parece razoável, e o passivo se acumula sem que nenhuma arbitragem o tenha aceitado.

Também dá um critério de revisão que não depende do nível técnico de quem revisa: a pergunta não é "esse código é bom?", mas "alguém aqui sabe dizer por que ele é assim?".

Nuances e limites

A regra esbarra numa zona cinzenta: explicar em que nível? Ninguém explica linha a linha o código de uma biblioteca de terceiros, e um time que exigisse esse grau em tudo não integraria mais nada. O objeto da explicação é a intenção e as fronteiras, não cada instrução.

E ela só vale se alguém tiver autoridade para bloquear uma integração. Num time em que o prazo manda, ela vira uma formalidade declarativa, e a explicação se reduz à caixinha marcada.

Questões em aberto

  • Sobre que perímetro a explicação deve incidir — a funcionalidade, o módulo, a linha — para que a regra continue aplicável sem virar ritual?