AI serija intervjua 14: Razlika između vibe coding i spec coding?
Ovo je problem sa kojim se suočava većina programera. Vibe Coding i Spec Coding su dve potpuno različite radne paradigme u programiranju uz pomoć velikih jezičkih modela (LLM). Njihova ključna razlika leži u: da li je „ulaz“ koji dajete AI nejasna senzacija ili precizna specifikacija.
1. Jednostavan primer sa kuvanjem
- Vibe Coding = Kažete prijatelju „Hoću nešto ljuto“, on po osećaju spremi jelo, probate i kažete „Još malo soli“, on doda. Može biti odlično, ali ako drugi prijatelj sprema, biće potpuno drugačije.
- Spec Coding = Napišete recept: „Pasta od pasulja 20g, goveđe meso 150g, celer 50g, brzo pržiti 2 minuta, pre serviranja dodati 3g šećera“. Različiti kuvari po receptu prave isto jelo.
2. Definicije
| Domena | Vibe Coding | Spec Coding |
|---|---|---|
| Alternativni naziv | Osećajno vođeno programiranje, improvizacija sa promptovima | Specifikacijom vođeno programiranje, dokumentacija prva |
| Oblik unosa | „Napravi mi lepu stranicu za prijavu, sa tehnološkim izgledom“ | „Stranica za prijavu treba da sadrži polje za email/lozinku, checkbox za zapamti me, dugme za potvrdu; frontend koristi React + Tailwind; pravila validacije: format emaila, dužina lozinke ≥8; pri grešci prikazati crvenu poruku…“ |
| Način korišćenja AI | Dijaloški, iterativni: dati okvirni smer → videti izlaz → prilagoditi | Inženjerski: prvo napisati detaljnu PRD/tehničku specifikaciju → AI generiše kod na osnovu specifikacije |
| Učešće čoveka | Nisko: oslanja se na AI da bude kreativan, čovek samo procenjuje „da li je u redu“ | Visoko: čovek prvo završi dizajn/arhitekturu, AI uglavnom izvršava |
| Tipični scenariji | Brzi prototipovi, lični alati, UI istraživanje, kreativno kodiranje | Sistemi za produkciju, timski rad, kod koji treba da bude održiv i testabilan |
3. Poređenje tokova rada
Proces Vibe Coding
- Nejasna ideja: „Želim da napišem skrejper, da povučem popularne teme sa Zhihu.“
- Napisati prvi prompt: direktno tražiti AI da generiše kod.
- Pokrenuti → greška → zalepiti grešku nazad → AI menja.
- Osećaj da je interfejs ružan: „Učini to dugme malo zaobljenijim, pozadinu promeni u gradijent plave“ → AI menja.
- Nedostaje funkcija: „Dodaj funkciju za čuvanje u CSV“ → AI dodaje.
- Ponavljati korake 3-5 dok se ne oseti da je „dovoljno dobro“.
Proces Spec Coding
- Napisati dokument specifikacije: definisati ulaz/izlaz, strukture podataka, obradu grešaka, zahteve performansi, nefunkcionalne zahteve (npr. logovanje, ograničenje protoka).
- Podeliti specifikaciju na zadatke: npr. Zadatak 1: implementirati funkciju
fetch_hot_topics(), koja se pridržava API potpisa iz specifikacije. - Za svaki zadatak tražiti AI da implementira: prompt uključuje potpis funkcije, komentare, očekivane test primere.
- Ručni pregled i validacija: osigurati usklađenost sa specifikacijom, pokrenuti jedinične testove.
- Integracija i regresiono testiranje.
4. Poređenje prednosti i mana
| Karakteristika | Vibe Coding | Spec Coding |
|---|---|---|
| Brzina početka | Veoma brzo, prototip za nekoliko minuta | Sporo, potrebno je pisati dokumentaciju, razbijati zadatke |
| Kvalitet koda | Nizak (može biti redundantan, nekonzistentan, skrivene greške) | Visok (čitljiv, testabilan, u skladu sa arhitekturom) |
| Održivost | Loša, kasniji čitaoci ne razumeju „zašto je napisano ovako“ | Dobra, specifikacija je dokumentacija |
| Zavisnost od LLM | Veoma visoka, promena modela može potpuno promeniti izlaz | Srednja, sve dok je specifikacija jasna, različiti modeli mogu proizvesti sličnu strukturu |
| Težina otklanjanja grešaka | Teška, ne zna se odakle logika koda | Laka, provera stavku po stavku prema specifikaciji |
| Pogodnost za timski rad | Skoro nemoguća | Moguća (specifikacija kao ugovor za komunikaciju) |
| Determinisanost izlaza | Niska, svaki dijalog može odlutati | Visoka, ista specifikacija daje stabilan izlaz |
5. Praktični saveti za korišćenje
„U radu, vibe coding i spec coding se ne biraju kao 'jedno ili drugo', već se kombinuju, koristeć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 da brzo testirate različite opcije, na primer 'napiši karticu komponentu sa Tailwind-om da vidim kako izgleda'.
- Kada se opcija odabere, odmah pređite na Spec Coding: preokrenite uspešni prototip u jasnu specifikaciju (ulaz/izlaz, granični uslovi, obrada grešaka), a zatim neka AI ili čovek striktno prema specifikaciji napišu produkcijski kod.
Čisti Vibe mod je pogodan samo za jednokratne skripte ili interne alate; za sisteme koji se dugo održavaju i koje koristi više ljudi, Spec Coding je obavezan.“
评论
暂无已展示的评论。
发表评论(匿名)