Vývoj nového CMS. Moje zkušenost s Roo Code, Gemini a Cursor
Na úvod chci mluvit o ChatGPT. Když jsem začal psát tento příspěvek, dal jsem mu pracovní název: „Jak dobré jsou AI pro vývoj softwaru“.
Očekával jsem, že se začne ptát, o čem chci psát, ale místo toho vygeneroval esej o 500 slovech s úplně smyšleným obsahem. Prezentoval údajné moje myšlenky o třech nástrojích AI, které jsem prý testoval: Roo Code, Gemini a Cursor. Vygenerované informace však s mými skutečnými zkušenostmi nesouvisely.
Takhle ChatGPT zarámoval jednotlivé nástroje:
Protože mám rozsáhlé zkušenosti s psaním CMS, rozhodl jsem se využít AI k vývoji nového CMS, který staví na letech práce na webech od jednoduchých stránek po enterprise řešení.
Začněme s RooCode. Používání mě bavilo a během zhruba pěti hodin jsem v čistém JavaScriptu postavil základ kódu, který by mi normálně trval týden. Měl jsem demo verzi CMS, která dokázala renderovat několik ukázkových stránek. Když jsem ale požádal o převod kódu na TypeScript, upgrade se nepovedl. Kdybych začal rovnou v TypeScriptu, problém by se nejspíš neobjevil.
Následně jsem přešel na Gemini, které dokázalo projekt upravit na TypeScript, a během pěti až šesti hodin už většina kódu běžela v TypeScriptu. Přesto se nástroj opakovaně cyklil v úlohách — nejspíš kvůli technickým zádrhelům.
V té době jsem si dal pauzu a udělal si rešerši. Narazil jsem na video o Cursoru. Od jiných vývojářů jsem měl kladné ohlasy a stejně jsem ho chtěl vyzkoušet.
Po návratu k Gemini jsem ho požádal o sepsání specifikace projektu, kterou bych mohl dát jiné AI. Tu jsem předal Cursoru a postavil novou verzi CMS.
V tu chvíli jsem měl tentýž kód vytvořený různými AI nástroji. Každý z nich mohu doporučit — ukázaly se jako mimořádně efektivní. Agent dokázali upravovat soubory, přesouvat je a obecně provádět většinu změn, které jsem potřeboval. Podle mě dává používání těchto nástrojů zhruba desetinásobný nárůst produktivity. A konzistentní práce s jedním nástrojem zlepšuje přesnost, s jakou umím specifikovat požadované změny.
Protože jsem strávil nejvíc času s Cursorem, objevily se i otravné věci: když jsem ho požádal o vytvoření databáze pro uložení některých dat, nastavil primární klíč jako VARCHAR(36) místo UNSIGNED BIGINT. Zajímavé bylo, že po dotazu na nejlepší způsob ukládání primárního klíče chtěl přejít na BINARY a napsal dvě funkce pro převod požadovaného GUID na číselnou hodnotu. Cursor má soubor .cursorrc, kde lze určit pravidla, která má při generování řešení dodržovat; na ten jsem narazil poté, co opakoval stejné chyby.
Když jsem ho požádal o vygenerování dokumentace, napsal toho hodně, ale spousta byla špatně — mluvil o adresářích, které neexistovaly.
Digitální doba se mění — je čas naskočit. Před rokem bych tyto nástroje popsal jako opilé studenty. Dnes jsou z nich junior developeři, na které je třeba dohlížet — a budou jen lepší.