Vibecoding a AI ve vývoji softwaru – trend nebo budoucnost programování?

Pojem „Vibecoding“ zavedl známý slovensko-kanadský počítačový vědec v oblasti umělé inteligence Andrej Karpathy na Twitteru začátkem tohoto roku. Rychle se ujal jako slangový termín pro zadávání pokynů AI agentům (LLM) v přirozeném jazyce – tedy pomocí „chatu“ s programem – aby generovali, přepisovali nebo ladili kód místo jeho ručního psaní.
Ve svém příspěvku zmínil, že už se nemusí soustředit na samotný kód — zajímá ho jen aplikace, a AI pak vytvoří vše potřebné. Pokud nastane problém, nechá jej opravit AI. Modely dokážou vygenerovat obrovské množství kódu velmi rychle — více, než je možné v rozumném čase přečíst — proto ani všechno nekontroluje. Podle něj jsou LLM už natolik dobré, že jim může většinou důvěřovat.
Je to ale skutečně pravda, nebo spíše nadsázka? Jsou LLM opravdu tak silné, že se blíží „Jarvisovi“ z Iron Mana — tedy že jim jen řeknete, co chcete vytvořit, a ony samy zvolí nejlepší postup? Mohli by se tak všichni vývojáři stát Iron Many? Věřím, že mnohým by se to líbilo.
Bohužel Vás musím zklamat, tam ještě nejsme. Díky více než 70 letům výzkumu v oblasti neuronových sítí a strojového učení dnes chatboti jako ChatGPT dokážou chápat a generovat text, kód a obsah na základě přirozených instrukcí. Skvěle se hodí k sumarizaci informací, odpovídání na otázky, vysvětlování témat či poskytování doporučení. Nedokážou ale zaručit bezchybné informace ani perfektní provedení úkolů. Dokáží dělat samostatné rozhodnutí, ale pouze v uvedeném kontextu. Prozatím však nedokáží plně nahradit člověka.
Když OpenAI v listopadu 2022 zpřístupnila ChatGPT široké veřejnosti, lidé byli ohromeni tím, co dokáže. Během prvních pěti dnů si ho vyzkoušelo více než 1 milion uživatelů. ChatGPT tehdy běžel na jazykovém modelu GPT-3.5, který byl první od OpenAI dostatečně velký na to, aby zvládal smysluplné generování kódu a jeho doplňování.
Bohužel modely stále nejsou dokonalé a vývojáři musí kód kontrolovat, zejména v oblastech jako je bezpečnost, architektura nebo výkon. AI také může kód zbytečně komplikovat (tzv. over-engineering).
OpenAI samozřejmě není jediná firma, která na vývoji LLM pracuje. V následujíících letech uvedlo své první komerční modely hned několik dalších hráčů:
Každá z těchto firem své modely neustále zdokonaluje, aby překonala konkurenci. Každý model má své silné i slabé stránky a často vyniká v jiné oblasti.
Jednotlivé LLM modely jsou průběžně testovány v mnoha oblastech (výkon, bezpečnost, etika, pravdivost…), mezi nimi i v programování. Vyhodnocují se na základě programátorských úloh a měří se jejich úspěšnost.
Podle posledních benchmarků se aktuálně zdá, že v programování vede Claude od Anthropic (zdroj: swebench.com). Jeho silnou stránkou je opravování chyb, práce s rozsáhlými více-souborovými projekty a refaktorování. GPT je mu blízko, ale má lepší schopnosti při práci s více jazyky (Python, Java, JavaScript, Go, Rust). Díky tomu se GPT hodí zejména pro práci s UI, webovými komponentami a menšími skripty.
„Za 5 a více let mohou být LLM modely natolik pokročilé, že požadované programátorské dovednosti budou minimální nebo dokonce neexistující. AI by mohla navrhovat řešení stejně efektivně jako skvělý programátor.“
— Pavel Janko, CTO Moravio
Spolu s modely vznikla řada nástrojů, které zrychlují a zjednodušují práci vývojářů, například:
Liší se v:
Většinu z nich mohou používat i ne-programátoři jako Vibecoding platformy, ovšem jen do určité míry. Hodí se pro učení programování, vytváření jednoduchých skriptů (např. pro Excel), práci s daty, vysvětlování kódu nebo práci s low-code/no-code nástroji (např. Replit, Lovable, Bolt, V0).
U složitějších projektů, ladění chyb, integrace AI kódu a interpretace doporučení AI je ale znalost vývoje stále nezbytná.
Definice Vibecodingu: kreativní, experimentální a hravý způsob psaní kódu.
Má své místo v oblastech:
Vibecoding umožňuje psát kód neuvěřitelnou rychlostí bez ohledu na efektivitu a bezpečnost aplikace nebo osvědčené postupy.
AI-generovaný kód výrazně šetří čas ve fázi návrhu. Prototypování nových funkcí nebo produktů (vytvoření proof of concept) je nyní možné během několika dnů místo týdnů (v závislosti na rozsahu a složitosti). Je to také mnohem dostupnější lidem s omezenými či žádnými programátorskými dovednostmi. AI vám navíc umožní lépe promyslet detaily produktu, jasněji je prezentovat klientovi a dohodnout se na konečné podobě.
Trend ve vývoji softwaru nyní směřuje k návratu k spec-driven přístupu, tedy k přesnému specifikování toho, jak bude produkt nebo software fungovat, ještě před samotným kódováním. (Zdroj) Nejde o nový přístup — používá se už několik let v různém rozsahu. Limitujícím faktorem ale bylo, že specifikace často existovala jako rozsáhlý písemný dokument, který se sdílel a schvaloval s klientem a často byl svázán se smlouvou. Dokument mohl obsahovat návrhy, wireframy, schémata API a další.
Problémy spec-driven vývoje před érou AI:
Naštěstí je to s AI a Vibecodingem nyní mnohem snazší a proveditelnější. Vývojáři nebo produktoví manažeři nyní mohou aplikaci popsat slovy a AI například vygeneruje React aplikaci a dokumentaci. Ta vypadá jako funkční aplikace s pevnými“ daty (bez připojeného API). Vypadá podobně jako reálný produkt; změny lze poměrně snadno promítnout, ale stále to není aplikace připravená do produkce. Může se to využít i pro menší části, například jedinou funkci.
Prototyp lze sdílet v celé organizaci, což umožňuje lidem otestovat obchodní logiku produktu. Je mnohem srozumitelnější než statická grafika nebo klikací wireframe. Jakmile je specifikace finalizována, lze ji snadno převést na vývojové úkoly a dodat AI více kontextu pro tvorbu reálné aplikace.
Pro tento přístup nyní používáme V0, ale u větších projektů potřebujeme nástroje jako Cursor, které zvládnou větší rozsah projektů a kontextů.
Při programování naši programátoři převážně používají Cursor. Je snadný na použití a umožňuje přístup ke kontextu projektu. Také umožňuje měnit modely klidně pro jednotlivé funkce, v závislosti na tom, který model je pro daný úkol nejvhodnější.
Cursor (modely, které ho pohánějí) lze použít k vytváření stránek, detailních zobrazení, modálních oken a typických funkcí běžných webových aplikací. Může také pomoci při vytváření automatizovaných testů, stylování, zobrazování dat a podobných úkolech. Efektivně dokáže generovat základní a přímočarý kód.
Klíčem je používat detailní, cílené instrukce (prompts), uplatňovat selský rozum a pečlivě před použitím zkontrolovat vygenerovaný kód.
V době před AI museli seniorní vývojáři navrhovat celou architekturu aplikace, určit, jak má aplikace fungovat, definovat všechny komponenty a často jim nezbývalo mnoho času na samotné psaní kódu. Zvláště při řízení týmu navíc ještě museli koordinovat práci ostatních vývojářů.
Nyní může AI pomoci generovat kód na úrovni středně pokročilého vývojáře. Co AI stále nedokáže, je plně pochopit celkový kontext aplikace, efektivně určit, jak propojit všechny funkce tak, aby aplikace spolehlivě fungovala, a zajistit, aby byl kód udržitelný.
To mění velikost týmu potřebného pro konkrétní projekty. Obvykle nyní máme pouze jednoho seniorního vývojáře pracujícího s AI. U větších projektů je možné pracovat v týmech, ale musí to dávat smysl — členové týmu musí pracovat na odlišných částech; jinak by to bylo ještě méně efektivní. Rychle vznikají také knihovny a další nástroje (např. pravidla v Cursoru), které pomáhají udržet kontext aplikace a konzistentní kód. Dá se říci, že spoluvývoj na menších projektech je dnes méně efektivní než dříve.
„Vývojáři nyní potřebují novou klíčovou dovednost: schopnost efektivně promptovat LLM. To zahrnuje detailní popis specifikace, čas věnovaný vysvětlení modelu přesně toho, co má být postaveno, a poskytnutí několika ukázek kódu, aby AI mohla generovat konzistentní a spolehlivý výstup.“
— Pavel Janko, CTO ve společnosti Moravio
V Moravio používáme Vibecoding především ve fázi návrhu, kde se zaměřujeme na produkt, uživatelské chování a obchodní logiku. Při samotném vývoji postupujeme opačně než u „vibecodingového“ stylu — máme přesně promyšlený proces, víme, co stavíme a jak to má být postavené. AI pak používáme pouze pro generování kódu na základě těchto specifikací.
Existují také další oblasti, kde naši vývojáři využívají AI pro vyšší efektivitu. Skvěle se hodí k shrnování a pochopení velmi složitých témat (např. „Vysvětli, jak funguje šifrování a kryptografie“), jejichž nastudování by vývojářům jinak zabralo mnoho dní. Umožňuje také osvojit si nová témata mnohem rychleji, než by to člověku trvalo při samostatném hledání informací na internetu.
AI mění způsob práce nejen vývojářů a designérů, ale i testerů. Umí generovat testy v nástrojích jako Cursor, existují ale už i nové nástroje, které dokážou testery zčásti nahradit tím, že využívají akceptační kritéria funkcí. Naši testeři dnes AI využívají k psaní lepších a obsáhlejších testů v prostředí Visual Studio Code, Copilot, Claude.ai a samozřejmě ChatGPT.
V Moravio využíváme sílu AI ke zrychlení inovací, aniž bychom slevili z kvality, bezpečnosti a uživatelského zážitku.
Recommended Reads for You
New blog posts you may be interested in
Jakub Bílý
Vedoucí obchodu