AI série rozhovorů 14: Rozdíl mezi vibe coding a spec coding?
Toto je problém, kterému čelí většina programátorů. Vibe Coding a Spec Coding jsou dvě zcela odlišné pracovní paradigmata při programování s pomocí velkých jazykových modelů (LLM). Jejich základní rozdíl spočívá v tom: zda je „vstup“, který dáváte AI, vágní pocit, nebo přesná specifikace.
I. Na příkladu vaření jednoduše popišme rozdíl mezi vibe coding a spec coding
- Vibe Coding = Řeknete příteli: „Chci něco pikantního.“ Přítel podle pocitu uvaří jídlo. Ochutnáte a řeknete: „Ještě trochu slanější.“ On přidá sůl. Chuť může být úžasná, ale jiný přítel by uvařil úplně jinak.
- Spec Coding = Napíšete recept: „20g Pixian doubanjiang (fermentovaná chilli pasta), 150g hovězího plátku, 50g celeru nakrájeného na kousky, rychle osmahnout na vysokém ohni 2 minuty, před odstavením přidat 3g cukru.“ Různí kuchaři podle receptu uvaří jídlo s velmi podobnou chutí.
II. Definice obou
| Dimenze | Vibe Coding | Spec Coding |
|---|---|---|
| Jiný název | Pocitově řízené programování, improvizace na základě promptu | Specifikací řízené programování, dokumentace na prvním místě |
| Forma vstupu | „Udělej mi hezkou přihlašovací stránku, ať vypadá technologicky.“ | „Přihlašovací stránka musí obsahovat pole pro e-mail/heslo, zaškrtávací políčko ‚Zapamatovat si mě‘, tlačítko pro odeslání; frontend používej React + Tailwind; pravidla validace formuláře: formát e-mailu, délka hesla ≥8; při neúspěchu zobraz červenou zprávu…“ |
| Způsob použití AI | Konverzační, iterativní: zadáte přibližný směr → podíváte se na výstup → upravíte | Inženýrský: nejprve napište podrobné PRD/technickou specifikaci → AI generuje kód na základě specifikace |
| Míra zapojení člověka | Nízká: spoléhá na kreativitu AI, člověk jen posuzuje „jestli to vypadá dobře“ | Vysoká: člověk nejprve dokončí návrh/architekturu, AI převážně vykonává |
| Typické scénáře | Rychlé prototypy, osobní nástroje, průzkum UI, kreativní kódování | Produkční systémy, týmová spolupráce, kód vyžadující udržovatelnost/testovatelnost |
III. Porovnání pracovních postupů obou
Postup Vibe Coding
- Neurčitý nápad: „Chci napsat scraper na horká témata Zhihu.“
- Napsání prvního promptu: Nechat AI rovnou vygenerovat kód.
- Spuštění → chyba → vložení chyby zpět → AI opraví.
- Cítíte, že UI je ošklivé → „Udělej to tlačítko kulatější, pozadí změň na modrý gradient“ → AI upraví.
- Chybí funkce → „Přidej funkci pro uložení do CSV“ → AI přidá.
- Opakujte kroky 3-5, dokud nemáte pocit, že je to „hotové“.
Postup Spec Coding
- Napište specifikační dokument: Jasně definujte vstupy/výstupy, datové struktury, ošetření chyb, výkonnostní požadavky, nefunkční požadavky (např. logování, rate limiting).
- Rozdělte specifikaci na úkoly: Např. úkol 1: Implementujte funkci
fetch_hot_topics(), dodržujte API signaturu ze specifikace. - Nechte AI implementovat úkol po úkolu: Prompt obsahuje signaturu funkce, komentáře, očekávané testovací případy.
- Lidská kontrola a ověření: Ujistěte se, že odpovídá specifikaci, spusťte unit testy.
- Integrace a regrese.
IV. Porovnání výhod a nevýhod
| Vlastnost | Vibe Coding | Spec Coding |
|---|---|---|
| Rychlost nasazení | Velmi rychlá, prototyp za pár minut | Pomalá, vyžaduje psaní dokumentace, rozdělení úkolů |
| Kvalita kódu | Nízká (může být redundantní, nekonzistentní, skryté chyby) | Vysoká (čitelný, testovatelný, odpovídá architektuře) |
| Udržovatelnost | Špatná, pozdější vývojáři nechápou „proč je to napsáno tak“ | Dobrá, specifikace slouží jako dokumentace |
| Závislost na LLM | Velmi vysoká, změna modelu může vést k úplně jinému výstupu | Střední, pokud je specifikace jasná, různé modely produkují podobnou strukturu |
| Obtížnost ladění | Obtížné, nevíte, odkud logika pochází | Snadné, kontrolujte podle specifikace bod po bodu |
| Vhodnost pro týmovou spolupráci | Téměř nemožné | Možné (specifikace jako komunikační kontrakt) |
| Determinismus výstupu | Nízký, výsledky se mohou při každé konverzaci lišit | Vysoký, stejná specifikace vytváří stabilní výstup |
V. Praktické rady pro použití v reálném světě
„V práci si nevybíráme mezi vibe coding a spec coding, ale používáme je smíšeně a vhodnou metodu volíme podle situace:
- V průzkumné fázi (když si nejste jisti technologickým výběrem nebo stylem UI) použijte Vibe Coding k rychlému ověření různých možností, například „Napiš komponentu karty pomocí Tailwindu, ať vidím, jak vypadá.“
- Jakmile je rozhodnuto, okamžitě přepněte na Spec Coding: z úspěšného prototypu zpětně vytvořte jasnou specifikaci (vstupy/výstupy, okrajové podmínky, ošetření chyb) a poté nechte AI nebo člověka přepsat produkční kód přesně podle specifikace.Čistě Vibe režim je vhodný pouze pro jednorázové skripty nebo interní nástroje; pro systémy, které je třeba dlouhodobě udržovat a používat více lidmi, je Spec Coding tvrdým požadavkem.“
评论
暂无已展示的评论。
发表评论(匿名)