AI-serie interview 14: Forskellen mellem vibe coding og spec coding?
Dette er et problem, som de fleste programmører står over for. Vibe Coding og Spec Coding er to forskellige arbejdsmetoder, når man programmerer med hjælp fra store sprogmodeller (LLM). Deres kerneforskel er: om dit "input" til AI'en er en vag fornemmelse eller en præcis specifikation.
1. For at illustrere forskellen mellem vibe coding og spec coding med madlavning
- Vibe Coding = Du siger til en ven "jeg har lyst til noget stærkt", vennen laver en ret på gefühl, du smager og siger "lidt mere salt", og han tilsætter salt. Smagen kan være fantastisk, men hvis en anden ven laver den, bliver den helt anderledes.
- Spec Coding = Du skriver en opskrift: "20g Pixian doubanjiang, 150g oksekødsskiver, 50g selleristængler, wok ved høj varme i 2 minutter, tilsæt 3g sukker før servering". Forskellige kokke, der følger opskriften, får en meget ensartet smag.
2. Definition af de to begreber
| Dimension | Vibe Coding | Spec Coding |
|---|---|---|
| Alias | Følelsesdrevet programmering, prompt-improvisation | Specifikationsdrevet programmering, dokumentation først |
| Inputform | "Lav en flot login-side, der ser teknologisk ud" | "Login-siden skal indeholde e-mail/adgangskode-felter, en 'Husk mig'-checkbox og en send-knap; frontend bruger React + Tailwind; valideringsregler: e-mail-format, adgangskode ≥8 tegn; vis rød fejlmeddelelse ved fejl..." |
| Brug af AI | Samtalebaseret, iterativ: giv en overordnet retning → se output → juster | Ingeniørmæssig: skriv detaljeret PRD/teknisk spec → AI genererer kode baseret på spec |
| Menneskelig involvering | Lav: afhænger af AI's kreativitet, mennesket tjekker kun "føles det rigtigt" | Høj: mennesket laver design/arkitektur, AI udfører primært |
| Typiske scenarier | Hurtig prototyping, personlige værktøjer, UI-udforskning, kreativ kodning | Produktionssystemer, teamsamarbejde, kode der skal være vedligeholdelsesvenlig/testbar |
3. Sammenligning af arbejdsgange
Vibe Coding-flow
- Uklar idé: "Jeg vil skrive en webscraper, der henter indhold fra Zhihu's populære liste."
- Skriv første prompt: Bed AI om at generere kode direkte.
- Kør → fejl → indsæt fejlmeddelelse til AI → AI retter.
- Synes grænsefladen er grim → "Gør knappen mere rund, skift baggrund til en blå gradient" → AI retter.
- Manglende funktion → "Tilføj en funktion til at gemme som CSV" → AI tilføjer.
- Gentag trin 3-5 indtil "det føles nogenlunde rigtigt".
Spec Coding-flow
- Skriv specifikationsdokument: Definer input/output, datastrukturer, fejlhåndtering, præstationskrav, ikke-funktionelle krav (f.eks. logning, rate limiting).
- Opdel spec i opgaver: F.eks. opgave 1: Implementer
fetch_hot_topics()-funktionen, der overholder spec'ens API-signatur. - Få AI til at implementere opgave for opgave: Prompten indeholder funktionssignatur, kommentarer og forventede testcases.
- Manuel gennemgang og validering: Sikre at den overholder spec'en, kør enhedstests.
- Integration og regression.
4. Sammenligning af fordele og ulemper
| Egenskab | Vibe Coding | Spec Coding |
|---|---|---|
| Hastighed ved opstart | Meget hurtig, prototype på få minutter | Langsom, kræver dokumentation og opgavedeling |
| Kodekvalitet | Lav (kan være overflødig, inkonsekvent, skjulte bugs) | Høj (læsbar, testbar, arkitekturvenlig) |
| Vedligeholdelsesvenlighed | Dårlig, senere læsere forstår ikke "hvorfor det er skrevet sådan" | God, spec'en er dokumentation |
| Afhængighed af LLM | Meget høj, skift af model kan give helt anderledes output | Medium, så længe spec'en er klar, kan forskellige modeller producere lignende struktur |
| Fejlfinding | Svær, man ved ikke hvor logikken kommer fra | Let, tjek punkt for punkt i spec'en |
| Egnet til teamsamarbejde | Næsten umuligt | Muligt (spec'en er kommunikationskontrakt) |
| Determinisme i output | Lav, resultatet kan variere fra samtale til samtale | Høj, samme spec giver stabilt output |
5. Praktiske råd til brug i virkeligheden
"I arbejdet vælger man ikke mellem vibe coding og spec coding, men bruger dem i kombination, afhængigt af situationen:
- I udforskningsfasen (når man er usikker på teknologivalg eller UI-stil) bruger man Vibe Coding til hurtigt at afprøve forskellige løsninger, f.eks. 'skriv en kort-komponent med Tailwind for at se, hvordan den ser ud'.
- Når først løsningen er bestemt, skifter man straks til Spec Coding: dokumentér succésprototypen baglæns som en klar spec (input/output, grænsetilfælde, fejlhåndtering), og få derefter AI eller en udvikler til at omskrive produktionskoden strengt efter spec'en.
Ren Vibe-tilstand er kun egnet til engangsscripts eller interne småværktøjer; for systemer, der skal vedligeholdes længe og bruges af mange, er Spec Coding et hårdt krav."
评论
暂无已展示的评论。
发表评论(匿名)