AI-serieintervju 14: Skillnaden mellan vibe coding och spec coding
Detta är en fråga som de flesta programmerare ställs inför. Vibe Coding och Spec Coding är två helt olika arbetsparadigm när man använder stora språkmodeller (LLM) för att programmera. Den centrala skillnaden är: ger du AI:n en vag känsla eller en exakt specifikation som input.
1. En enkel skillnad mellan vibe coding och spec coding med matlagning som exempel
- Vibe Coding = Du säger till en vän "Jag vill ha något starkt", vännen improviserar en rätt, du smakar och säger "Lite mer salt", han tillsätter salt. Smaken kan vara fantastisk, men en annan vän skulle tillaga en helt annan rätt.
- Spec Coding = Du skriver ett recept: "20 g Pixian doubanjiang, 150 g nötköttsskivor, 50 g selleristjälkar, woka på hög värme i 2 minuter, tillsätt 3 g socker före servering". Olika kockar som följer receptet får en mycket likartad smak.
2. Definitioner
| Dimension | Vibe Coding | Spec Coding |
|---|---|---|
| Alternativa namn | Känslodriven programmering, prompt-improvisation | Specifikationsdriven programmering, dokumentation först |
| Inputform | "Skapa en snygg inloggningssida med en teknisk känsla" | "Inloggningssidan ska innehålla e-post/lösenordsfält, en 'Kom ihåg mig'-kryssruta och en skicka-knapp; frontend med React + Tailwind; formvalideringsregler: e-postformat, lösenordslängd ≥ 8; vid fel, visa röd varning..." |
| AI-användning | Dialogbaserad, iterativ: ange ungefärlig riktning → se output → justera | Ingenjörsmässig: skriv detaljerad PRD/teknisk specifikation → AI genererar kod baserat på specifikationen |
| Mänsklig inblandning | Låg: förlitar sig på AI:s kreativitet, människan avgör bara "känns det rätt" | Hög: människan gör design/arkitektur, AI utför mest |
| Typiska scenarier | Snabb prototyp, personliga verktyg, UI-utforskning, kreativ kodning | Produktionssystem, teamarbete, kod som måste vara underhållbar/testbar |
3. Jämförelse av arbetsflöden
Vibe Coding-flöde
- Vag idé: "Jag vill skriva en crawler som hämtar Zhihus hetlistor."
- Skriv första prompten: Be AI:n generera kod direkt.
- Kör → fel → klistra in felet → AI fixar.
- Känns gränssnittet fult → "Gör knappen rundare, ändra bakgrunden till en blå gradient" → AI ändrar.
- Saknar funktion → "Lägg till funktionen att spara till CSV" → AI lägger till.
- Upprepa steg 3-5 tills "det känns okej".
Spec Coding-flöde
- Skriv specifikationsdokument: Definiera input/output, datastrukturer, felhantering, prestandakrav, icke-funktionella krav (t.ex. loggning, rate limiting).
- Dela upp specifikationen i uppgifter: T.ex. uppgift 1: Implementera funktionen
fetch_hot_topics()enligt API-signaturen i specen. - Låt AI implementera uppgift för uppgift: Prompts innehåller funktionssignatur, kommentarer, förväntade testfall.
- Manuell granskning och validering: Säkerställ att specifikationen följs, kör enhetstester.
- Integration och regressionstestning.
4. För- och nackdelar
| Egenskap | Vibe Coding | Spec Coding |
|---|---|---|
| Starttid | Mycket snabb, prototyp på några minuter | Långsam, kräver dokumentation och uppdelning |
| Kodkvalitet | Låg (kan vara redundant, inkonsekvent, dolda buggar) | Hög (läsbar, testbar, arkitekturenlig) |
| Underhållbarhet | Dålig, senare utvecklare förstår inte "varför det är skrivet så" | Bra, specifikationen är dokumentation |
| Beroende av LLM | Mycket högt, byte av modell kan ge helt annan output | Måttligt, så länge specifikationen är tydlig kan olika modeller producera liknande struktur |
| Felsökningssvårighet | Svårt, man vet inte var logiken kommer ifrån | Lätt, kontrollera punkt för punkt enligt specen |
| Lämplig för teamarbete | Nästan omöjligt | Ja (specifikationen fungerar som kommunikationskontrakt) |
| Förutsägbarhet | Låg, resultatet kan variera varje gång | Hög, samma spec ger stabil output |
5. Praktiska rekommendationer
"I arbetslivet väljer man inte mellan vibe coding och spec coding, utan använder en blandning och väljer rätt metod för rätt situation:
- I utforskningsfasen (när man är osäker på teknikval eller UI-stil) använder man Vibe Coding för att snabbt testa olika alternativ, till exempel 'Skriv en kortkomponent med Tailwind för att se hur det ser ut'.
- När man väl bestämt sig för en lösning byter man omedelbart till Spec Coding: omvandla den lyckade prototypen till en tydlig specifikation (input/output, gränsvillkor, felhantering) och låt sedan AI eller en utvecklare skriva produktionsredo kod enligt specen.
Ren Vibe-läge passar bara för engångsskript eller interna verktyg; för system som ska underhållas länge och användas av många är Spec Coding ett hårt krav."
评论
暂无已展示的评论。
发表评论(匿名)