Během posledních dvou let jsme s mým týmem ve společnosti Work & Co testovali a postupně integrovali nástroje pro kódování umělé inteligence, jako je Copilot, Cursor, Claude a ChatGPT, abychom nám pomohli dodávat webové zážitky, které používají masy. Přiznám se, že po počáteční skepsi a pár aha momentech si různé nástroje AI našly cestu do mého každodenního používání. Postupem času se začal rozrůstat seznam aplikací, u kterých jsme zjistili, že má smysl nechat AI převzít kontrolu, a tak jsem se rozhodl podělit se o několik praktických případů použití nástrojů AI pro to, čemu říkám „zodpovědný vývojář“. Co myslím odpovědným vývojářem? Musíme se ujistit, že dodáváme kvalitní kód, jak očekávají naši akcionáři a klienti. Naše příspěvky (tj. žádosti o stažení) by se neměly stát zátěží pro naše kolegy, kteří budou muset naši práci kontrolovat a testovat. Také v případě, že pracujete pro společnost: Nástroje, které používáme, musí být schváleny naším zaměstnavatelem. Je třeba správně zacházet s citlivými aspekty, jako je zabezpečení a soukromí: Nevkládejte tajemství, zákaznická data (PII) nebo proprietární kód do nástrojů bez schválení zásad. Zacházejte s tím jako s kódem od cizího člověka na internetu. Vždy testujte a ověřujte. Poznámka: Tento článek předpokládá velmi základní znalost nástrojů pro kódování AI, jako je Copilot ve VSCode nebo Cursor. Pokud vám to všechno zní úplně nové a neznámé, videonávody Github Copilot pro vás mohou být fantastickým výchozím bodem.
Užitečné aplikace nástrojů pro kódování AI Poznámka: Následující příklady se zaměří především na práci ve webových aplikacích založených na JavaScriptu, jako jsou React, Vue, Svelte nebo Angular. Jak pochopit neznámou kódovou základnu Není neobvyklé pracovat na zavedených kódových základnách a připojení k rozsáhlé starší kódové základně může být zastrašující. Jednoduše otevřete svůj projekt a svého AI agenta (v mém případě Copilot Chat ve VSCode) a začněte se ptát stejně, jako byste se zeptali kolegy. Obecně si rád povídám s jakýmkoliv agentem umělé inteligence stejně jako s ostatními lidmi. Zde je podrobnější příklad výzvy: "Dejte mi přehled architektury na vysoké úrovni: vstupní body, směrování, auth, datová vrstva, nástroje pro sestavení. Poté vypište 5 souborů ke čtení v pořadí. Vysvětlení považujte za hypotézy a potvrďte přechodem na odkazované soubory."
Můžete klást doplňující otázky jako „Jak podrobně funguje směrování?“ nebo „Promluvte si se mnou o procesu a metodách autentizace“ a zavede vás to užitečnými pokyny, jak posvítit trochu světla do tmy neznámé kódové základny. Třídění prolomení změn při upgradu závislostí Aktualizace balíčků npm, zvláště když přicházejí s přerušovanými změnami, může být únavná a zdlouhavá práce a přinutí vás ladit značné množství regresí. Nedávno jsem musel upgradovat knihovnu pro vizualizaci dat plotly.js o jednu hlavní verzi z verze 2 na verzi 3 a v důsledku toho přestalo fungovat označování os v některých grafech. Dále jsem se zeptal ChatGPT: "Aktualizoval jsem svůj projekt Angular, který používá Plotly. Aktualizoval jsem plotly.js - balíček dist z verze 2.35.2 na 3.1.0 - a nyní jsou štítky na ose x a y pryč. Co se stalo?"
Agent se okamžitě vrátil s řešením (viz níže). Poznámka: Před odesláním opravy jsem stále ověřil vysvětlení podle oficiálního průvodce migrací.
Bezpečná replikace refaktorů napříč soubory Rostoucí databáze kódů zcela jistě odhalují příležitosti pro konsolidaci kódu. Všimnete si například duplikace kódu napříč soubory, které lze extrahovat do jediné funkce nebo komponenty. V důsledku toho se rozhodnete vytvořit sdílenou komponentu, kterou lze místo toho zahrnout, a provést tento refaktor v jednom souboru. Nyní namísto ručního provádění těchto změn ve zbývajících souborech požádáte svého agenta, aby za vás zavedl refaktor. Agenti vám umožňují vybrat více souborů jako kontext. Jakmile je refaktor pro jeden soubor hotový, mohu přidat refaktorované i nedotčené soubory do kontextu a vyzvat agenta, aby zavedl změny do jiných souborů, jako je tento: „Zopakujte také změny, které jsem provedl v souboru A, do souboru B“. Implementace funkcí v neznámých technologiích Jedním z mých oblíbených aha-momentů při používání nástrojů pro kódování AI bylo, když mi to pomohlo vytvořit docela složitou animovanou gradientní animaci v GLSL, což je jazyk, který jsem docela neznal. Na nedávném projektu naši návrháři přišli s animovaným přechodem jako stavem zatížení na 3D objektu. Tento koncept se mi opravdu líbil a chtěl jsem našim klientům dodat něco jedinečného a vzrušujícího. Theproblém: Na implementaci jsem měl jen dva dny a GLSL má poměrně strmou křivku učení. Opět mi přišel vhod nástroj AI (v tomto případě ChatGPT) a začal jsem ho docela jednoduše vyzývat, aby mi vytvořil samostatný HTML soubor, který vykreslí plátno a velmi jednoduchý animovaný barevný přechod. Krok za krokem jsem vyzval AI, aby tomu přidala více jemností, dokud jsem nedosáhla slušného výsledku, abych mohla začít integrovat shader do své skutečné kódové základny. Konečný výsledek: Naši klienti byli velmi spokojeni a díky umělé inteligenci jsme dodali komplexní funkci v krátkém čase. Psaní testů Podle mých zkušeností je na projektech málokdy dost času na neustálé psaní a udržování řádné sady jednotkových a integračních testů, a navíc mnoho vývojářů úkol psaní testů opravdu nebaví. Vyzvat svého pomocníka AI, aby za vás nastavil a napsal testy, je zcela možné a lze to provést v krátkém čase. Samozřejmě byste se jako vývojáři měli stále ujistit, že vaše testy skutečně prozkoumají kritické části vaší aplikace a dodržují rozumné zásady testování, ale můžete „outsourcovat“ psaní testů našemu pomocníkovi AI. Příklad výzvy: "Napište testy jednotek pro tuto funkci pomocí Jest. Pokryjte šťastnou cestu, okrajové případy a režimy selhání. Vysvětlete, proč každý test existuje."
Můžete dokonce předat osvědčené postupy testování testovacího guru Kenta C. Doddse jako pokyny svému agentovi, například níže:
Vnitřní nástroje Poněkud podobně jako výše zmíněný příklad shaderu jsem měl nedávno za úkol analyzovat duplikaci kódu v kódové základně a porovnávat před a po refaktoru. Určitě to není triviální úkol, pokud nechcete jít časově náročnou cestou ručního porovnávání souborů. S pomocí Copilota jsem vytvořil skript, který za mě analyzoval duplikaci kódu, uspořádal a seřadil výstup do tabulky a exportoval jej do Excelu. Pak jsem to udělal o krok dál. Když byl náš refaktor kódu hotový, vyzval jsem agenta, aby vzal můj existující excelový list jako základ, přidal aktuální stav duplikace do samostatných sloupců a vypočítal rozdíl. Aktualizace kódu napsaného před dlouhou dobou Nedávno mě napadl jeden můj starý klient, protože postupem času už na jeho webu několik funkcí nefungovalo správně. Háček: Web byl vytvořen téměř před deseti lety a JavaScript a SCSS používaly poměrně staré kompilační nástroje, jako je requireJS, a nastavení vyžadovalo starší verzi Node.js, která by na mém MacBooku 2025 ani neběžela. Ruční aktualizace celého procesu sestavování by mi zabrala dny, a tak jsem se rozhodl vyzvat agenta AI: „Můžete aktualizovat proces sestavování JS a SCSS na štíhlý stack 2025 jako Vite?“ Určitě ano a asi po hodině dolaďování s agentem jsem přepnul sestavení SCSS a JS na Vite a mohl jsem se soustředit na skutečné opravy chyb. Jen se ujistěte, že jste správně ověřili výstupní a kompilované soubory, když provádíte takové integrální změny v procesu sestavení. Shrnutí A Vypracování Chtěli byste shrnout všechny své nedávné změny kódu do jedné věty pro zprávu o odevzdání nebo máte dlouhý seznam odevzdání a chtěli byste je shrnout do tří odrážek? Žádný problém, ať se o to postará umělá inteligence, ale nezapomeňte to zkontrolovat. Příklad výzvy je stejně jednoduchý jako zaslání zprávy druhému člověku: „Shrňte mé nedávné změny ve stručných odrážkách“. Moje rada je používat GPT pro psaní opatrně a stejně jako u kódu prosím zkontrolujte výstup před odesláním nebo odesláním. Doporučení a osvědčené postupy Výzva Jednou z nepříliš zřejmých výhod používání umělé inteligence je, že čím konkrétnější a přizpůsobené jsou vaše výzvy, tím lepší je výstup. Proces nabádání agenta AI nás nutí formulovat naše požadavky co nejkonkrétněji, než začneme psát a kódovat. To je důvod, proč jako obecné pravidlo vřele doporučuji být při nabádání co nejkonkrétnější. Ryan Florence, spoluautor knihy Remix, navrhuje jednoduchý, ale účinný způsob, jak tento proces zlepšit tím, že úvodní výzvu dokončí větou: "Než začneme, máte na mě nějaké otázky?"
V tomto okamžiku se AI obvykle vrací s užitečnými otázkami, kde můžete objasnit svůj konkrétní záměr a vést agenta k tomu, aby vám poskytl přizpůsobenější přístup pro váš úkol.
Používejte správu verzí a pracujte se stravitelnými kousky Používání správy verzí, jako je git, se hodí nejen při týmové spolupráci na jediné kódové základně, ale také při poskytováníindividuální přispěvatel se stabilními body, ke kterému se lze v případě nouze vrátit. Kvůli své nedeterministické povaze může umělá inteligence někdy zkazit a provést změny, které prostě nejsou užitečné pro to, čeho se snažíte dosáhnout, a nakonec věci nenapravitelně rozbijí. Rozdělení vaší práce do více odevzdání vám pomůže vytvořit stabilní body, ke kterým se můžete vrátit v případě, že věci půjdou stranou. A vaši spoluhráči vám poděkují také, protože budou mít snazší čas zkontrolovat váš kód, když je rozdělen na sémanticky dobře strukturované části. Důkladně zkontrolujte Toto je spíše obecný osvědčený postup, ale podle mého názoru se stává ještě důležitějším při používání nástrojů AI pro vývojovou práci: Buďte prvním kritickým recenzentem svého kódu. Udělejte si čas na procházení změn řádek po řádku, stejně jako byste kontrolovali kód někoho jiného, a svou práci odešlete až poté, co projde vaší vlastní kontrolou. "Dvě věci jsou pro mě právě teď pravdivé: Agenti umělé inteligence jsou úžasní a ohromně zvyšují produktivitu. Jsou to také masivní stroje na plácnutí, pokud vypnete mozek a úplně ho pustíte."— Armin Ronacher ve svém příspěvku na blogu Agent Psychosis: Are We Going Insane?
Závěr a kritické myšlenky Podle mého názoru mohou nástroje pro kódování AI zlepšit naši produktivitu jako vývojářů na denní bázi a uvolnit mentální kapacitu pro více plánování a myšlení na vysoké úrovni. Nutí nás formulovat požadovaný výsledek s pečlivými detaily. Jakákoli umělá inteligence může občas halucinovat, což v podstatě znamená, že spočívá v sebevědomém tónu. Nezapomeňte tedy zkontrolovat a vyzkoušet, zvláště když máte pochybnosti. Umělá inteligence není žádná stříbrná kulka a věřím, že dokonalost a schopnost řešit problémy jako vývojář nikdy nevyjde z módy. Pro vývojáře, kteří svou kariéru teprve začínají, mohou být tyto nástroje velmi lákavé udělat většinu práce za ně. Co se zde může ztratit, je často vyčerpávající a bolestivá práce s chybami a problémy, které je obtížné odladit a vyřešit, alias „brus“. Dokonce i samotný Lee Robinson z Cursor AI to v jednom ze svých příspěvků zpochybňuje:
Nástroje pro kódování AI se vyvíjejí rychlým tempem a jsem nadšený z toho, co přijde příště. Doufám, že vám tento článek a jeho tipy byly užitečné a rádi si některé z nich sami vyzkoušíte.