← 返回列表

Rozhovor o AI #14: Aký je rozdiel medzi vibe coding a spec coding?

Toto je problém, ktorému čelí väčšina programátorov. Vibe Coding a Spec Coding sú dve úplne odlišné pracovné paradigmy pri programovaní s pomocou veľkých jazykových modelov (LLM). Ich kľúčový rozdiel spočíva v tom, či je „vstup“ pre AI nejasný pocit, alebo presná špecifikácia.


1. Jednoduchý príklad s varením na vysvetlenie rozdielu medzi vibe coding a spec coding

  • Vibe Coding = Poviete kamarátovi „Chcem niečo pikantné“, on podľa pocitu uvarí jedlo, ochutnáte a poviete „ešte trochu slanšie“, on pridá soľ. Chuť môže byť úžasná, ale iný kamarát by pripravil úplne iné jedlo.
  • Spec Coding = Napíšete recept: „20 g pixianskej fazuľovej pasty, 150 g hovädzieho plátku, 50 g zeleru, smažiť na prudkom ohni 2 minúty, pred dovarením pridať 3 g cukru.“ Rôzni kuchári podľa tohto receptu pripravia jedlo s vysokou konzistenciou.

2. Definície oboch pojmov

Dimenzie Vibe Coding Spec Coding
Iné názvy Programovanie riadené pocitom, improvizácia s promptmi Programovanie riadené špecifikáciou, dokumentácia ako prvý krok
Forma vstupu „Urob mi peknú prihlasovaciu stránku, ktorá bude pôsobiť technologicky“ „Prihlasovacia stránka musí obsahovať polia pre e-mail a heslo, zaškrtávacie políčko „Zapamätať si ma“, tlačidlo na odoslanie; frontend pomocou React + Tailwind; pravidlá validácie formulára: formát e-mailu, dĺžka hesla ≥ 8; pri neúspechu zobraziť červenú správu...“
Spôsob použitia AI Konverzačný, iteratívny: zadanie približného smeru → pozretie výstupu → dolaďovanie Inžiniersky: najprv podrobný PRD/technická špecifikácia → AI generuje kód na základe špecifikácie
Miera zapojenia človeka Nízka: spoliehanie sa na kreativitu AI, človek len posudzuje „či to sedí“ Vysoká: človek navrhuje/architektúru, AI vykonáva
Typické scenáre Rýchle prototypy, osobné nástroje, UI exploration, kreatívne kódovanie Produkčné systémy, tímová spolupráca, kód vyžadujúci udržiavateľnosť/testovateľnosť

3. Porovnanie pracovných postupov

Proces Vibe Coding

  1. Nejasný nápad: „Chcem napísať scraper na stiahnutie horúcich tém z Zhihu.“
  2. Napísanie prvého promptu: Nechať AI priamo vygenerovať kód.
  3. Spustenie → Chyba → Vloženie chyby späť → AI opraví.
  4. Pocit, že UI je škaredé → „Urob to tlačidlo guľatejšie, pozadie zmeň na modrý gradient“ → AI upraví.
  5. Chýbajúca funkcia → „Pridaj funkciu na uloženie do CSV“ → AI pridá.
  6. Cyklus 3-5 až kým „pocitovo nie je hotovo“.

Proces Spec Coding

  1. Vypracovanie špecifikačného dokumentu: Jasne definovať vstupy/výstupy, dátové štruktúry, chybové stavy, požiadavky na výkon, nefunkčné požiadavky (napr. logovanie, obmedzenie rýchlosti).
  2. Rozdelenie špecifikácie na úlohy: Napr. úloha 1: Implementovať funkciu fetch_hot_topics() podľa signatúry v špecifikácii.
  3. Implementácia po jednotlivých úlohách pomocou AI: Prompt obsahuje signatúru funkcie, komentáre, očakávané testovacie prípady.
  4. Manuálna kontrola a validácia: Overenie súladu so špecifikáciou, spustenie jednotkových testov.
  5. Integrácia a regresia.

4. Porovnanie výhod a nevýhod

Vlastnosť Vibe Coding Spec Coding
Rýchlosť začatia Veľmi rýchla, prototyp za pár minút Pomalá, vyžaduje písanie dokumentácie a rozklad úloh
Kvalita kódu Nízka (môže byť redundantný, nekonzistentný, skryté chyby) Vysoká (čitateľný, testovateľný, v súlade s architektúrou)
Udržiavateľnosť Slabá, neskorší čitatelia nechápu „prečo to tak je“ Dobrá, špecifikácia slúži ako dokumentácia
Závislosť na LLM Veľmi vysoká, iný model môže vyprodukovať úplne odlišný výstup Stredná, ak je špecifikácia jasná, rôzne modely vyprodukujú podobnú štruktúru
Náročnosť ladenia Ťažké, nevieme odkiaľ pochádza logika Ľahké, kontrolujeme podľa špecifikácie
Vhodnosť pre tímovú prácu Takmer nemožné Možné (špecifikácia ako komunikačný kontrakt)
Deterministickosť výstupu Nízka, výsledky sa môžu líšiť Vysoká, rovnaká špecifikácia vedie k stabilnému výstupu

5. Praktické odporúčania

„V praxi si nevyberáme medzi vibe coding a spec coding, ale kombinujeme ich a používame vhodný prístup pre danú situáciu:
- V fáze prieskumu (keď nie je istá technológia alebo UI štýl) použite Vibe Coding na rýchle overenie rôznych variantov, napríklad „urob kartový komponent s Tailwindom a pozriem si, ako vyzerá“.
- Akonáhle je variant vybraný, okamžite prejdite na Spec Coding: spätne usporiadajte úspešný prototyp do jasnej špecifikácie (vstupy/výstupy, okrajové podmienky, chybové stavy) a potom nechajte AI alebo človeka prepísať produkčný kód presne podľa špecifikácie.
Čistý Vibe režim je vhodný len pre jednorazové skripty alebo interné nástroje; pre systémy, ktoré sa dlhodobo udržiavajú a používajú viacerí, je Spec Coding nevyhnutnosťou.“

评论

暂无已展示的评论。

发表评论(匿名)