Cenário: a abstração de plugin que ninguém usou
Pergunta
Um colega quer construir um 'sistema de plugins genérico' pra uma feature que hoje tem exatamente um caso de uso, 'porque no futuro vamos precisar'. Como você responde?
Resposta esperada
Reconhecer a intenção (pensar à frente é bom) mas questionar o custo e a evidência. Perguntas: existe um segundo caso de uso concreto e datado, ou é hipótese? Quanto código e complexidade a abstração genérica adiciona agora — registro de plugins, ciclo de vida, contrato, config — versus a implementação direta? Quão caro é adicionar a extensibilidade DEPOIS, quando o segundo caso aparecer e a gente souber a forma real que ele precisa? Quase sempre: implementar o caso único de forma simples e bem fatorada (fácil de estender), e só generalizar quando o segundo caso chega — porque uma abstração desenhada sem o segundo exemplo real costuma estar errada e ainda mais cara de mudar. Se houver um segundo caso genuíno e iminente, aí a conversa muda. É a regra do 'espere o terceiro caso' e YAGNI aplicados.
Por que perguntam isso
Cenário pleno/sênior. Amarra clean-dry-limite, YAGNI e decisão reversível. Bom candidato não é dogmático — 'se houver segundo caso iminente, muda'.