Před pár dny jsem na Facebook napsal krátkou glosu na téma, že se nebojím, že mne jako programátora AI připraví o práci. A že vibe coding je super na prototypování, ale na produkci to nepouštějte.
Podle reakcí některých lidí -- jejichž názory na téma nepokládám za zanedbatelné -- se ukazuje, že to bylo špatně pochopeno. Což možná padá na mou hlavu, protože to byla taková poznámka kterou jsem psal těsně předtím, než jsem zalezl za vlkem do postele. Takže pojďme probrat toto téma poněkud hlouběji.
Docela příznačná byla reakce Miloše Čermáka, že kodéry to připravuje o práci už teď. Ano, pokud jedinou vaší dovedností je, že znáte nějaký programovací jazyk a dokážete v něm cosi napsat, bojte se AI. Došlo k narovnání situace, kdy firmy z nedostatku lidí najímali jako juniora kohokoliv, kdo uměl zapnout vývojové prostředí. Pokud jste v něm dokázali napsat kód, který se zkompiloval bez chyb, už jste byli medior a když to dělalo aspoň přibližně to co mělo, senior. Přeháním, ale ne moc.
Jenomže psaní kódu není podstatou programování. Vždycky říkám, že jediný okamžik, kdy programátor (nebo chcete-li vývojář) nepracuje je, když píše kód. To už to všechno vymyslel a stačí to jenom naklepat do počítače, to je víceméně mechanická práce. Podstatou práce současného vývojáře je analyzovat problémy a hledat nástroje pro jejich řešení. Ano, zpravidla to zahrnuje psaní nějakého kódu, ale to není podle mého názoru podstatou. Podstatou je znalost kontextu, nejenom z hlediska toho co je v zadání, ale i toho co tam není a mělo by být. Anebo co tam je a být by nemělo.
A to je něco, co vibe coding nedokáže nahradit. Ne použití AI při vývoji jako takové, ale specificky vibe coding: mechanismus, ve kterém uživatel aplikaci vyvíjí pouze pomocí promptů, bez znalosti technologie jako takové, jenom na základě zadání.
Existuje dosti úzký výsek aplikací, pro které je vibe coding použitelný. Jednorázové utilitky, u kterých lze okamžitě na první pohled poznat, zda je výsledek správný nebo ne. Proof of concept aplikace, modely, makety, prototypy, které mají ukázat jak něco rámcově může fungovat, aby si to uživatel mohl vyzkoušet. Nějaké malé aplikace na kterých moc nezáleží, a které běží v nějakém uzavřeném prostředí důvěryhodné sítě.
To není málo. Takových aplikací je celkem dost a dneska většinou nevznikají, protože jsou příliš malé pro tradiční vývojové postupy anebo je jejich vytvoření příliš komplikované, než aby se vyplatilo. Třeba ty makety jsou nedocenitelná věc, protože na nich může zákazník zjistit, že vlastně nechce to co bylo v zadání, protože to neřeší jeho problém. Což je poněkud trapné, když se zjistí po půl roce vývoje, který stál spoustu peněz. Je super zjistit to po pár hodinách promptování.
Martin Malý zase napsal, že to je jako když se akademičtí hudebníci rozčilovali nad punkem, že může hudbu dělat každý, i když nezná noty. Nebo pravověrní elektrotechnici nad Arduinem, které umožnilo dělat elektroniku i lidem, kteří neznají nejenom zákony Kirchhoffovy, ale snad ani svatý zákon Ohmův.
Jenomže to není pravda. Punková muzika nebo Arduino nezpůsobily, že by vyhynuli klasičtí hudebníci nebo elektrotechnici. Ano, vedly k demokratizaci oboru, že hudbu nebo elektroniku začali dělat noví lidé a vedlo to, podle mého názoru, k dobru oboru jako takového. Rozšířilo to obzory všem, kdo nebyli zcela zaslepení. I pravověrní elektrotechnici nakonec začasté vzali na milost Arduino, protože pro mnoho zadání je to prostě cesta nejmenšího odporu, i když to lze udělat mnohem čistěji a komplikovaněji. A mnoho punkerů zjistilo, že znát něco not a hudební teorie se může docela hodit a jejich muziku to vylepší.
S vibe codingem je to něco podobného. Je super, že to otevře svět tvorby software lidem, kteří by se do něj jinak nedostali. A nemálo z nich se postupem času stane skutečnými programátory, vývojáři. No a nám, kteří jimi již jsme, to výrazně ulehčí práci. Nezačneme masivně vibe codovat důležité systémy, ale už dnes většina vývojářů používá AI technologie k tomu, aby mohli skutečně programovat, na vyšší úrovni abstrakce.
Ostatně, už jsme si tím několikrát prošli. Mne nejcitelněji zasáhla revoluce na přelomu devadesátých a nultých let. Předtím bylo programování jenom pro specialisty, potřebovali jste drahé a tajemné nástroje. Ale pak přišel Office 95, první verze Office, v níž se začaly masově vytvářet makra pomocí jazyka VBA (Visual Basic For Applications). A databáze Microsoft Access, která umožnila vytvářet relativně komplexní databáze a grafická rozhraní pro ně. Mnohé sofistikované informační systémy, na kterých jedou velké firmy, mají svůj historický základ v MDB souboru databáze Microsoft Access, kde to navibecodoval ten ze zaměstnanců, který se nejmíň bál toho, že ho počítač pokouše.
Tohle prostředí zrodilo spoustu programátorů, protože lidé po čase zjistili, že jim nestačí vizuální návrhář a nahrávání maker, ale potřebují sofistikovanější technologie - a pokročilejší dovednosti. Včetně autora tohoto textu. S programováním jsem si hrál už předtím, ale první program, který jsem dostal zaplaceno, jsem naprogramoval ve VBA v Excelu 95.
Ty aplikace byly z dnešního pohledu hrozné a nebezpečné. Ale moc to nevadilo, protože běžely v prostředí důvěryhodného počítače, nanejvýš důvěryhodné lokální sítě.
Pokud se má vibe coding udržet, budeme potřebovat vytvořit nějaké podobné prostředí. Což jde výrazně proti "zero trust" trendu posledních několika desetiletí, kdy důvěru klademe v aplikace, ne v síť. V současné době neexistuje způsob, jak bezpečně provozovat vibe codované aplikace v běžných produkčních prostředích, mají-li pracovat s reálnými daty.
Dějiny programování jsou dějinami vzrůstající abstrakce. Začalo to fyzickým propojováním součástek, pokračovalo ručním děrováním jedniček a nul a pásky a štítky, přes strojový kód, nízkoúrovňové jazyky jako JSA (Jazyk Symbolických Adres, asembler), jazyky jako C... až po dnešní platformy jako je Java, C#, Python, JavaScript, Go a další. Nebo deklarativní, specializované jazyky jako XSLT nebo SQL, kde počítači řeknete jaký má být výsledek a on postup vytvoří za vás.
Ale nikdy to neznamenalo zánik programování jako takového a vybití programátorů, co nepotřebného druhu. I když samozřejmě mnozí tvrdí, že poslední opravdové programování bylo to v [zde dosaďte technologii, na níž oni začínali].
Snahy zbavit vývoj software programování tím, že se dá nástroj do ruky nic netušícímu uživateli nejsou nové. Už jsem zmínil VBA a Access, ale do stejné rodiny patří (jenom z Microsoft rybníčku a určitě jsem na mnohé zapomněl) LightSwitch, SharePoint nebo PowerAutomate. Všechno to skončilo stejně: vznikla nová sorta programátorů, kteří šli za hranice toho "vibe" a naučili se programovat.
Jediný způsob, jak by mohla AI toto změnit je příchod AGI (Artifical General Intelligence), ale k tomu máme ještě sakra daleko, pokud je vůbec možné něco takového vytvořit. A k praktické a ekonomické dostupnosti je ještě mnohem dál. Zejména ve chvíli, kdy AI firmy budou muset přestat pálit peníze investorů a začít skutečně vydělávat -- současné dramatické zdražení služeb je jenom začátek.
A ve chvíli, kdy bychom měli AGI, převrátí to svět takovým způsobem, jako dosud nic. Budou to zajímavé časy, pokud budou, ale jsem si dost jistý, že já se toho nedožiju.