AI píše špatný a nebezpečný kód? Píše přesně takový, jaký si řeknete

Znáte to z LinkedInu i z hospody: „AI generuje nekvalitní kód." „Je to bezpečnostní časovaná bomba." „Za dva roky to nikdo neudrží." A pak obligátní pointa: skutečný programátor by AI na produkční kód nikdy nepustil.
Máme za sebou stovky hodin vývoje s AI v produkci — a tenhle článek je odpověď, kterou skeptikům dáváme. Ne proto, že by kritika byla úplně mimo. Ale proto, že míří na špatný terč.
V čem mají skeptici pravdu
Začněme poctivě, protože bez toho by tenhle text byl jen další fanouškovská agitka.
Ano — když necháte AI generovat kód bez zadání, bez kontextu a bez kontroly, výsledek bude průměrný až nebezpečný. Studie o zranitelnostech v AI generovaném kódu existují a nejsou vymyšlené. „Vibe coding", kdy někdo bez znalosti vývoje naklikává celou aplikaci a výstup rovnou nasadí, produkuje přesně ty katastrofy, které kolují po sítích: SQL injection, API klíče v kódu, žádná validace vstupů, nula testů.
Jenže teď ta důležitá otázka: čí je to selhání?
Když juniorovi zadáte „udělej mi login" bez jediného slova o bezpečnosti, bez code review a bez testů, a on vám dodá formulář s heslem v plaintextu — je to selhání juniora, nebo vaše? Když totéž uděláte externí agentuře? Když to samé zadáte AI?
Nástroj se změnil. Pravidla řemesla ne.
AI píše takový kód, jaký si řeknete
Tady je teze celého článku: AI negeneruje špatný kód. Generuje kód přesně odpovídající kvalitě zadání a procesu kolem něj.
Prompt je zadání. A pro zadání platí totéž, co platilo posledních padesát let softwarového inženýrství: vágní zadání → náhodný výsledek. Rozdíl je jen v tom, že AI vám ten náhodný výsledek dodá za třicet sekund místo za dva týdny, takže se špatný proces projeví rychleji a viditelněji.
Konkrétně: když napíšete „udělej endpoint pro upload souborů", dostanete endpoint pro upload souborů. Nic víc jste si neřekli. Když napíšete „udělej endpoint pro upload souborů — validuj typ a velikost, ukládej mimo webroot s náhodným názvem, přidej rate limiting jako u ostatních endpointů a napiš k tomu testy", dostanete přesně tohle. Zkuste si to. Ten rozdíl není v modelu, ten rozdíl je v zadání.
- ✗Jednořádkový prompt bez kontextu projektu
- ✗Bezpečnost a udržitelnost se nezmíní ani slovem
- ✗Výstup se zkopíruje a rovnou nasadí
- ✗Žádné testy, žádné review, žádná statická analýza
- ✗Jeden obří prompt na celou aplikaci najednou
- ✓AI zná pravidla projektu: konvence, architekturu, zakázané vzory
- ✓Bezpečnost, výkon a udržitelnost jsou explicitní část zadání
- ✓Každý výstup projde code review — strojovým i lidským
- ✓Testy, lint a typecheck běží automaticky, selhání vrací práci zpět
- ✓Práce je rozdělená na malé ověřitelné kroky
Čtyři pilíře, které dělají rozdíl
1. Explicitní zadání
AI neví, že vám záleží na bezpečnosti, dokud jí to neřeknete — stejně jako to nevěděl žádný dodavatel před ní. Profesionální práce s AI znamená mít standardy zapsané a vynucované: jaké konvence projekt používá, co se nesmí (řetězené SQL, tajemství v kódu, závislosti bez prověření), co musí mít každá změna (testy, ošetření chyb, dokumentaci). Jednou zapsat, pokaždé vynutit. My tomu říkáme pravidla projektu a AI je čte před každým úkolem.
2. Orchestrace
Nikdo příčetný nezadá člověku „napiš celý e-shop" jedním e-mailem. S AI je to stejné. Velká práce se dělí na malé, samostatně ověřitelné kroky; každý krok má jasný vstup, výstup a kritérium hotovosti. Na složitější věci nasazujeme víc AI agentů s různými rolemi — jeden píše, druhý dělá oponenta a hledá díry, třetí ověřuje, že se nic nerozbilo. Zní to jako sci-fi, ale je to jen stará dobrá dělba práce a čtyři oči, akorát rychleji.
3. Ověřování
Tohle je bod, kde „hejteři" paradoxně popisují náš vlastní workflow, jen si myslí, že neexistuje. Žádný AI výstup nejde do produkce bez ověření. Code review, statická analýza, typová kontrola, lint, build. Selže-li cokoli z toho, práce se vrací. AI mimochodem umí být i brutálně účinný reviewer vlastní práce — když jí review zadáte jako samostatný úkol s čerstvým pohledem, najde chyby, které by prošly leckterým lidským review.
4. Testování
Kód bez testů byl špatný nápad před AI a je špatný nápad s ní — jen se to s ní aspoň dá rychle napravit, protože testy píše ochotně a dobře. U nás platí: nová funkce bez testu neexistuje a před nasazením se změna reálně spustí a proklikne, ne jen „zkompilovalo se to". Psali jsme o tom celý článek: co se stane, když se testování přeskočí — a AI na tom nic nezměnila.
„Ale já viděl AI kód a byl hrozný"
Věřím. My taky — viděli jsme hrozný kód od AI, od agentur, od seniorů s dvaceti lety praxe i od sebe samých. Hrozný kód není vynález roku 2023.
Podstatné je, co bylo kolem toho kódu. Skoro pokaždé, když nám někdo ukáže odstrašující AI příklad, chybí tam všechno výše uvedené: zadání mělo jednu větu, bezpečnost nikdo nezmínil, review neproběhlo, testy neexistují. To není důkaz, že AI neumí psát kód. To je důkaz, že špatný proces produkuje špatný výsledek bez ohledu na to, kdo v něm píše písmenka.
A ještě jedna nepříjemná pravda pro obě strany: AI je zesilovač. Dobrému týmu s pevným procesem dramaticky zvedne rychlost i kvalitu — víc času zbyde na architekturu, edge cases a testy, protože mechanické psaní zlevnělo. Týmu bez procesu zrychlí produkci technického dluhu. AI nerozhoduje, kterým směrem se zesílí. To je vaše práce.
Checklist pro férovou diskusi
Až vám příště někdo řekne, že AI píše nebezpečný a neudržitelný kód, zeptejte se ho:
- Bylo v zadání slovo o bezpečnosti, výkonu nebo konvencích projektu?
- Měla AI k dispozici kontext projektu a jeho pravidla?
- Prošel výstup code review — lidským nebo aspoň strojovým?
- Existují testy a spustil je někdo?
- Ověřil někdo funkčnost v reálném běhu, ne jen „že se to zkompilovalo"?
Pět otázek. Pokud je odpověď pětkrát „ne", pak diskuse není o kvalitě AI — je o kvalitě procesu. A pokud je odpověď pětkrát „ano" a výsledek je přesto špatný, rádi si ten případ poslechneme, protože takové vidíme vzácně.
Mimochodem — web, na kterém tento článek čtete, je z velké části postaven s pomocí AI. Pod lidským vedením, s pravidly projektu, code review, typovou kontrolou a testy před každým nasazením. Posuďte kvalitu sami: je rychlý, bezpečný a vyvíjí se každý týden.
Závěr: řemeslo se nezměnilo, zlevnilo
Historie se opakuje. Stejné debaty se vedly o kompilátorech („skutečný programátor píše assembler"), o open source knihovnách („cizímu kódu nemůžeš věřit") i o cloudu („data mimo náš server, nikdy"). Pokaždé vyhrál ten, kdo se novou páku naučil používat s disciplínou — ne ten, kdo ji ignoroval, ani ten, kdo ji používal bezhlavě.
AI ve vývoji je dnes přesně tady. Není to náhrada inženýrského myšlení. Je to jeho násobitel — a znaménko určujete vy.
U nás v Reactive Studiu stavíme s pomocí AI produkční aplikace za měsíční paušál — s procesem popsaným výše. Jestli vás zajímá, jak by to vypadalo u vašeho projektu, rezervujte si konzultaci nebo si za dvě minuty spočítejte cenu.


