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
- Nejasný nápad: „Chcem napísať scraper na stiahnutie horúcich tém z Zhihu.“
- Napísanie prvého promptu: Nechať AI priamo vygenerovať kód.
- Spustenie → Chyba → Vloženie chyby späť → AI opraví.
- Pocit, že UI je škaredé → „Urob to tlačidlo guľatejšie, pozadie zmeň na modrý gradient“ → AI upraví.
- Chýbajúca funkcia → „Pridaj funkciu na uloženie do CSV“ → AI pridá.
- Cyklus 3-5 až kým „pocitovo nie je hotovo“.
Proces Spec Coding
- 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).
- Rozdelenie špecifikácie na úlohy: Napr. úloha 1: Implementovať funkciu
fetch_hot_topics()podľa signatúry v špecifikácii. - Implementácia po jednotlivých úlohách pomocou AI: Prompt obsahuje signatúru funkcie, komentáre, očakávané testovacie prípady.
- Manuálna kontrola a validácia: Overenie súladu so špecifikáciou, spustenie jednotkových testov.
- 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.“
评论
暂无已展示的评论。
发表评论(匿名)