AI serija intervju 14: Razlika između vibe coding i spec coding?
Ovo je problem s kojim se suočava većina programera. Vibe Coding i Spec Coding su dva potpuno različita radna paradigma kada se programira uz pomoć velikih jezičkih modela (LLM). Njihova ključna razlika je: da li je vaš 'unos' AI-ju nejasan osjećaj ili precizna specifikacija.
1. Jednostavan opis razlike između vibe coding i spec coding na primjeru kuhanja
- Vibe Coding = Kažete prijatelju "Želim nešto ljuto", on po osjećaju isprži jelo, probate i kažete "još malo slano", on doda sol. Okus može biti odličan, ali drugi prijatelj bi ispržio potpuno drugačije.
- Spec Coding = Napišete recept: "Pixian douban 20g, govedina u kriškama 150g, celer u komadima 50g, brzo prženje na jakoj vatri 2 minute, prije skidanja s vatre dodati 3g šećera". Različiti kuhari po receptu dobiju visoko konzistentan okus.
2. Definicije oba pristupa
| Dimenzija | Vibe Coding | Spec Coding |
|---|---|---|
| Alternativni naziv | Programiranje vođeno osjećajem, improvizacija pomoću prompta | Programiranje vođeno specifikacijom, dokumentacija na prvom mjestu |
| Oblik unosa | "Napravi mi lijepu login stranicu, sa tehnološkim osjećajem" | "Login stranica treba sadržavati polja za email/lozinku, checkbox 'Zapamti me', dugme za potvrdu; frontend koristi React + Tailwind; pravila validacije obrasca: format emaila, dužina lozinke ≥8; pri grešci prikazati crvenu poruku..." |
| Način korištenja AI-ja | Dijaloški, iterativno: dati opći smjer → pogledati izlaz → prilagoditi | Inženjerski: prvo napisati detaljan PRD/tehničku specifikaciju → AI generira kod na osnovu specifikacije |
| Ljudski angažman | Nizak: oslanjanje na AI za kreativnost, čovjek samo procjenjuje 'da li je osjećaj dobar' | Visok: čovjek prvo završi dizajn/arhitekturu, AI uglavnom izvršava |
| Tipični scenariji | Brzi prototipovi, lični alati, UI istraživanje, kreativno kodiranje | Produkcioni sistemi, timski rad, potreba za održivim/testabilnim kodom |
3. Poređenje radnih tokova
Vibe Coding tok
- Nejasna ideja: "Želim napisati crawler za preuzimanje trending tema sa Zhihu."
- Napisati prvi prompt: direktno tražiti AI da generira kod.
- Pokrenuti → greška → zalijepiti grešku nazad → AI ispravlja.
- Osjećaj da je interfejs ružan → "Zaokruži to dugme, promijeni pozadinu u plavi gradijent" → AI mijenja.
- Funkcionalnost nedostaje → "Dodaj mogućnost čuvanja u CSV" → AI dodaje.
- Ponavljati korake 3-5 dok ne bude "osjećaj da je dovoljno dobro".
Spec Coding tok
- Napisati specifikacioni dokument: jasno definisati ulaz/izlaz, strukture podataka, obradu grešaka, zahtjeve performansi, nefunkcionalne zahtjeve (npr. logovanje, ograničenje brzine).
- Podijeliti specifikaciju na zadatke: npr. Zadatak 1: implementirati funkciju
fetch_hot_topics()prema API potpisu iz specifikacije. - Pustiti AI da realizuje svaki zadatak: prompt uključuje potpis funkcije, komentare, očekivane test slučajeve.
- Ljudska provjera i validacija: osigurati usklađenost sa specifikacijom, pokrenuti jedinične testove.
- Integracija i regresija.
4. Poređenje prednosti i mana
| Karakteristika | Vibe Coding | Spec Coding |
|---|---|---|
| Brzina početka | Vrlo brzo, prototip za nekoliko minuta | Sporo, potrebno pisati dokumentaciju, razbijati zadatke |
| Kvaliteta koda | Niska (moguće redundantan, nedosljedan, skriveni bugovi) | Visoka (čitljiv, testabilan, u skladu s arhitekturom) |
| Održivost | Loša, novi programeri ne razumiju "zašto je ovako napisano" | Dobra, specifikacija je dokumentacija |
| Zavisnost od LLM | Vrlo visoka, promjena modela može potpuno promijeniti izlaz | Srednja, ako je specifikacija jasna, različiti modeli mogu proizvesti sličnu strukturu |
| Težina debugovanja | Teško, ne zna se odakle logika koda | Lako, provjeriti stavku po stavku prema specifikaciji |
| Pogodnost za timski rad | Gotovo nemoguće | Moguće (specifikacija kao komunikacijski ugovor) |
| Determinizam izlaza | Nizak, rezultati dijaloga mogu varirati | Visok, ista specifikacija daje stabilan izlaz |
5. Praktične preporuke za korištenje
Na poslu, vibe coding i spec coding se ne biraju isključivo, već se kombinovano koriste, primjenjujući odgovarajući pristup u odgovarajućoj situaciji:
- U fazi istraživanja (kada niste sigurni u tehnološki izbor ili UI stil), koristite Vibe Coding za brzu provjeru različitih opcija, npr. "napiši karticu komponentu pomoću Tailwinda da vidim kako izgleda".
- Čim se opcija odredi, odmah prebacite na Spec Coding: obrnuto organizujte uspješni prototip u jasnu specifikaciju (ulaz/izlaz, granični uslovi, obrada grešaka), a zatim pustite AI ili čovjeka da striktno po specifikaciji napiše produkcijski kod.
Čisti Vibe način je prikladan samo za jednokratne skripte ili interne alate; za sisteme koji zahtijevaju dugoročno održavanje i više korisnika, Spec Coding je obavezan.
评论
暂无已展示的评论。
发表评论(匿名)