ÉRA UMĚLIGENCE (1. díl): Vliv na svět vývojáře

23. 2. 2024

Webový Online Pilot

O umělé inteligenci už bylo napsáno hodně, ale málokdo se zaměřil na to, jak ho používat jako developer. V tomto článku se podíváme na to, jak využívám AI ve své práci programátora. Popíšu pár zkušeností z praxe získané během roků 2023 a 2024, kdy jsem měl možnost pracovat s uměligencí (skvělý výraze díky Davide) z různých perspektiv.

V první řadě musím poděkovat kolegovi Víťovi, který vnesl ChatGPT do na našeho firemního komunikačního nástroje. Do té doby jsem o AI jen slyšel, ale moc jsem tomu nevěřil a neviděl jsem důvod, proč bych ho měl používat. Díky tomu, že mi ho takhle přiblížil, jsem si ho oblíbil a začal jsem ho používat i v jiných kontextech.

Jak s AI komunikuju já – vývojář webových aplikací?

Kontexty použití, na které jsem prozatím narazil. Někomu jsou známé, někdo stále nevěřícně hledí. Těším se až objevím další.

Oficiální aplikace od OpenAI

Základní formy komunikace jsou:

  • Textově
    Běžným vstupem je text – věta nebo odstavec, na který odpoví nějakým dalším výstupem, opět v textu.

  • Lidskou řečí (audio)
    Velmi zajímavá forma komunikace, která je však zatím (pokud je mi známo) dostupná jen v oficiální aplikaci je možnost povídat si s ChatGPT hlasem. Zadat textový požadavek je někdy zdlouhavý a nepraktický, zvlášť v situacích, kde nemáme po ruce klávesnici nebo jsme unaveni a nechce se nám psát. Převod řeči na text není nic nového, takže se nabízelo toto využít.
Hlasový vstup i výstup – konzultace nápadů a jejich proveditelnosti – takhle nějak u sobotního kafe mi vysvětlila, že programování v jazyku VBA pro ní není problém a já s ní pak rychle realizoval myšlenku, kterou jsem dlouho nosil v hlavě

Aplikace ChatGPT je zdarma, ale umožňuje i prémium verzi, která je placená. Platforma OpenAI nabízí také API, skrz které se integruje do jiných aplikací. Dále např. popisuji naše propojení na Zulip.

Integrace do firemního komunikačního nástroje

V naší firmě používáme Zulip – open source komunikační nástroj, který je podobný Slacku (něco jako Messenger, WhatsApp ale pro firemní účely – s možností vláken). Zde byla možnost integrovat ChatGPT přes API. Provoz přes API je trochu levnější než prémium verze a navíc ho platí šéf a my ostatní ho používáme zadarmo. 🙂

Scénáře použití: Kolega má problém a už si sám neví rady. Dosud hledal s pomocí Googlu, StackOverflow, dokumentace nebo soukromě v ChatGPT. Když začne psát do týmového chatu, může mu ChatGPT odpovědět rychleji, než kdyby čekal na odpověď od kolegů. Navíc, když by si ani ChatGPT nevěděl rady, kolega může dříve zaznamenat, že má problém a po očku může sledovat, jestli se ubírá správným směrem. Zná hned kontext problému a nemusí se popisovat znovu. A i když, je třeba jen na mobilu – bez komfortu klávesnice a možnosti pořádně hledat v dokumentacích, může nasměrovat kolegu i ChatGPT na správnou cestu.

Výhody:

  • ostatní hned znají kontext problému
  • lze napomáhat i z mobilu – nasměrovat stručnou myšlenkou, AI dodá omáčku
  • dobrou odpověď může vývojář dostat i když jsou ostatní offline
  • může se ptát i na věci, které by se styděl ptát kolegů (můžeš si vybrat jestli to uvidí nebo ne)

Nevýhodou může být určitý komunikační šum, ale to lze vyřešit například vypnutím notifikací nebo označením vlákna jako resolved.

Integrace do IDE – vývojového prostředí programátora

Tohle je pro mě jako programátora rozhodně nejzajímavější scénář. A tady se ještě budou dít věci. Veškeré integrace sledují motto: „Dobrý sluha, ale zlý pán“. Z pohledu UX (resp. DX – developer experience), je důležité, aby ChatGPT byl vždy k dispozici, ale aby nerušil. Aby byl dostupný, rychlý, přesný, ale aby nebyl na obtíž. Abych mohl běžně dělat dál svou práci.

Jak používám AI v IDE?

Používám momentálně PHPStorm s integrací Copilotu od GitHubu. Kolegá má v PHPStormu Codium. A chci si zkusit i integraci od JetBrains – tam mám vysoké očekávání, protože je to produkt ze stejné dílny a celkově považuji PHPStorm za nejlepší IDE pro PHP, co se týče strojového porozumění kódu.

Současná integrace mi přijde dost dobrá. Já zadám pár písmen/slov nebo napíšu komentář – např. co má být smyslem třídy metody a on mi začne napovídat. Nápověda je šedivě zbarvený text a je na mě jestli ho přijmu (klávesou TAB) nebo ne budu psát dál (případně klávesou ESC – jak mi teď při psaní AI napovědělo). Když ho přijmu, tak se mi doplní kód a můžu ho upravit. Když ho nechci, tak ho můžu ignorovat.

Našeptávání a příjem pomocí klávesy TAB

Domnívám se, že toto AI zkoumá kontext nejen jednoho souboru, ale i celého otevřeného projektu. Díky tomu mi může napovídat i na základě toho, co jsem psal v jiném souboru. Může tak dodržet konvence, které jsem zvolil v jiném souboru a tím přispět k jednotnému stylu kódu.

Jsem zvyklý na nápovědy od IDE. Toto je jenom o krok dál. A je to krok, který mě baví. Vzpomínám si první nápovědu s Cloud9 (víc než 10 let zpět) – tehdy jsem jako začátečník psal CSS a zjistil jsem, že nějaká CSS vlastnost, kterou jsem zapsal, nemá význam v kombinaci s jinou CSS vlastností, kterou jsem tam měl (myslím nějaký padding v kombinaci s box-size). A to byl moment, kdy jsem si uvědomil, že se při psaní kódu můžu učit. A že v tom IDE může sehrát roli učietele.

/* ukázka CSS, která nemá význam */
h1 {
  padding: 10px;
  box-sizing: border-box;
}

/* ukázka CSS, která nemá význam */
h1 {
  padding: 10px;
  box-sizing: border-box;
}

Velmi rád mám také CTRL+SPACE, když píšu v PhpStormu – napovídá mi to názvy tříd, metod, proměnných, konstant. Bez tohoto už mě prostě psát kód nebaví. A teď už ho asi nebudu psát ani bez AI. Nebojím se, že bych si tím mentálně ublížil. Naopak, myslím, že se tím můžu učit a zlepšovat.

Na co se těším v IDE? (a myslím, že PhpStorm bude mít opět navrch)

  • až AI pozná kontext databáze (možná už má, nevím)
  • až AI pomůže refactrovat kód
  • až bude psát commit message (možná už vše umí)

S čím konkrétně mi AI pomáhá?

Otevření hranic do cizích jazyků

Odhodlal jsem se a s pomocí AI napsal malé makro v Excelu (Visual Basic for Applications). To je jazyk, ve kterém už nikdo nechce psát. Ale za jednu noc jsem naplnil ideu, kterou jsem v hlavě už dlouho nosil.

Rychlejší psaní kódu

Tak ne, že by mi SQL bylo úplně cizí, ale… cítím, že SQL teď napíšu rychleji. A nebojím se ani složitějších dotazů, ve kterých bych se zamotal. Není problém si vytvořit nějakou „datovou pumpu“ a trošku si databázi zrefaktorovat. Nebojím se složitých JOINŮ nebo vnoření, které bych v hlavě dlouho zpracovával. Někdy je to sice trošku na oko „prasárna“, ale poslouží účelu (jednorázová oprava data ušetří trvalé prasárny v kódu) a mám ji rychleji.

INSERT INTO wp_postmeta (post_id, meta_key, meta_value)
SELECT new_posts.post_id, new_posts.meta_key, new_posts.new_meta_value
FROM (
  SELECT wp_posts.ID AS post_id, 'uw-ngg-gallery' AS meta_key, SUBSTRING_INDEX(SUBSTRING_INDEX(wp_posts.post_content, 'ids="', -1), '"', 1) AS new_meta_value
  FROM wp_posts
  INNER JOIN wp_term_relationships ON wp_posts.ID = wp_term_relationships.object_id
  LEFT JOIN wp_postmeta ON wp_posts.ID = wp_postmeta.post_id AND wp_postmeta.meta_key = 'uw-ngg-gallery'
  WHERE wp_term_relationships.term_taxonomy_id = '2058' -- jen pro konkrténí kategorii
    AND wp_posts.ID NOT IN (14558, 26165, 33193, 36697, 36884) -- vynechá případy dvou galerií u článku
    AND wp_posts.post_content LIKE '%[ngg%'
    AND wp_postmeta.meta_id IS NULL
) AS new_posts;

Čitelnější kód

Po krátké zkušenosti z používání IDE se mi zdá, že to povede k čitelnějšímu kódu. Vývojáři budou více dbát na správné pojmenování proměnných metod, tříd a doplňovat komentáře, protože bude reálným vstupem pro AI a budou tak dostávat (a dodávat) lepší kód. Očekávám i dělení kódu na menší části, protože AI bude mít lepší přehled o celém projektu a bude tak moci lépe poradit, jak kód rozdělit. Problémy se rozdělí na podproblémy a to také pomůže čitelnosti.

Závěr – o čem bude další díl?

Chtěl jsem původně psát o vlivu AI na junior a senior vývojáře. Ale nechám si delší čas na pozorování, abych to mohl vyhodnotit lépe. Těším se také na další uplatnění AI v dalších aplikacích, které používám. Jsem zvědavý kam se to bude ubírat, jestli se začnou verzovat i „myšlenkové pochody“ AI – nebo zůstanou jen dokumentaci. A jestli bude možné diktování kódu ať už v IDE nebo třeba přímo ve WordPressu, který má velký potenciál využít své architektury (často opovrhované) a stát se zase dostupnější běžným lidem. Zatím musím říct, že jsem z AI opravdu nadšený.

Chcete více návštěvníků webu?

Ano CHCI