AI serija intervju 14: Razlika između 'vibe coding' i 'spec coding'?
Ovo je problem s kojim se većina programera suočava. Vibe Coding i Spec Coding su dvije potpuno različite radne paradigme pri programiranju uz pomoć velikih jezičnih modela (LLM). Njihova ključna razlika leži u tome: dajete li AI-ju 'ulaz' kao nejasan osjećaj ili preciznu specifikaciju.
1. Jednostavan opis razlike između 'vibe coding' i 'spec coding' na primjeru kuhanja
- Vibe Coding = Kažeš prijatelju "Želim nešto ljuto", prijatelj po osjećaju isprži jelo, ti probaš i kažeš "još malo soli", on doda sol. Okus može biti nevjerojatan, ali drugi prijatelj bi ispržio potpuno drugačije.
- Spec Coding = Napišeš recept: "Pixian doubanjiang 20g, govedina 150g, celer 50g, pržiti na jakoj vatri 2 minute, prije posluživanja dodati 3g šećera". Različiti kuhari po receptu će dobiti vrlo sličan okus.
2. Definicije
| Dimenzija | Vibe Coding | Spec Coding |
|---|---|---|
| Alternativni naziv | Osjećajem vođeno programiranje, improvizacija uputama | Specifikacijom vođeno programiranje, dokumentacija prva |
| Oblik unosa | "Napravi mi lijepu prijavnu stranicu, neka bude tehnološki" | "Prijavna stranica treba sadržavati polja za e-mail/lozinku, checkbox 'Zapamti me', gumb za slanje; frontend koristi React + Tailwind; pravila validacije obrasca: format e-maila, lozinka dužine ≥8; u slučaju greške prikazati crvenu obavijest..." |
| Način korištenja AI-ja | Dijaloški, iterativno: dati grubi smjer → vidjeti izlaz → prilagoditi | Inženjerski: prvo napisati detaljnu PRD/tehničku specifikaciju → AI generira kod na temelju specifikacije |
| Ljudska uključenost | Niska: oslanja se na AI za kreativnost, čovjek samo "osjeća je li dobro" | Visoka: čovjek prvo završi dizajn/arhitekturu, AI uglavnom izvršava |
| Tipični scenariji | Brzi prototip, osobni alati, istraživanje UI-ja, kreativno kodiranje | Sustavi za produkciju, timski rad, kod koji zahtijeva održivost/testabilnost |
3. Usporedba tijeka rada
Vibe Coding tijek
- Nejasna ideja: "Želim napisati crawler za skupljanje popularnih tema s Zhihua."
- Napišeš prvi prompt: izravno tražiš AI da generira kod.
- Pokreneš → pogreška → zalijepiš pogrešku natrag → AI ispravi.
- Osjećaš da je sučelje ružno → "Zaoblji taj gumb, promijeni pozadinu u gradijent plave" → AI promijeni.
- Nedostaje funkcionalnost → "Dodaj mogućnost spremanja u CSV" → AI doda.
- Ponavljaš 3-5 dok ne "osjetiš da je dovoljno dobro".
Spec Coding tijek
- Napišeš specifikacijski dokument: definiraš ulaz/izlaz, strukture podataka, rukovanje pogreškama, zahtjeve performansi, nefunkcionalne zahtjeve (npr. logiranje, ograničenje brzine).
- Razdvojiš specifikaciju na zadatke: npr. zadatak 1: implementirati funkciju
fetch_hot_topics()prema API signaturi iz specifikacije. - Pusti AI da implementira zadatke pojedinačno: prompt sadrži signaturu funkcije, komentare, očekivane testne slučajeve.
- Ručna provjera i verifikacija: osigurati da je u skladu sa specifikacijom, pokrenuti jedinične testove.
- Integracija i regresija.
4. Usporedba prednosti i nedostataka
| Značajka | Vibe Coding | Spec Coding |
|---|---|---|
| Brzina učenja/pokretanja | Vrlo brzo, za nekoliko minuta prototip | Sporo, potrebno pisati dokumentaciju i razbijati zadatke |
| Kvaliteta koda | Niska (moguće redundantan, nekonzistentan, skriveni bugovi) | Visoka (čitljiv, testabilan, u skladu s arhitekturom) |
| Održivost | Loša, kasniji programeri ne razumiju "zašto je ovako napisano" | Dobra, specifikacija je dokumentacija |
| Ovisnost o LLM-u | Vrlo visoka, promjena modela može dati potpuno drugačiji izlaz | Srednja, sve dok je specifikacija jasna, različiti modeli mogu proizvesti sličnu strukturu |
| Težina debugiranja | Teško, ne zna se odakle logika u kodu | Lako, provjerava se točku po točku prema specifikaciji |
| Pogodnost za timski rad | Gotovo nemoguće | Moguće (specifikacija je ugovor za komunikaciju) |
| Determinizam izlaza | Nizak, rezultati mogu varirati iz dijaloga u dijalog | Visok, ista specifikacija daje stabilan izlaz |
5. Praktični savjeti za korištenje
"Na poslu, 'vibe coding' i 'spec coding' se ne biraju isključivo, već se kombiniraju, koristeći odgovarajuću metodu u prikladnoj situaciji:
- U fazi istraživanja (kad niste sigurni u tehnološki izbor ili UI stil), koristite Vibe Coding za brzu provjeru različitih pristupa, npr. 'napiši kartičnu komponentu s Tailwindom da vidim kako izgleda'.
- Čim se odlučite za rješenje, odmah pređite na Spec Coding: uspješni prototip pretvorite u jasne specifikacije (ulaz/izlaz, rubne uvjete, rukovanje pogreškama), a zatim neka AI ili čovjek strogo prema specifikaciji napiše produkcijski kod.
Čisti Vibe način prikladan je samo za jednokratne skripte ili interne alate; za sustave koji zahtijevaju dugoročno održavanje i korištenje od strane više ljudi, Spec Coding je obavezan."
评论
暂无已展示的评论。
发表评论(匿名)