AI-serie sollicitatie 14: Verschil tussen vibe coding en spec coding
Dit is een probleem waar de meeste programmeurs mee te maken krijgen. Vibe Coding en Spec Coding zijn twee fundamenteel verschillende werkmethoden bij het programmeren met behulp van grote taalmodellen (LLM). Het kernverschil is: of je 'invoer' aan de AI een vaag gevoel is of een precieze specificatie.
1. Aan de hand van koken als voorbeeld om het verschil tussen vibe coding en spec coding eenvoudig te beschrijven
- Vibe Coding = Je zegt tegen een vriend 'Ik wil pittig eten', de vriend kookt op gevoel een gerecht, jij proeft en zegt 'iets zouter', hij voegt zout toe. De smaak kan verrassend zijn, maar een andere vriend zou heel anders koken.
- Spec Coding = Je schrijft een recept: 'Pixian bonenpasta 20g, rundvleesreepjes 150g, selderijstukjes 50g, op hoog vuur roerbakken 2 minuten, voor het van het vuur halen 3g suiker toevoegen'. Verschillende koks die het recept volgen, krijgen een zeer consistente smaak.
2. Definitie van beide
| Dimensie | Vibe Coding | Spec Coding |
|---|---|---|
| Alternatieve naam | Gevoelsgestuurd programmeren, prompt improvisatie | Specificatiegestuurd programmeren, documentatie eerst |
| Invoervorm | "Maak een mooie inlogpagina voor me, met een technologisch gevoel" | "Inlogpagina moet e-mail/wachtwoord invoervelden bevatten, 'Onthoud mij' checkbox, verzendknop; front-end gebruik React + Tailwind; formuliervalidatie: e-mailformaat, wachtwoordlengte ≥8; bij fout rood bericht weergeven..." |
| AI-gebruikswijze | Dialoogvorm, iteratief: geeft globale richting → bekijk output → pas verder aan | Technisch: schrijf eerst gedetailleerde PRD/technische specificatie → AI genereert code op basis van specificatie |
| Menselijke betrokkenheid | Laag: afhankelijk van AI voor creativiteit, mens alleen verantwoordelijk voor 'voelt het goed?' | Hoog: mens voltooit eerst ontwerp/architectuur, AI voert voornamelijk uit |
| Typische scenario's | Snelle prototypes, persoonlijke tools, UI-verkenning, creatief coderen | Productiesystemen, teamwerk, code die onderhoudbaar/testbaar moet zijn |
3. Vergelijking van werkstromen
Vibe Coding stroom
- Vaag idee: "Ik wil een crawler schrijven om de populaire lijst van Zhihu te scrapen."
- Eerste prompt schrijven: Laat AI direct code genereren.
- Uitvoeren → foutmelding → plak foutmelding terug → AI past aan.
- Voelt de interface lelijk → "Maak die knop ronder, verander achtergrond in verloopblauw" → AI past aan.
- Functie ontbreekt → "Voeg een functie toe om naar CSV op te slaan" → AI voegt toe.
- Herhaal 3-5 tot 'voelt goed genoeg'.
Spec Coding stroom
- Specificatiedocument schrijven: Definieer invoer/uitvoer, datastructuren, foutafhandeling, prestatie-eisen, niet-functionele vereisten (zoals loggen, snelheidsbegrenzing).
- Specificatie opsplitsen in taken: Bijv. taak1: implementeer
fetch_hot_topics()functie, volg API handtekening in spec. - Elke taak door AI laten implementeren: prompt bevat functiehandtekening, opmerkingen, verwachtingen van testgevallen.
- Menselijke review en verificatie: Zorg dat het voldoet aan specificatie, voer unittesten uit.
- Integratie en regressie.
4. Voor- en nadelen vergelijking
| Kenmerk | Vibe Coding | Spec Coding |
|---|---|---|
| Opstartsnelheid | Zeer snel, binnen enkele minuten een prototype | Langzaam, moet documentatie schrijven, taken opsplitsen |
| Codekwaliteit | Laag (kan overbodig, inconsistent, verborgen bugs zijn) | Hoog (leesbaar, testbaar, voldoet aan architectuur) |
| Onderhoudbaarheid | Slecht, latere lezers begrijpen niet 'waarom is het zo geschreven' | Goed, specificatie is documentatie |
| Afhankelijkheid van LLM | Zeer hoog, modelwisseling kan totaal andere output geven | Gemiddeld, zolang specificatie duidelijk is, kunnen verschillende modellen vergelijkbare structuur produceren |
| Moeilijkheidsgraad debuggen | Moeilijk, weet niet waar de logica van de code vandaan komt | Makkelijk, controleer punt voor punt volgens spec |
| Geschikt voor teamwerk | Bijna onmogelijk | Wel (spec als communicatiecontract) |
| Outputdeterminisme | Laag, resultaten kunnen per dialoog verschillen | Hoog, dezelfde spec geeft stabiele output |
5. Praktische gebruikssuggesties
"In de praktijk kies je niet tussen vibe coding en spec coding, maar meng je ze, gebruik de juiste aanpak voor de juiste situatie:
- In de verkenningsfase (wanneer technische keuzes of UI-stijl nog onzeker zijn), gebruik Vibe Coding om snel verschillende opties te testen, bijvoorbeeld 'schrijf een kaartcomponent met Tailwind om het effect te zien'.
- Zodra het plan vaststaat, schakel dan onmiddellijk over naar Spec Coding: werk het succesvolle prototype terug naar duidelijke specificaties (invoer/uitvoer, randvoorwaarden, foutafhandeling) en laat AI of een mens de productiecode strikt volgens de spec herschrijven.
Zuivere vibe-modus is alleen geschikt voor eenmalige scripts of interne tools; voor systemen die langdurig onderhouden moeten worden en door meerdere mensen worden gebruikt, is Spec Coding een harde vereiste."
评论
暂无已展示的评论。
发表评论(匿名)