Pular para o conteúdo

Por que lotes pequenos vencem

Iniciante12 min de leituraentrega

A intuição diz que entregar menos vezes é mais seguro: cada deploy é um risco, então reduza o número de deploys. A pesquisa de entrega de software diz o contrário — os times que publicam com mais frequência também quebram menos e se recuperam mais rápido.

Não é paradoxo. É consequência de como o risco se comporta com o tamanho do lote.

Uma mudança com dez alterações não tem dez vezes o risco de uma com uma alteração. Tem mais, porque o risco não está só nas alterações: está nas interações entre elas.

Some a isso o que o lote grande carrega junto: mais tempo desde que o código foi escrito (logo, menos contexto na cabeça de quem escreveu), mais conflitos de merge, mais chance de que uma das partes precise ser revertida sem as outras.

E há o efeito psicológico, que é real: quanto maior o lote, maior a resistência a reverter. “Tem coisa boa aí dentro” é o argumento que mantém em produção uma mudança que já se sabe problemática.

Este é o argumento decisivo. O deploy quebrou:

  • Lote de uma mudança: a causa é aquela mudança. Reverte-se em minutos.
  • Lote de quarenta mudanças: começa a investigação. Qual das quarenta? Bissecção, hipóteses, gente parada.

O tempo de diagnóstico cresce com o tamanho do lote, e ele é a maior parte do tempo de um incidente — não a correção. É por isso que times com deploy frequente têm tempo de recuperação menor: não porque consertam mais rápido, mas porque descobrem mais rápido.

Lotes pequenos e capacidade de entrega se reforçam:

lotes menores → deploy menos assustador → publica-se mais vezes
→ mais prática em publicar → automação melhora
→ deploy fica confiável → dá para publicar lotes ainda menores

E o ciclo oposto também é estável, o que explica por que times travam nele: deploy raro → lote enorme → deploy assustador → aprovação e cerimônia → deploy mais raro ainda. Cada volta piora a seguinte, e o mecanismo de “proteção” é justamente o que aumenta o risco.

Quando um time não consegue publicar em lotes pequenos, a causa costuma ser uma destas — e todas são resolvíveis:

  • Testes lentos ou instáveis. Se o pipeline leva uma hora, ninguém publica cinco vezes ao dia. Veja acelerar um pipeline lento.
  • Deploy manual ou arriscado. Automatize e garanta reversão em minutos.
  • Branch de longa duração. Integração adiada é lote grande por construção; veja estratégias de branch.
  • Funcionalidade que só faz sentido inteira. Resolve-se com feature flag, separando entrega de liberação.
  • Aprovação externa por deploy. Substitua a aprovação genérica por controle automatizado com evidência.
  • Migração de banco acoplada. Resolve-se com expand/contract.

Repare que nenhuma delas é “o negócio não deixa”. A restrição quase sempre é técnica ou de processo, e portanto endereçável.

Lote pequeno não é fim em si. Publicar uma alteração de espaçamento vinte vezes ao dia não melhora nada, e há contextos em que o custo por entrega é irredutível: software embarcado com atualização em campo, cliente desktop distribuído, sistema regulado com homologação externa. Aí a resposta é reduzir o custo do lote quando possível, e agrupar conscientemente quando não for.

Há também um custo real de coordenação: cada entrega consome comunicação, verificação e atenção. O objetivo não é o menor lote concebível, e sim o menor lote que ainda entrega valor coerente — com o custo por entrega baixo o suficiente para que isso seja sustentável.