← 返回列表

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

  1. Nejasna ideja: "Želim napisati crawler za skupljanje popularnih tema s Zhihua."
  2. Napišeš prvi prompt: izravno tražiš AI da generira kod.
  3. Pokreneš → pogreška → zalijepiš pogrešku natrag → AI ispravi.
  4. Osjećaš da je sučelje ružno → "Zaoblji taj gumb, promijeni pozadinu u gradijent plave" → AI promijeni.
  5. Nedostaje funkcionalnost → "Dodaj mogućnost spremanja u CSV" → AI doda.
  6. Ponavljaš 3-5 dok ne "osjetiš da je dovoljno dobro".

Spec Coding tijek

  1. Napišeš specifikacijski dokument: definiraš ulaz/izlaz, strukture podataka, rukovanje pogreškama, zahtjeve performansi, nefunkcionalne zahtjeve (npr. logiranje, ograničenje brzine).
  2. Razdvojiš specifikaciju na zadatke: npr. zadatak 1: implementirati funkciju fetch_hot_topics() prema API signaturi iz specifikacije.
  3. Pusti AI da implementira zadatke pojedinačno: prompt sadrži signaturu funkcije, komentare, očekivane testne slučajeve.
  4. Ručna provjera i verifikacija: osigurati da je u skladu sa specifikacijom, pokrenuti jedinične testove.
  5. 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."

评论

暂无已展示的评论。

发表评论(匿名)