O efektivitě vývoje softwaru a AI s Petrem Glaserem, který vzdělává budoucí vývojáře

Petr Glaser je konzultant produktivity vývojářských týmů a efektivity vývoje softwaru. Díky jeho dlouholetým zkušenostem s vývojem webových aplikací na nejmodernějších technologiích chápe praktická úskalí týmového vývoje aplikací. A nejen o něm v kontextu umělé inteligence jsme si s Petrem povídali. Zároveň je na místě zmínit, že se Petr věnuje také veřejné osvětě a vzdělávání budoucích vývojářů v rámci projektu Nauč mě IT, který je členem České asociace umělé inteligence.

Petře, působíte mj. jako konzultant produktivity vývojářských týmů a efektivity vývoje software. Je stávající rozvoj AI nástrojů v této oblasti pověstným „game changerem“?

Vidím AI jako akcelerátor této nové éry. Už před listopadem 2022 bylo mnoho nástrojů, které extrémně ulehčily a zefektivnily práci, ale málokdo o nich věděl nebo je používal. To je podle mě nejdůležitější změna, kterou AI přineslo – uvědomění si, že to jde dělat jinak.

Díky masivnímu hype se to dostalo ke spoustě lidem, kteří by jinak o mnoha nástrojích neměli ani tušení. Mnoha z těch nástrojů stačilo přidat nálepku “AI powered” a hned si jich lidé všimli. Přestože na pozadí už AI třeba dávno byla, nebo naopak téměř nebyla potřeba pro daný nástroj. AI je všude kolem nás, jen to málokdo vidí.

Hraje umělá inteligence již nyní zásadnější roli ve vašem konzultačním přístupu ke zlepšování fungování vývojářských týmů?

Rozhodně hraje velkou roli. Neřekl bych, že je to zásadní a nešlo by to bez ní. Jen je všechno mnohem lehčí a rychlejší. Pro zlepšení fungování vývojářských týmů je potřeba mít dobře nastavené procesy a mít pochopení pro fungování vývojářů. Rozhodně jim nepomáhá mít každou chvíli na něco meeting. Je důležité ponořit se do hluboké práce, chcete-li stavu flow. Věčné vyrušování znemožňuje se do takového stavu dostat, nebo ho úplně zruší.

Už dávno před masivním nasazením AI jsem se věnoval ve firmách, kde jsem pracoval, zvýšení efektivity. Nejvíce tomu pomáhá automatizace. Proč se hádat o tom, zda má být čárka na konci výčtu parametrů ve funkci nebo ne? Nastavme automatické formátování a je po hádkách. Míst, kde je spousta týmů a firem neefektivních, je mnoho. Většinou stačí málo a výsledky jsou měřitelné okamžitě.

Zmiňujete, že jste schopen klientům doporučit pečlivě přebraný a individualizovaný stack AI aplikací, které skutečně zvýší jejich produktivitu. Jaké vstupní informace v takovém případě od klientů potřebujete?

Nejdůležitější je pochopit jejich potřeby. Potom je ale důležité vědět, co koho trápí. Uvedu příklad z firmy, kde jsem pracoval.

Často se nám vracely tickety zpět k přepracování zadání, protože chyběly nějaké zásadní body. A to i přesto, že jsme přípravou ticketů trávili minimálně 2 hodiny týdně, aby vše bylo připravené. Problém byl v tom, že jsme všechno dělali hromadně. To znamená, že na hovorech byli i lidé, kteří nebyli vůbec potřeba. Byli tedy duchem nepřítomní a když přišla řada na ně, tak se stejně nebyli schopni soustředit – byli už rozhození. Řešení se skládalo ze dvou celků:

1. Rozdělit meetingy na menší bloky a zvát na ně pouze ty, kterých se úkol týkal.

2. Sepsat “definition of ready” a důsledně ji dodržovat než se ticket poslal ke zpracování.

Řešením tedy nemusí být jen na všechno hodit “nový AI nástroj”, ale jít do hloubky a porozumět. Když už přijde řada na AI nástroje, tak nedává smysl používat 10 různých nástrojů na psaní textů, když v 99 % případů stačí jeden. Je pro to mnoho důvodů:

  • Nižší cena (netřeba platit 20 subscription, když stačí 3)
  • Efektivnější práce (nástroje se často extrémně liší v rozhraní a zbytečně matou)
  • Vyšší bezpečnost (ne každý nástroj má důkladně řešenou ochranu dat)

Jaké jsou hlavní výzvy, kterým čelí vývojářské týmy při implementaci AI do svých projektů?

Záleží, zda jde o korporát se spoustou pravidel, nebo malé firmy. U korporátů je často velice náročné prosadit něco nového, protože do toho každý má co říct a zbytečně to brzdí inovace. Naopak u malých firem to je typicky nedostatek času. Každý je potřebný a stačí pouhých pár hodin týdně a může to ohrozit celý projekt. Prosadit změny v korporátech je nesrovnatelně náročnější – a to i z pozice konzultanta, protože je tam často zakořeněný starý mindset, který udržuje v chodu “L7 Manažer s 20 lety ve firmě”. Klíčem je autonomie a důvěra. Tahouni ve svém oboru, přestože jsou to giganti, mají velkou důvěru ve své týmy a lidi v nich.

Můžete nám sdělit příklad značného zlepšení vývojového procesu v nějaké firmě?

Jedna z nejtypičtějších věcí, která brzdí vývojový proces, je QA – tedy kontrola kvality. Neskládá se pouze z testování, ale jde o celkový proces. Díky implementaci automatických kontrol, jmenovitě:

  • Formátování kódu
  • Automatické spouštění testů
  • Statická analýza

jsme úspěšně snížili množství komentářů při Code Review o 80 % a hlavně se kladl větší důraz na odhalení skutečných chyb místo hádek o čárkách. Skvěle to popisuje ThePrimeagen ve videu STOP Nit picking in code reviews.

Jaká je vaše role při vzdělávání budoucích vývojářů v rámci projektu Nauč mě IT?

Poměrně komplexní, protože v Nauč mě IT jako spoluzakladatel zastávám roli CTO, tedy v první řadě je to celková příprava platformy. U té vše začíná, protože jsme se rozhodli, že celá platforma bude mít plně dostupný zdrojový kód. Díky tomu mají budoucí vývojáři možnost nahlédnout do reálné produkční aplikace a každý se může rozhodnout ji rozšířit, doplnit či opravit nějakou chybu. Je to oboustranně výhodné – naše platforma se může rychleji rozvíjet a studenti získají praxi. Navíc přispívání do open-source projektů je zaměstnavateli velmi oceňováno.

Druhý aspekt je příprava kurzů, zejména kurzu pro vývojáře (frontend), který je již částečně dostupný. Na kurzu pro testery jsem také pracoval, ale lví podíl udělala přítelkyně a spoluzakladatelka Lýdie Hemalová.

Poslední součástí mé role jsou konzultace. (Zatím) nemáme kurzy v pravém slova smyslu, kdy se sedí na hodinách a učí. Naši studenti si mohou domluvit konzultace, kde se řeší konkrétní problém. Je to jako s prací pro klienty. Nemám potřebu dělat obecné povídání, ale jdu rovnou k věci. I proto vždy chci znát situaci a potřeby protistrany a je jedno, zda jde o studenta či firmu.

Jakým způsobem probíhá výuka a vzdělávání v rámci tohoto projektu?

Každý si určuje vlastní tempo. Naše kurzy jsou zdarma dostupné každému. Označujeme se jako “meta-kurz”, protože nemáme patent na rozum, ale naopak se odkazujeme na jiné zdroje, které mají k tématu co říct. Naší metrikou je, že kurz musí zvládnout i prodavačka z Lidlu (to není urážka – lidé, kteří mění kariéru, mohou přijít odkudkoliv a chceme k nim být přívětiví). Díky tomuto přístupu se studenti naučí pracovat s více zdroji, lépe pochopí látku, protože každému vyhovuje jiný styl, a také se více připraví do praxe, protože tam málokdy existuje jediný zdroj informací, který vše vyřeší. Je potřeba si znalosti spojit dohromady.

Mimojiné hodně pracujeme s AI – nejen při přípravě kurzů, ale také u studentů. Tuto novou éru už nelze zastavit a je potřeba se na ni připravit. Umělá inteligence nás sice může ohrozit, ale především nás může neskutečně posunout. Vždyť už teď programují lidé, kteří to nikdy nedělali, jen s pomocí AI. Když se náhodou studenti na něčem zaseknou, učíme je se ptát. A je jedno, zda se ptají Google, ChatGPT nebo lektora na konzultacích. Princip je vždy stejný.

Jaká témata a dovednosti se snažíte předávat budoucím vývojářům?

Už jsem to nakousl v závěru minulé otázky. Zásadní je umět se ptát. To platí vždy. Už na začátku projektu je potřeba si položit ty správné otázky. Pro koho je produkt. Jaké potíže řeší. Co je potřeba hned na začátku a co počká…

Takových otázek je nepřeberné množství a když se správně ptáme, tak získáme odpovědi výrazně vyšší kvality. U AI tomu není jinak. Jinými slovy platí často omílaná věta: “Shit in, shit out.”

Jak by se podle vás vzdělávání a příprava na práci v IT mohly změnit v blízké budoucnosti díky rozvoji umělé inteligence?

Je to revoluce. Už teď tu máme nástroje na pohovor s AI, párové programování, zpětnou vazbu na kód… bude to jen rozšířenější a rozšířenější až se z toho stane nástroj podobný programům na účetnictví. Ano, můžeme všechno dělat postaru, mít nabiflované zákony, všechny výjimky atd. A nebo se rozhodneme využít technologie – tedy dostupné nástroje – a práci si výrazně ulehčíme, zrychlíme a také zpřesníme.

Závěrem možná trošku provokativní dotaz. Myslíte si, že se programování může díky AI dostat do stavu, kdy budou lidé programovat přirozeným jazykem?

Do určité míry rozhodně ano. Koneckonců programování je poměrně exaktní deterministická záležitost. Myslím si, že bude mnohem častější, že si MVP navrhnou lidé či firmy sami, ale poté bude potřeba dostat projekt do provozu, kde bude obsluhovat klidně i miliony uživatelů. To už budou dělat skuteční experti. Ne, že by to nezvládla AI, ta bude v jejich rukou hrát roli stejně zásadní jako v rukou neprogramátorů při ověřování nápadu, ale od určité fáze nezvládne laik ověřit, zda mu AI nelže nebo neříká polopravdu.

Některé věci se mnohem hůře vyjadřují v přirozeném jazyce, který může být mnohem květnatější. Plus je tu samozřejmě část extrémních optimalizaci na úrovni procesorů, což teď předvedla umělá inteligence AlphaDev, která zrychlila řadící algoritmus až o 70 %. Existuje mnoho druhů AI a některé z nich vůbec nedostávají pokyny v klasickém slova smyslu, ale učí se samy. To je právě případ AI Alpha. Jedna z jejích variant – AlphaZero – se ani neučila na hrách skutečných hráčů, ale šla zcela od nuly pouze hraním se sebou sama.

Pro nás programátory bude mnohem důležitější mít doménovou znalost a chápat aplikaci i z pohledu byznysu, abychom mohli správně pracovat s architekturou a také třeba uživatelským prožitkem (user experience). Pro AI je náročné pochopit, jak přesně funguje člověk. Jak řekl Jan Romportl – my nevíme, jak AI uvnitř chápe náš svět. Je to vlastně mimozemšťan. Může mít úplně jiné asociace než my, jen navenek podává v mnoha případech výsledky, které bychom očekávali.

Asociace

© 2024 Všechna práva vyhrazena

Česká asociace umělé inteligence z.ú.