Série de Entrevistas AI 14: Diferença entre vibe coding e spec coding?
Este é um problema que a maioria dos programadores enfrenta. Vibe Coding e Spec Coding são duas formas de trabalho distintas ao programar com a ajuda de grandes modelos de linguagem (LLM). A diferença central é: o "input" que você dá à IA é uma sensação vaga ou uma especificação precisa.
1. Usando a culinária como exemplo para descrever a diferença entre vibe coding e spec coding
- Vibe Coding = Você diz a um amigo "quero comer algo picante", ele prepara um prato por intuição, você prova e diz "mais salgado", ele adiciona sal. O sabor pode surpreender, mas se outro amigo cozinhar, o resultado será completamente diferente.
- Spec Coding = Você escreve uma receita: "20g de pasta de pimenta doubanjiang, 150g de fatias de carne, 50g de aipo, refogue em fogo alto por 2 minutos, adicione 3g de açúcar antes de retirar do fogo". Diferentes chefs seguindo a receita produzem sabores altamente consistentes.
2. Definições de ambos
| Dimensão | Vibe Coding | Spec Coding |
|---|---|---|
| Outros nomes | Programação orientada por sensação, improviso com prompt | Programação orientada por especificação, documentação primeiro |
| Forma de entrada | "Me ajude a fazer uma página de login bonita, com um toque tecnológico" | "A página de login deve incluir campos de email/senha, caixa de seleção 'lembrar-me', botão de envio; frontend usa React + Tailwind; regras de validação do formulário: formato de email, senha com comprimento ≥8; em caso de falha, exibir mensagem de erro em vermelho..." |
| Modo de uso da IA | Conversacional, iterativo: dar direção geral → ver saída → ajustar | Engenharia: primeiro escrever PRD/especificação técnica detalhada → IA gera código baseado na especificação |
| Envolvimento humano | Baixo: depende da criatividade da IA, humano só avalia "se parece certo" | Alto: humano primeiro faz design/arquitetura, IA principalmente executa |
| Cenários típicos | Prototipagem rápida, ferramentas pessoais, exploração de UI, código criativo | Sistemas de produção, trabalho em equipe, código que precisa ser mantido/testado |
3. Comparação dos fluxos de trabalho
Fluxo do Vibe Coding
- Ideia vaga: "Quero escrever um crawler para pegar o ranking do Zhihu."
- Escrever o primeiro prompt: Pedir diretamente à IA para gerar código.
- Executar → Erro → Copiar o erro de volta → IA modifica.
- Achar a interface feia → "Deixe aquele botão mais arredondado, mude o fundo para um gradiente azul" → IA altera.
- Falta funcionalidade → "Adicione uma função para salvar em CSV" → IA adiciona.
- Repetir os passos 3-5 até "parecer bom o suficiente".
Fluxo do Spec Coding
- Escrever documento de especificação: Definir entradas/saídas, estruturas de dados, tratamento de erros, requisitos de desempenho, requisitos não funcionais (como logs, rate limiting).
- Dividir a especificação em tarefas: Por exemplo, Tarefa 1: Implementar a função
fetch_hot_topics()seguindo a assinatura da API na spec. - Fazer a IA implementar cada tarefa: O prompt inclui assinatura da função, comentários, expectativas de casos de teste.
- Revisão e verificação manual: Garantir conformidade com a especificação, executar testes unitários.
- Integração e regressão.
4. Comparação de prós e contras
| Característica | Vibe Coding | Spec Coding |
|---|---|---|
| Velocidade inicial | Muito rápida, protótipo em minutos | Lenta, precisa escrever documentos e dividir tarefas |
| Qualidade do código | Baixa (pode ser redundante, inconsistente, com bugs ocultos) | Alta (legível, testável, alinhado à arquitetura) |
| Facilidade de manutenção | Ruim, outros não entendem "por que foi escrito assim" | Boa, especificação serve como documentação |
| Dependência do LLM | Muito alta, trocar de modelo pode mudar completamente a saída | Moderada, desde que a especificação seja clara, diferentes modelos podem produzir estruturas semelhantes |
| Dificuldade de depuração | Difícil, não se sabe a lógica do código | Fácil, verificar item por item conforme a spec |
| Adequado para trabalho em equipe | Quase impossível | Sim (spec serve como contrato de comunicação) |
| Determinismo da saída | Baixo, resultados podem variar a cada conversa | Alto, mesma spec produz saída estável |
5. Sugestões de uso na prática
"No trabalho, vibe coding e spec coding não são uma escolha binária, mas sim usados de forma híbrida, aplicando a abordagem adequada ao cenário:
- Na fase de exploração (quando a escolha técnica ou o estilo de UI são incertos), use Vibe Coding para validar rapidamente diferentes opções, como 'escreva um componente de cartão com Tailwind para ver o efeito'.
- Assim que a abordagem for decidida, mude imediatamente para Spec Coding: transforme o protótipo bem-sucedido em uma especificação clara (entradas/saídas, condições de contorno, tratamento de erros) e peça à IA ou a um humano para reescrever o código de produção rigorosamente de acordo com a spec.
O modo puro Vibe é adequado apenas para scripts descartáveis ou ferramentas internas; para sistemas que precisam de manutenção a longo prazo e uso por múltiplas pessoas, Spec Coding é um requisito rigoroso."
评论
暂无已展示的评论。
发表评论(匿名)