Pular para o conteudo principal

Como debugar com método

Como investigar bug de forma disciplinada e reduzir ruído enquanto você testa hipóteses.

Andrews Ribeiro

Andrews Ribeiro

Founder & Engineer

O problema

Tem bug que deixa o time tão desconfortável que a reação vira movimento.

Não vira entendimento. Vira movimento.

Aí começa a sequência:

  • troca timeout
  • reinicia serviço
  • comenta bloco
  • sobe log em dez lugares
  • muda duas configurações

Se o bug some, ninguém sabe por que. Se continua, agora existe mais ruido ainda.

Modelo mental

Debug sem critério costuma seguir esta pergunta errada:

“O que eu posso mexer agora para ver se passa?”

Debug melhor segue esta:

“O que eu preciso observar para reduzir incerteza antes de mexer?”

Isso muda bastante o comportamento.

Em vez de sair empurrando o sistema, você começa a enquadrar melhor o problema.

Quebrando o problema

Primeiro defina o sintoma real

Antes de corrigir, responda:

  • o que está errado exatamente?
  • onde aparece?
  • com que frequência?
  • quem é afetado?

Sem isso, você corre o risco de atacar uma descrição vaga, não um problema concreto.

Depois delimite o escopo

Perguntas úteis:

  • isso acontece em um fluxo ou em vários?
  • é para todos os usuários ou para um segmento?
  • começou depois de qual mudança?
  • acontece só em produção ou também em staging/local?

Escopo menor significa busca menor.

Tente reproduzir com disciplina

Nem todo bug vai reproduzir fácil.

Mas mesmo quando não reproduz exatamente, vale tentar:

  • um caminho mínimo
  • um dado específico
  • uma condição de tempo ou concorrência
  • um recorte de ambiente

Reprodução é poderosa porque transforma teoria em comportamento observável.

Mude uma coisa por vez

Esse ponto parece banal, mas separa debug de loteria.

Se você altera várias variáveis juntas, perde a chance de saber o que realmente influenciou o resultado.

Em debug, controle experimental importa.

Exemplo simples

Imagine erro intermitente no checkout.

Reação ruim:

  • aumentar timeout
  • trocar ordem de chamada
  • reiniciar pod
  • subir duas flags

Reação melhor:

  1. confirmar se o erro acontece em todos os meios de pagamento
  2. ver quando começou
  3. correlacionar com deploy ou fornecedor externo
  4. isolar uma request com contexto suficiente
  5. testar hipotese de forma pontual

No segundo caso, talvez a correção demore alguns minutos a mais.

Mas o entendimento costuma vir muito mais limpo.

Erros comuns

  • Querer parecer rápido em vez de reduzir incerteza.
  • Confundir mudança de comportamento com confirmação de causa.
  • Sair editando código sem ter recorte mínimo do problema.
  • Logar tudo e acabar sem sinal útil.
  • Tratar reproducao como opcional sempre.

Como um senior pensa

Quem tem mais experiência costuma frear a sala antes de acelerar.

O raciocínio geralmente é:

“Se a gente mexer sem entender, talvez atenue o sintoma, mas perca a chance de explicar o problema. Primeiro eu quero evidência suficiente para mexer com direção.”

Essa postura parece mais lenta para quem esta aflito.

Na prática, isso costuma economizar tempo.

O que o entrevistador quer ver

Em entrevista, esse tema mede disciplina técnica.

O avaliador quer ver se você:

  • define sintoma antes da solução
  • reduz escopo
  • propõe observação antes de editar
  • muda uma variável por vez

Uma resposta forte costuma soar assim:

“Eu começaria delimitando o sintoma e o escopo. Depois tentaria reproduzir ou pelo menos correlacionar o problema com sinais confiáveis. Só então eu alteraria uma coisa por vez para validar a hipótese.”

Debug fraco parece ação. Debug forte parece investigação.

Resumo rápido

O que vale manter na cabeça

Checklist de pratica

Use isto ao responder

Você concluiu este artigo

Próximo artigo Hipótese, isolamento e confirmação Artigo anterior Logs úteis para investigação

Continue explorando

Artigos relacionados