Čomu sa aktuálne vo svojej práci venuješ?
Pracujem na aplikácii, ktorú používajú ľudia v laboratóriách na chemickú analýzu vzoriek. Z technického pohľadu ide o distribuovaný systém, kde jednotlivé inštalácie medzi sebou komunikujú, a tak môžu chemici napríklad vidieť namerané dáta na prístroji na opačnom konci sveta.
Ako si sa dostal k práci s GitHub Copilotom?
Povedal by som, že ako slepé kura k zrnu. V čase veľkého „AI ošiaľu“, ktorý bol v IT firmách počas roka 2023, sme aj u nás vo firme dostali licencie na tento nástroj. A tak som ho začal skúšať, jednak na firemnom projekte, jednak vo voľnom čase na svojich „pet projektoch“ (osobné projekty, pozn. red.). Zaujalo ma, ako rýchlo dokáže vygenerovať kusy kódu, ktoré by som sám písal pár minút, alebo ako dokáže vysvetliť kód, ktorý na prvý pohľad môže byť ťažšie pochopiteľný. Takisto sa mi páči, ako sa postupom času zlepšovala integrácia do vývojového prostredia, čo dnes vedie k veľmi dobrým workflowom.
Vysvetlíš nám v skratke, čo si máme pod názvom GitHub Copilot predstaviť?
Za mňa taká najjednoduchšia, najpresnejšia definícia je, že je to „AI pair programmer“. Je plne integrovaný do najznámejších vývojových prostredí, v ktorých následne poskytuje AI náhradu za vášho „živého kolegu“. Vie (aj nevie) presne rovnako ako tento kolega. Generovanie kódu, vysvetľovanie kódu, review kódu, optimalizácia, pomoc pri debuggingu a podobne. Slovo „GitHub“ v názve je trochu mätúce, je tam v podstate len preto, že tento nástroj vznikol spoluprácou GitHubu a OpenAI. Aj keď, áno, niektorá funkcionalita nástroja je naviazaná aj na samotný GitHub.
Aké sú podľa teba najväčšie výhody GitHub Copilota pre vývojárov?
Rýchle vygenerovanie úseku kódu, okamžitá spätná väzba na už existujúci kód, jeho prípadná optimalizácia či fixovanie bugov v ňom. Ale aj iné druhy refaktoringu (zlepšovanie vnútorného dizajnu kódu bez zmeny jeho vonkajšieho správania, pozn. red.). Takisto možnosť vidieť alternatívne riešenia problému, keďže nástroj väčšinou vygeneruje viac riešení.
Ako Copilot ovplyvňuje produktivitu a kreativitu vývojárov?
Tu ešte asi bude potrebné nejaký čas počkať, kým budú lepšie štúdie a výskumy. Zatiaľ to však vyzerá tak, že produktivitu to ovplyvňuje v pozitívnom smere. No treba dať pozor práve na ďalšie aspekty, ako práve kreativita vývojárov alebo kvalita kódu. Tie môžu byť ovplyvnené negatívne. Nadmerným využívaním AI môže človek strácať schopnosť tvoriť vecí sám. Rovnako kvalita kódu sa môže pri nesprávnom použití Copilota zhoršovať.
Na akých zaujímavých projektoch, ktoré zahŕňali AI alebo GitHub Copilot, si pracoval?
Samotného Copilota využívam na projekte v aktuálnej práci, ale aj na svojich „pet projektoch“. Napríklad si už dlhší čas robím vlastnú webstránku, a keďže v HTML a CSS nie som úplný expert, tak si dosť pomáham Copilotom. Samotná AI bola vo veľkej miere súčasťou jedného projektu, na ktorom som v minulosti krátko pôsobil – detekcia ľudí zo záznamov kamier.
Vnímaš sám na sebe, že by Copilot zmenil spôsob, akým pracuješ?
Určite áno, postupom času som si zvykol na to, že viem, kedy presne môžem Copilota využiť na vytvorenie tzv. boilerplate kódu (opakujúci sa kód, ktorý je potrebný na nastavenie základnej štruktúry programu, pozn. red.), čím ušetrím niekoľko minút. Takisto som si zvykol na to, že keď napíšem nejaký kus kódu, tak si dám Copilotom urobiť code review (kontrola kódu, pozn. red.). Po vytvorení unit testov (automatizované testy, ktoré overujú správnosť jednotlivých častí kódu, pozn. red.) si dám odporučiť ďalšie test casy (konkrétny testovací scenár, ktorý definuje podmienky, vstupy, kroky a očakávané výsledky na overenie určitej funkcionality softvéru, pozn. red.). Celkovo som zahrnul Copilota do svojich workflowov.
Aké typy úloh alebo projektov sú ideálne na osvojenie si práce s GitHub Copilotom?
Dobré sú priamočiare úlohy, kde chcem vygenerovať boilerplate kód. Napríklad základ pre unit testy, teda triedu, ktorá bude mať setupovú metódu (špeciálna metóda, ktorá sa vykonáva pred každým testom, slúži na nastavenie testovacieho prostredia a prípravu pred spustením testovacích prípadov, pozn. red.), vytvorenie inštancie testovaného objektu (v teste vytvoríme konkrétny objekt triedy alebo modulu, ktorý chceme otestovať, pozn.red.) a podobne. Alebo obalenie volania do retry logiky (okolo určitého volania, napríklad API requestu, databázového dopytu alebo inej operácie, ktorá môže zlyhať, zabalíme mechanizmus, ktorý zabezpečí automatické opakovanie tejto operácie v prípade neúspechu, pozn. red.).
Ja som začínal aj tak, že som sa snažil nástroj používať v situácii, v ktorej som vedel „správnu odpoveď“. A skúmal som, akú odpoveď dostanem. A čo prípadne môžem na svojej požiadavke pre Copilota zmeniť, aby sa to k očakávanej odpovedi priblížilo.
Existujú nejaké konkrétne techniky alebo triky, ktoré pomáhajú efektívnejšie pracovať s Copilotom?
User experience s nástrojom vedia veľmi zlepšíť slash commandy (príkazy, ktoré sa začínajú lomkou (/) a používajú sa v rôznych aplikáciách, chatbotoch a API rozhraniach na spustenie konkrétnych akcií, pozn. red.), premenné (variables) a agenty (agents). Tie vieme v požiadavkách využiť a následne dostať lepšiu odpoveď.
Čo by si poradil vývojárkam, ktoré s GitHub Copilotom ešte len začínajú?
Aby mali naštudované všetky možnosti, ktoré tento nástroj ponúka. A aby takisto boli opatrné pri jeho používaní a využili ho ako dobrého sluhu a nie ako zlého pána.
Kde hľadáš inšpiráciu a nové poznatky v oblasti AI a vývoja softvéru?
Fungovaním algoritmov cieleného odporúčania sa postupom času Google Chrome v mojom mobile a takisto môj LinkedIn dostali do stavu, že mi zobrazujú presne tie informácie, ktoré mi pomáhajú získavať nové poznatky. Napríklad novú funkcionalitu Copilota, tzv. „Copilot Edits“, som objavil vďaka postu na LinkedIne.
Máš nejaké odporúčania na knihy, články alebo kurzy pre vývojárky, ktoré sa chcú viac zaoberať AI nástrojmi?
Čo sa týka GitHub Copilota, veľmi dobrý zdroj informácií je stránka github.blog/ai-and-ml/github-copilot. Na YouTube je takisto veľa krátkych (do 10 minút) videí, v ktorých autori prinášajú tipy a triky pre prácu s GitHub Copilotom.