Logo webu
Láká tě studium na Unicorn University? Přihlas se na den otevřených dveří a zjisti více informací.

Ivo Milota: Vývoj softwaru jako životní vášeň

V dalším díle podcastu přivítáme Ivo Milotu, pedagoga Unicorn Vysoké školy a odborníka, který svou vášeň pro práci přetavil ve fascinující kariéru. Budeme si povídat o více než 20 letech ve společnosti Unicorn, kde prošel různými pozicemi od obchodníka po technologického architekta, se dnes soustředí na svou životní vášeň – architekturu softwarových systémů.

O čem je tento díl?

✔ Jak se z obchodníka stal softwarový architekt a pedagog
✔ Proč je důležité učit principy, ne konkrétní technologie
✔ Jaký přístup volí při výuce softwarové architektury
✔ Proč zatím AI cíleně nezařazuje do výuky
✔ Co si myslí o specializaci frontend vs. backend
✔ Inspirativní příklady reálných studentských projektů
✔ Jak Unicorn University pomáhá i úplným začátečníkům
✔ Jakou roli bude podle něj hrát AI v budoucnosti vývoje software

Ahoj, dnešním hostem podcastu je Ivo Milota – odborník, který přetavil svou vášeň pro práci ve fascinující kariéru. Už více než 20 let působí ve společnosti Unicorn, kde prošel různými pozicemi – od obchodníka až po technologického architekta. Dnes se soustředí na svou životní vášeň – architekturu softwarových systémů. Ivo, vítej v našem podcastu!

Ahoj.

Ivo je také aktivním pedagogem na Unicorn University, kde vyučuje frontendové systémy, architekturu cloudových aplikací a softwarovou architekturu. Dnes se s námi podělí o svůj pohled na svět softwarové architektury. Ivo, co tě přivedlo k výuce na univerzitě a co tě na této práci nejvíce baví?

No, to byla asi spíš náhoda. Já jsem se podílel na interním vzdělávání zaměstnanců a vypadalo to, že mě studenti mají rádi, tak přišel návrh, jestli bych nechtěl zkusit učit na univerzitě. Začal jsem tedy učit na Unicorn University, pak jsem začal vést a oponovat bakalářské práce a dneska už jsem i v komisi na státních zkouškách. Takže to opravdu vzniklo náhodou – a už je to nějakých pět šest let, co se na výuce podílím a pomáhám studenty rozvíjet.

A co mě na tom baví? Asi nejvíc spolupráce se studenty – hlavně s těmi aktivními, kteří se ptají, mají zájem. Nejlepší je, když za mnou pak studenti přijdou a poděkují, třeba že jsem jim pomohl s bakalářkou nebo že díky mně pochopili základy softwarové architektury. Protože často přicházejí studenti, kteří nikdy předtím neprogramovali, a začínají úplně od nuly. Ptají se, jak nejlépe začít, jak se naučit programovat, nebo jak jsem se k té kariéře dostal já – a to mě opravdu baví.

A jaký přístup uplatňuješ při výuce, aby studenti lépe porozuměli technickým konceptům, které vyučuješ?

Já se snažím vycházet z toho, jak jsem se sám naučil programovat. Změnil jsem kariéru – opravdu jsem začínal jako obchodník, dělal jsem byznysové věci a dlouho jsem byl opravdu obchodníkem. A pak jsem se víceméně náhodou stal programátorem.
Začal jsem se učit z příkladů – vyhledával jsem si je, chtěl jsem pochopit, co dělají, a podle toho jsem se snažil psát vlastní kód. Takže studentům se snažím ukazovat praktické příklady, jak věci fungují – jak funguje architektura, co jsou ty základy, které potřebují znát, aby na nich mohli stavět.
Snažím se vést výuku tak, aby pochopili principy, a to prostřednictvím praktických příkladů. Jdeme od nějaké úvodní myšlenky až k cíli – k tomu, aby měli hotovou aplikaci nebo alespoň její část. Opravdu je vedu k tomu, aby si to vyzkoušeli, učili se praxí, pracovali s příklady a inspirovali se tím, co už existuje. Protože není potřeba všechno vymýšlet od nuly.

Co říkáš na tvrzení, že bublina programátorů splaskává? Ovlivňuje tento trend přípravu studentů na univerzitě na praxi a jejich dovednosti?

No, přiznám se, že tohle je otázka, na kterou úplně nevím odpověď. Samozřejmě teď s AI a vším, co se kolem toho děje, si myslím, že nikdo moc neví, kam se to bude vyvíjet. Připomíná mi to otázku, kterou mi nedávno položili studenti při výuce – ptali se, jak se bude softwarový svět dál vyvíjet.
Žijeme v době, kdy se za náš relativně krátký život změnila obrovská spousta věcí. Když jsme se narodili, nebyly mobilní telefony, a dnes má mobilní telefon každý. Rozhodně tedy platí, že se věci budou měnit, a určitě to ovlivní i to, jak budeme pracovat, jak programujeme a jak přistupujeme k aplikacím.
Na druhou stranu si ale myslím, že chytří a moudří lidé budou potřeba pořád. A to je to, co se snažím studentům předat – aby se naučili myslet, pochopili základy, jak software funguje, a dokázali to aplikovat. Když přijdou do praxe, dostanou zadání a budou schopni si představit, co má aplikace dělat, jak ji navrhnout a postavit tak, aby opravdu fungovala.
Pokud tyto základy mít nebudou, je to problém. Pořád si myslím – a teď to řeknu možná hloupě – že doktor nevyvine dobrý software, protože nemá ty technické základy. A programátor zase asi nebude dobrý lékař.


Jaké aktuální trendy vidíš ve vývoji frontendových technologií a jak je implementuješ do svých lekcí?

Ten software se určitě bude měnit, a to pravděpodobně směrem od klasického uživatelského rozhraní k přirozené komunikaci se softwarem. Poslední vývoj v oblasti umělé inteligence nám umožňuje mluvit s počítačem běžným jazykem.
Nedávno jsem to přirovnal ke Star Treku. Tam už od začátku mluvili s počítačem přirozeně, dávali mu příkazy běžným jazykem, ale zároveň měli i rozhraní – obrazovky, vizualizace. Potřebovali některé věci vidět, nastavit bez jazyka, protože to bylo rychlejší.
Takže si myslím, že se posouváme tímto směrem – že s počítači budeme víc komunikovat přirozeným jazykem. Ale pořád bude potřeba, aby software někdo vyvíjel, aby dokázal vizualizovat a zpřístupnit informace pro člověka.
Jaké jsou podle tebe klíčové vlastnosti, které by měl mít moderní frontendový vývojář?
Studentům se snažím vysvětlit jednu zásadní věc – dnes už není tak důležité umět perfektně programovat. AI nám totiž pomáhá psát kód. A já si vždycky vážil vývojářů, kteří dokázali napsat funkční aplikaci, která dělala to, co po nich zadavatel chtěl – i když ten kód nebyl 100% perfektní.
Naopak jsem za svou kariéru viděl spoustu programátorů, kteří psali „perfektní“ kód – metoda volala metodu, všechno bylo formálně správně – ale ten kód nedělal to, co měl. Nedalo se v něm vyznat.
Snažím se tedy studentům vštěpovat, že důležité je představit si, co má výsledek dělat. Otestovat ho. Pustit si ho. Zjistit, že to opravdu funguje. A mnohem víc se soustředit na byznys část zadání, nejen samotné programování.
Bez znalosti programování to samozřejmě nejde, ale dnes se i to posouvá. Hlavní cíl je naučit lidi myslet.

Jak bys definoval ideální architekturu cloudové aplikace a studenty vedeš k jejímu návrhu?

Použiju příklad, který zase dávám studentům. Studenti se mě často ptají, proč u nás na škole vyučujeme React a JavaScript a nevyučujeme Angular, PHP nebo třeba Python. A já jim vždycky říkám – studenti, máte hotovou autoškolu? Většina z nich přikývne, že ano. A ptám se: mohli jste si v autoškole vybrat auto, kterým budete jezdit? Nemohli. Protože cílem autoškoly není naučit vás ovládat konkrétní značku, ale naučit vás pohybovat se v dopravě, předvídat situace – například když předjíždíte autobus, čekat, že někdo může vběhnout do vozovky.
Stejně tak i my učíme studenty principy. Naučte se základy, naučte se konstrukty, pochopte, jak se skládají věci dohromady. Když pak přijdete do praxe, naučíte se ten konkrétní „model auta“, tedy technologii. Jestli je zpátečka pod jedničkou nebo pod šestkou, jestli máte klimatizaci vlevo nebo vpravo – to už jsou detaily. Ale pokud nebudete umět řídit, tak je jedno, jestli máte bavorák nebo trabanta – stejně nikam nedojedete.
Technologie jsou prostředek, jak dosáhnout cíle – tedy funkční aplikace, která má pro uživatele hodnotu. Učíme tedy ověřené technologie, ale nejde nám o to, aby je studenti ovládali stoprocentně. Důležitější jsou principy.
Dnes například pracujeme v Unicornu na konkrétní architektuře, kde se studentům snažíme ukazovat, že architektura je víc než jen technologie. Stavíme komponenty, nástroje, aby se vývojáři mohli soustředit na funkčnost a byznysovou podstatu problému, ne na to, jestli píšou v JavaScriptu.
Na jedné přednášce mi student řekl: „Pane Milota, za tím vším je hrozně práce.“ A má pravdu. Je za tím spousta myšlení a úsilí. Ale o to víc důležité je umět se soustředit na byznys, protože technologie se mění, ale principy a cíle zůstávají.

Ty jsi zmínil AI – zapojuješ ji do výuky? Seznamuješ studenty, jak ji využívat při vývoji, například Copilot a další?

Snažím se ji do výuky nezapojovat. Ne proto, že bych si myslel, že je to špatně, ale protože chci, aby si studenti věci vyzkoušeli sami. Je důležité, aby chápali, co dělají. Viděl jsem už hodně příkladů, kdy studenti použili AI a odevzdali práci, které nerozuměli. Výstup často ani nedával smysl – nerozuměli zadání, neuměli AI správně zadat, co od ní chtějí.
Pokud nebudeme rozumět základům, nebude nám AI k ničemu. Četl jsem například článek, že AI už dokáže lépe než lékaři rozpoznat nemoci na rentgenových snímcích. Ale nechci, aby takovou AI trénoval programátor, který v životě neviděl rentgen. AI musí trénovat člověk, který rozumí medicíně.
A stejné je to v programování. Musíme vědět, co od AI chceme a jak s ní komunikovat. Jinak nám nebude umět pomoct. Já ji sám používám – na zrychlení práce, třeba na rutinní kód, ale musím si výstup zkontrolovat. Čím složitější komponentu píšu, tím víc musím rozumět tomu, co dělám, protože AI se v tom sama ztrácí.


Myslíš si, že se změní náplň práce vývojáře právě s příchodem AI? A co říkáš tvrzení, že SaaS (software as a service) je už zastaralý přístup a přichází doba AI agentů?

Už jsem zmiňoval Architekturu v Unicornu. Na jedné prezentaci jsme ukazovali, jak do ní zapojit AI agenty a co všechno lze využít. Dneska například servisní technik, který má služební auto, musí při nehodě otevřít systém, najít formulář, vědět, co a kam vyplnit – je to složité.
Ale když místo toho řekne „Stala se mi nehoda“, agent ví, kdo je, najde auto, předvyplní formulář, zeptá se, co se stalo, doplní údaje, ukáže výsledek a odešle ho.
To je mnohem přirozenější způsob komunikace se softwarem – zvlášť pro lidi, kteří nejsou techničtí. Formuláře budou zjednodušené nebo úplně nahrazené.
Stejně tak na druhé straně systému je dnes člověk, který kontaktuje servis, objedná opravu, nahlásí škodu. To všechno může AI zvládnout – poznat, že hlášení dává smysl, kontaktovat správné lidi, objednat službu.
Uživatelská rozhraní se tím zjednoduší, ale zároveň si myslím, že pořád bude potřeba něco vidět – tabulky, vizualizace, interakce. A budeme potřebovat lidi, kteří těmto systémům budou rozumět. AI zjednoduší rutinní práci, ale nenahradí člověka úplně. Tedy aspoň doufám.

Co si myslíš o názoru, zda je lepší mít specializovaného vývojáře na frontend a zase jiného na backend?

Na to odpovědět... Já sám umím obojí, znám lidi, kteří mají radši backend, znám lidi, kteří mají radši frontend a nad backendem se křižují, že se ho v životě nedotknou. Já si myslím, že obojí je pořád potřeba. Je to o tom, co ten člověk chce, čemu víc rozumí, co si víc dokáže představit. Je to jako kdybych se ptal, jestli chci řídit autobus nebo náklaďák – obojí je podobné, ale ve finále trochu jiné.
Je to o preferencích lidí a o potřebách. Asi je jednodušší použít člověka, který dokáže obojí – zadat práci někomu, kdo zvládne frontend i backend. Ale na druhou stranu dnes se pracuje na obrovských projektech, kde to nejde. Nejde mít jednoho člověka, který rozumí všemu. Jsou velké týmy, které dělají backend, a jiné, které dělají frontend.
Pořád budou potřeba specialisté. Často říkám studentům: používejte komponenty, které už existují. Ale naučte se jim aspoň trochu rozumět – ne nutně dovnitř do jejich „střev“, ale vědět, co dělají a jak je použít.
Je to jako s autem – nepotřebuju být inženýr, který rozumí automatické převodovce, ale potřebuju vědět, co ta převodovka dělá, abych s ní uměl jezdit.
Někteří lidé budou víc technicky zaměření, budou víc rozumět detailům, jiní budou víc byznysoví. Já jsem taky začal jako obchodník a skončil jako programátor – mám vystudovaný mezinárodní obchod.


Jaký projekt nebo úspěch studentů z tvých předmětů ti udělal největší radost?

Ještě, než odpovím, mě napadá něco, co studentům často říkám – a souvisí to s AI. Říkám jim: učte se z příkladů. Já sám se považuji za „copy-paste“ programátora. Někteří se mi smějí, ale ve výsledku to je přesně to, co dělá AI.
Když píšu projekt, hledám příklady, které už jsem dělal, nebo které někdo jiný udělal. Snažím se pochopit, jak to funguje, a přizpůsobit si to. A to je přesně to, co dnes děláme s AI.
Teď k projektům. Byla jich spousta a některé byly neuvěřitelné. Například student, který si postavil vlastní 3D tiskárnu, přinesl výtisky, porovnával je s komerční tiskárnou, popsal, co se povedlo, co ne. To byla skvělá obhajoba.
Nebo jiný student si doma ve sklepě z trubek postavil hydroponickou farmu, pěstoval rajčata, přinesl je ochutnat na obhajobu. Měl software, který měřil teplotu a podle toho svítil.
A úplně nedávno jsem byl oponentem bakalářské práce studentky, která si vymyslela aplikaci – našla mezeru na trhu, neexistovala podobná aplikace, tak si ji navrhla. Nepoužívala moc programování, využila nástroje typu no-code, ale musela pochopit procesy a algoritmy.
Aplikaci nasadila do Google Play a App Store, popsala náklady, vývoj, licence. Aplikace je dostupná ke stažení a už si ji stáhly stovky lidí – i v Americe, bez reklamy. Dokonce si nechala AI vygenerovat logo, vybrala si jedno, upravila barvy a má hotový produkt.
To jsou krásné příklady – lidé si něco vymyslí, projdou celým procesem, něco se naučí a vznikne z toho reálný výsledek. To mě na té práci hrozně baví.

To je krásné! Co bys řekl potenciálním studentům, kteří zvažují studium softwarového vývoje, ale nemají zatím zkušenosti s programováním? Jak jim Unicorn University pomáhá tento krok zvládnout?

Myslím, že hlavně praxí. Snažíme se studenty vést k tomu, aby si věci zkoušeli, dokázali si je představit, pustili se do praxe.

Chodí k nám i studenti, kteří nechtějí být programátory, ale chtějí být kvalifikovanými zadavateli. Chtějí rozumět IT, aby mohli správně zadat práci, pochopit, co dostali od vývojářů, a zhodnotit, jestli to dává smysl.

To nejdůležitější podle mě je, že učíme na praktických příkladech. Aby si studenti mohli věci představit. A když z toho pak vznikají krásné bakalářské práce, kde něco reálného funguje a existuje, tak je to radost.

Jak vidíš budoucnost vývoje softwaru a jak by se na ni měli studenti připravit?
Nemám věšteckou kouli, ale pořád si myslím, že software bude potřeba – a že ho bude potřeba víc a víc, protože žijeme čím dál víc s digitálními krabičkami.

Říkal jsem to už dřív – nedokážu si představit, že pojedeme na rodinný výlet a každý si bude povídat se svým mobilem. Nebo že v tramvaji bude plno lidí a každý bude nahlas mluvit s mobilem – to si úplně nedovedu představit.

Takže si pořád myslím, že budeme potřebovat spoustu věcí vizualizovat. Budeme potřebovat přetavovat data a logiku do komponent, hezkých obrázků, tabulek, grafů – abychom s tím dokázali vizuálně pracovat. A pořád budeme potřebovat lidi, kteří tomu rozumí. Kteří si opravdu dokážou představit, jak ty věci fungují.

Zatím nevidím technologii, která by celý ten model radikálně přepsala. Koneckonců dnes, když se podíváte do App Storu nebo Google Play – je tam spousta webů, spousta aplikací, které existují, fungují, a lidé jsou na ně zvyklí. A říct si, že to všechno zahodíme a přepíšeme – to si nemyslím, že půjde tak snadno.

Spíš si myslím, že nové věci se budou vyvíjet směrem k agentům a asistentům. Je důležité být v prostředí, které na to bude připravené. Mít nástroje, které jsou použitelné. A myslím si, že v tomhle dělá Unicorn obrovský kus práce – protože spousta věcí už teď rychle funguje a dá se na nich stavět. A v tom vidím budoucnost.

Ivo, děkuji ti za dnešní rozhovor. Dnešním hostem byl Ivo Milota a jsme rádi, že nás sledujete. Hezký den.

Hezký den.

Odkazy a zdroje

Nástroje a zdroje zmiňované Ivem nebo související s výukou architektury:

  • React – front-endová knihovna, kterou Ivo používá při výuce a která je základem mnoha moderních webových aplikací.
  • Node.js – JavaScript runtime využívaný pro vývoj backendových aplikací.
  • Unicorn University – oficiální web univerzity, kde Ivo vyučuje mimo jiné frontend, cloudovou architekturu a softwarovou architekturu.
  • GitHub Copilot – AI nástroj na generování kódu, který může pomoci při vývoji, ale Ivo zdůrazňuje nutnost porozumění základům.

Inspirativní zdroje a komunity:

  • Frontend Masters – kvalitní kurzy zaměřené na vývoj webových aplikací, vhodné i pro začátečníky.
  • Stack Overflow – vývojářská komunita, kde lze najít odpovědi na technické otázky nebo se zapojit do diskuzí.
  • Frontend Developer Roadmap – interaktivní přehled technologií a dovedností, které by měl ovládat moderní frontendový vývojář.

Fotogalerie z natáčení podcastu

document_check.svg
Na těchto webových stránkách používáme soubory cookies k zajištění jejich funkčnosti a dále k personalizaci reklam, a to výhradně s vaším souhlasem a v souladu s našimi Pravidly pro užívání cookies.

Kliknutím na tlačítko „Přijmout soubory cookies“ udělujete souhlas s využívaním vybraných souborů cookies a souhlasíte s předáním údajů o chování na našich webových stránkách pro zobrazení cílené reklamy na sociálních a reklamních sítích. Můžete si zvolit, které informace s námi chcete sdílet kliknutím na tlačítko Nastavení cookies.