Colloquio AI Serie 14: Differenza tra vibe coding e spec coding?
Questa è una domanda che molti programmatori si pongono. Vibe Coding e Spec Coding sono due paradigmi di lavoro radicalmente diversi quando si programma con l'aiuto di modelli linguistici di grandi dimensioni (LLM). La loro differenza fondamentale è: l'"input" che dai all'AI è una sensazione vaga o una specifica precisa.
I. Un esempio con la cucina per spiegare la differenza tra vibe coding e spec coding
- Vibe Coding = Dici a un amico "voglio qualcosa di piccante", lui prepara un piatto a intuito, assaggi e dici "più salato", e lui aggiunge sale. Il risultato può essere sorprendente, ma se lo prepara un altro amico, sarà completamente diverso.
- Spec Coding = Scrivi una ricetta: "20g di pasta di peperoncino di Pixian, 150g di fette di manzo, 50g di gambi di sedano, saltare in padella a fuoco vivace per 2 minuti, aggiungere 3g di zucchero prima di spegnere". Cuochi diversi seguendo la ricetta ottengono un gusto molto uniforme.
II. Definizioni
| Dimensione | Vibe Coding | Spec Coding |
|---|---|---|
| Alias | Programmazione guidata dalle sensazioni, improvvisazione su prompt | Programmazione guidata dalle specifiche, documentazione prima del codice |
| Forma di input | "Fammi una bella pagina di login, con un tocco tecnologico" | "La pagina di login deve includere: campi per email/password, casella 'Ricordami', pulsante di invio; frontend in React + Tailwind; regole di validazione: formato email, lunghezza password ≥ 8; in caso di errore mostrare un messaggio rosso..." |
| Uso dell'AI | Dialogico, iterativo: si dà una direzione generale → si osserva l'output → si aggiusta | Ingegneristico: si scrive prima un PRD/specifica tecnica dettagliata → l'AI genera codice basato sulla specifica |
| Coinvolgimento umano | Basso: si dipende dalla creatività dell'AI, l'umano giudica solo "se sembra giusto" | Alto: l'umano completa prima la progettazione/l'architettura, l'AI esegue principalmente |
| Scenario tipico | Prototipazione rapida, piccoli strumenti personali, esplorazione UI, scrittura creativa di codice | Sistemi pronti per la produzione, collaborazione di squadra, codice manutenibile/testabile |
III. Confronto dei flussi di lavoro
Processo Vibe Coding
- Idea vaga: "Voglio scrivere un web scraper per la classifica di Zhihu."
- Scrivi il primo prompt: chiedi direttamente all'AI di generare il codice.
- Esegui → errore → incolla l'errore → l'AI modifica.
- L'interfaccia è brutta → "Rendi il bottone più arrotondato, sfondo blu sfumato" → l'AI modifica.
- Mancano funzionalità → "Aggiungi la funzione di salvare in CSV" → l'AI aggiunge.
- Ripeti i passi 3-5 finché "sembra a posto".
Processo Spec Coding
- Scrivi un documento di specifica: definisci input/output, strutture dati, gestione errori, requisiti prestazionali, requisiti non funzionali (es. log, rate limiting).
- Dividi la specifica in task: es. Task 1: implementa la funzione
fetch_hot_topic(), rispettando la firma API nella specifica. - Fai implementare ogni task all'AI: il prompt include la firma della funzione, commenti, test case attesi.
- Revisione e verifica umana: assicurati che sia conforme alla specifica, esegui test unitari.
- Integrazione e regressione.
IV. Confronto vantaggi/svantaggi
| Caratteristica | Vibe Coding | Spec Coding |
|---|---|---|
| Velocità iniziale | Molto alta, prototipo in pochi minuti | Bassa, serve scrivere documenti e suddividere task |
| Qualità del codice | Bassa (possibile ridondanza, incoerenza, bug nascosti) | Alta (leggibile, testabile, conforme all'architettura) |
| Manutenibilità | Scarsa, chi viene dopo non capisce "perché è stato scritto così" | Buona, la specifica funge da documentazione |
| Dipendenza dall'LLM | Altissima, cambiando modello l'output può essere completamente diverso | Media, se la specifica è chiara, modelli diversi producono strutture simili |
| Difficoltà di debugging | Difficile, non si sa da dove venga la logica | Facile, si controlla punto per punto secondo la specifica |
| Adatto per collaborazione di squadra | Quasi impossibile | Possibile (la specifica è il contratto di comunicazione) |
| Determinismo dell'output | Basso, i risultati possono variare a ogni conversazione | Alto, stessa specifica produce output stabile |
V. Consigli pratici
"Nel lavoro, non si sceglie tra vibe coding e spec coding, ma si usano in modo misto, adottando l'approccio giusto per ogni scenario:
- Nella fase esplorativa (quando non si è certi della scelta tecnica o dello stile UI), usa Vibe Coding per validare rapidamente diverse opzioni, ad esempio 'usa Tailwind per creare un componente card e vediamo l'effetto'.
- Una volta decisa la soluzione, passa immediatamente a Spec Coding: trasforma il prototipo funzionante in una specifica chiara (input/output, casi limite, gestione errori), poi fai riscrivere il codice di produzione dall'AI o da un umano rigorosamente secondo la specifica.
La modalità puramente Vibe è adatta solo per script usa e getta o piccoli strumenti interni; per sistemi da mantenere a lungo e usati da più persone, lo Spec Coding è un requisito imprescindibile."
评论
暂无已展示的评论。
发表评论(匿名)