Pular para o conteudo principal

Enquadrar o problema antes de codificar

Um jeito repetivel de confirmar o problema, fechar restrições e escolher uma baseline antes de abrir o editor.

Andrews Ribeiro

Andrews Ribeiro

Founder & Engineer

Trilha

Trilha para entrevistas de senior full stack

Etapa 5 / 14

O problema

Muita gente erra entrevista antes de escrever a primeira linha.

Escuta uma palavra familiar, reconhece um padrão conhecido e sai correndo para implementar.

Parece velocidade.

Na prática, muitas vezes e só ansiedade fantasiada de confiança.

O problema disso e simples:

você pode resolver muito bem uma pergunta que o entrevistador não fez.

Isso aparece em:

  • entrevista de código
  • system design
  • conversa de trabalho real

O nome muda.

O padrão mental e o mesmo: construir cedo demais.

Modelo mental

Enquadrar antes de codificar não e enrolar.

E reduzir a chance de investir tempo na direção errada.

Um modelo útil cabe em quatro passos:

  1. reenquadrar o problema com suas palavras
  2. confirmar restrições e edge cases
  3. propor a baseline mais simples que funciona
  4. otimizar só quando ficar claro por que a baseline não basta

Se quiser uma frase curta:

Primeiro garanta que esta resolvendo a coisa certa. Depois melhore a solução certa.

Quebrando o problema

Reenquadre o problema

Antes de pensar em algoritmo, repita o problema do seu jeito.

Isso faz duas coisas:

  • revela mal-entendido cedo
  • mostra que você sabe reduzir ambiguidade

Feche as restrições que mudam a solução

Nem toda pergunta precisa de interrogatorio.

Mas algumas restrições mudam tudo:

  • a ordem original importa?
  • preciso preservar indice?
  • posso usar memória extra?
  • qual tamanho de entrada estamos assumindo?

Se você ignora isso cedo, a chance de escolher técnica errada sobe muito.

O ponto aqui e fazer poucas perguntas que mudam a solução.

Pergunta demais sem avancar também passa sensação de inseguranca.

Diga a menor solução correta

A baseline e a menor solução correta que você conseguir explicar sem drama.

Ela e importante porque:

  • ancora corretude
  • revela o gargalo real
  • da contexto para a otimização seguinte

Baseline não e teatro obrigatorio.

E uma forma curta de mostrar que você sabe sair do zero antes de pular para a parte mais sofisticada.

Otimize com motivo, não por reflexo

O salto da baseline para a versão melhor precisa ter uma razão clara.

Exemplos:

  • O(N^2) já ficou caro demais
  • preciso de uma passada só
  • preciso preservar estrutura original
  • preciso responder rápido sob volume maior

Sem isso, a resposta vira coleção de truques.

Isso não vale só para live coding

Esse modelo ajuda em entrevista de código, mas não fica preso nisso.

Ele também ajuda quando você precisa:

  • enquadrar um problema de system design
  • entender ticket mal escrito
  • revisar bug antes de sair mudando código

O ponto não e o editor.

O ponto e reduzir erro de direção.

Exemplo simples

Suponha a pergunta:

Encontre o primeiro número repetido em um array grande.

Uma resposta apressada seria abrir o editor e digitar Hash Set sem dizer nada.

Uma resposta melhor seria:

Vou confirmar o objetivo: precisamos devolver o primeiro valor que aparece repetido na ordem de leitura, certo? A baseline mais simples e comparar cada elemento com os proximos usando dois loops. Ela e fácil de validar, mas custa O(N^2). Se o array for realmente grande, eu troco tempo por memória e uso Hash Set para detectar repetição em O(N).

Em poucas frases você mostrou:

  • entendimento do problema
  • baseline
  • custo
  • motivo da mudança

O mesmo raciocínio vale para system design.

Erros comuns

  • Correr para o algoritmo otimizado antes de validar o problema.
  • Ficar calado para parecer rápido.
  • Ignorar edge case porque quer chegar logo na parte “interessante”.
  • Tratar baseline como perda de tempo.
  • Gastar tanto tempo enquadrando que não sobra tempo para executar.

Como um senior pensa

Quem tem mais experiência raramente parece o mais veloz no primeiro minuto.

Parece o mais controlado.

O raciocínio costuma soar assim:

Vou primeiro garantir que estou resolvendo a coisa certa. Depois eu mostro a menor solução correta. Se ela não escalar, eu melhoro sabendo exatamente o que estou trocando.

Essa postura e forte por dois motivos:

  • reduz retrabalho
  • transmite maturidade

Também evita aquele erro clássico de parecer brilhante por trinta segundos e errado pelo resto da entrevista.

O que o entrevistador quer ver

Quando você enquadra antes de codificar, o entrevistador enxerga mais do que técnica.

Ele enxerga:

  • capacidade de reduzir ambiguidade
  • critério para separar baseline de otimização
  • clareza para explicar trade-off
  • maturidade para não reagir no impulso

Em entrevista, a solução certa vale muito. Mas a forma como você chega nela diz o quanto o entrevistador pode confiar em você.

Gente madura não corre para parecer rápida. Corre menos para errar menos.

Resumo rápido

O que vale manter na cabeça

Checklist de pratica

Use isto ao responder

Próximo artigo Como pensar em complexidade de tempo e espaço Artigo anterior O que entrevistadores realmente ouvem quando você responde

Continue explorando

Artigos relacionados