AI-seeria intervjuu 14: vibe coding ja spec coding erinevus?
See on probleem, millega enamik programmeerijaid silmitsi seisab. Vibe Coding ja Spec Coding on kaks erinevat tööparadigmat, mida praegu kasutatakse suurte keelemudelite (LLM) abil programmeerimisel. Nende põhiline erinevus seisneb selles: kas AI-le antud "sisend" on udune tunne või täpne spetsifikatsioon.
1. Lihtne näide toiduvalmistamisega, et kirjeldada vibe coding ja spec coding erinevust
- Vibe Coding = Sa ütled sõbrale "Ma tahan vürtsikat", sõber teeb tunde järgi roa, sa proovid ja ütled "Natuke soolasem", ta lisab soola. Maitse võib olla vapustav, aga teine sõber teeb täiesti erineva.
- Spec Coding = Sa kirjutad retsepti: "Pixiani Doubanjiang 20g, veiseliha viilud 150g, sellerivarred 50g, kõrgel kuumusel praadida 2 minutit, enne serveerimist lisada 3g suhkrut". Erinevad kokad järgivad retsepti ja tulemus on väga ühtlane.
2. Mõlema definitsioon
| Dimensioon | Vibe Coding | Spec Coding |
|---|---|---|
| Teine nimi | Tundepõhine programmeerimine, prompt-improvisatsioon | Spetsifikatsioonipõhine programmeerimine, dokumentatsioon ees |
| Sisendivorm | "Tee mulle ilus sisselogimisleht, mis näeb välja tehnoloogiline" | "Sisselogimisleht peab sisaldama e-posti/parooli sisestusvälju, 'Jäta mind meelde' märkeruutu, esitamisnuppu; frontend kasutab React + Tailwind; vormi valideerimisreeglid: e-posti formaat, parooli pikkus ≥8; ebaõnnestumisel punane teade..." |
| AI kasutamisviis | Dialoogipõhine, iteratiivne: anna ligikaudne suund → vaata väljundit → kohanda | Inseneritöö: kirjuta kõigepealt üksikasjalik PRD/tehniline spetsifikatsioon → AI genereerib spetsifikatsiooni põhjal koodi |
| Inimese osalus | Madal: sõltub AI loovusest, inimene ainult hindab "kas tunne on õige" | Kõrge: inimene teeb esmalt disaini/arhitektuuri, AI peamiselt täidab |
| Tüüpilised stsenaariumid | Kiire prototüüpimine, isiklikud tööriistad, UI uurimine, loov kood | Tootmissüsteemid, meeskonnatöö, vajab hooldatavat/testitavat koodi |
3. Töövoo võrdlus
Vibe Coding protsess
- Hägune idee: "Ma tahan kirjutada robotit, et haarata Zhihu trende."
- Kirjuta esimene prompt: lase AI-l otse kood genereerida.
- Käivita → viga → kleebi viga tagasi → AI parandab.
- Tunne, et liides on kole → "Tee see nupp veidi ümaramaks, taustaks gradient sinine" → AI muudab.
- Funktsioon puudub → "Lisa veel salvestamise funktsioon CSV-sse" → AI lisab.
- Korra sammud 3-5, kuni "tunne on piisavalt hea".
Spec Coding protsess
- Kirjuta spetsifikatsiooni dokument: defineeri sisend/väljund, andmestruktuurid, veakäsitlus, jõudlusnõuded, mittefunktsionaalsed nõuded (nt logimine, piiramine).
- Jaga spetsifikatsioon ülesanneteks: nt ülesanne 1: implementeeri
fetch_hot_topics()funktsioon, järgides spetsifikatsioonis olevat API allkirja. - Lase AI-l iga ülesanne eraldi täita: prompt sisaldab funktsiooni allkirja, kommentaare, testjuhtumite ootusi.
- Inimese poolt ülevaatus ja kontroll: veendu, et vastab spetsifikatsioonile, käivita ühiktests.
- Integratsioon ja regressioon.
4. Plussid ja miinused
| Omadus | Vibe Coding | Spec Coding |
|---|---|---|
| Alustamise kiirus | Väga kiire, mõne minutiga prototüüp | Aeglane, vaja kirjutada dokumenti, jagada ülesandeid |
| Koodi kvaliteet | Madal (võib olla liiast, ebajärjekindel, peidetud vead) | Kõrge (loetav, testitav, vastab arhitektuurile) |
| Hooldatavus | Kehv, hilisemad arendajad ei saa aru "miks nii kirjutati" | Hea, spetsifikatsioon on dokumentatsioon |
| Sõltuvus LLM-ist | Väga kõrge, mudeli vahetamine võib anda täiesti erineva väljundi | Keskmine, kui spetsifikatsioon on selge, erinevad mudelid annavad sarnase struktuuri |
| Silumise raskus | Raske, ei tea, kust koodi loogika tuleb | Lihtne, kontrolli spetsifikatsiooni punkt haaval |
| Sobivus meeskonnatööks | Peaaegu võimatu | Võimalik (spetsifikatsioon on suhtluse leping) |
| Väljundi kindlus | Madal, iga dialoogi tulemus võib triivida | Kõrge, sama spetsifikatsioon annab stabiilse väljundi |
5. Praktilised soovitused kasutamiseks
"Tööl valitakse vibe coding ja spec coding vahel mitte ühte või teist, vaid neid kasutatakse segamini, valides sobiva lahenduse vastavalt olukorrale:
- Uurimisetapis (kui pole kindel tehnoloogiavalik või UI stiil), kasuta Vibe Codingit, et kiiresti erinevaid lahendusi testida, näiteks 'tee Tailwindiga kaardikomponent, et näha, kuidas välja näeb'.
- Kui lahendus on kindel, mine kohe üle Spec Codingile: pane edukas prototüüp tagurpidi kokku selgeks spetsifikatsiooniks (sisend/väljund, piirtingimused, veakäsitlus) ja lase siis AI-l või inimesel rangelt spetsifikatsiooni järgi tootmiskood kirjutada.
Puhas Vibe režiim sobib ainult ühekordseteks skriptideks või sisemisteks tööriistadeks; pikaajalise hoolduse ja mitme kasutaja süsteemide jaoks on Spec Coding kohustuslik."
评论
暂无已展示的评论。
发表评论(匿名)