IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Lekce 1 - Vývojářské nástroje a lidské zdroje

Jindřich Máca se věnuje programování profesionálně zhruba 20 let. Vystudoval fakultu informačních technologií na ČVUT a primárně se zaměřuje na webový vývoj. Léta byl redaktorem a lektorem kurzů v ITnetwork.cz a nyní se ve volném čase věnuje také mentoringu. Téma přednášky, kterou pro nás připravil, je porovnání toho, jak probíhá agenturní vývoj v české a zahraniční firmě, resp. jak to chodí na českém a zahraničním trhu. V první části se zaměříme na situaci na trhu lidských zdrojů a na nástroje používané k vývoji.

Agenturní vývoj

Rozdíl mezi agenturním a produktovým vývojem je v tom, že agenturní se většinou nesoustředí na jeden projekt a mívá jich více. Produktový vývoj se na druhou stranu věnuje jednomu projektu, který pak dál přeprodává.

Není to většinou tak, že by se celá agentura soustředila na jeden projekt. Bývá jich více. Agentury mají svůj tým, který poskytuje vývojáře, designery, produktové manažery a spoustu dalších. Velikost vývojářského týmu se také liší podle projektu. Někde pracujete sami, jinde s in-house týmem (se zaměstnanci firmy, která si agenturu najala). Pokud jde o velké projekty, můžete také pracovat i s lidmi z jiné agentury a společně stavíte výsledný produkt.

Jak je to s kreativitou?

Agenturní vývoj je defacto vývoj na zakázku. Míra kreativity pak záleží na zadání, které dostaneme. Někdy jedeme bod po bodu, jindy se jako technologičtí partneři snažíme zákazníkovi (firmě, která si nás "pronajala") poradit, nebo i sami vymýšlíme řešení. Hlavní slovo ale má vždy zákazník. Ten má své vlastní představy o tom, jak by měl produkt vypadat a co by měl dělat. Ohledně kreativity vemte za příklad mezinárodní řetězce služeb během pandemie. Všichni potřebovali digitalizovat, například posilovny, a napojit se na nějaké stávající systémy.

Agenturní vývoj a IT scéna

Jaká je pro programátory situace na trhu práce po pandemii?

Pro zkušené vývojáře je situace skvělá. Četl jsem několik zajímavých článků, jak pandemie ovlivnila nábor v IT a jak vynikl nedostatek vývojářů, kteří jsou potřební ještě víc než před pandemií. Spousta firem šla cestou digitalizace, což zapříčinilo příval spousty projektů a s tím spojenou potřebu více vývojářů.

Když začala pandemie, nikdo nevěděl, co bude. Většina firem stáhla svoje financování. Byl tam vidět velký propad, kdy se pozastavila spousta projektů. Jakmile se ale managementy rozkoukaly a řekly si, že potřebují vlastně všechno digitalizovat, aby mohli fungovat dál, poptávka najednou šíleně vzrostla. Každý dnes potřebuje předělat nebo vyrobit nový produkt.

Paradoxně to vytvořilo trochu těžší vstupní bariéru pro junior vývojáře. To proto, že většina firem potřebuje rychle a relativně kvalitně vyvíjet produkty. Přestaly proto investovat do vzdělávání a zaučování juniorů. Nedávají jim tolik šancí. Na to by firmy potřebovaly více zdrojů, které teď zkrátka nemají.

Bohužel se tedy snížila poptávka po junior programátorech, což se z dlouhodobého hlediska podepíše na trhu. Když člověk nedá šanci juniorům, aby se z nich stali zkušenější programátoři, tak ti zkušenější programátoři tady pak nebudou. Přestanou přibývat.

Při vší té vysoké poptávce nebylo zdrojů nazbyt a spousta juniorů tak přišla o šanci získat tolik potřebné zkušenosti. Důležité je hlavně to nevzdat. Sice to teď může být těžší, ale když si najdete dobrou příležitost, máte poměrně velkou jistotu dobré práce a zázemí. Budete muset poslat více přihlášek na různé pozice a hledat pečlivě, aby vám nic neuteklo.

Píšeš kód i ty, nebo už to nestíháš?

Já sám také píšu kód. Leader projektů už se sice spíš věnuje architektuře a infrastruktuře projektů a obecnějšímu technickému řešení, ale dělám občas i nějaké code reviews. A když mi chybí programování, pracuji na nějakých interních věcech co máme pro GitHub. Máme zveřejněné nějaké projekty, do kterých můžu po troškách přispívat. Nemůžu mít projekt jako takový, na to opravdu nemám čas.

Agenturní vývoj a IT scéna

Jak dlouho trvá vytvořit jeden projekt?

Hodně záleží na samotném projektu a na tom, kolik se mu věnuje programátorů. Ne každý projekt má stejně velký tým. Tlačíme na to, aby se první použitelná verze dostala rychle k uživatelům. Začneme pak sbírat zpětnou vazbu a přizpůsobovat produkt jejich požadavkům. Tyto první verze většinou trvají tři až šest, někdy i devět měsíců. Pak se buď pokračuje ve vývoji, nebo také někdy ne. Některé projekty máme ve firmě už velmi dlouho. Třeba čtyři, pět let. Některé projekty naopak skončí po pár měsících, kdy třeba dobře nefungují a dojde budget. Průměrně však trvá projekt zhruba půl roku.

Kolik jazyků vlastně používáte?

U nás je back-end hodně psán v Node.js. Máme i C#, Python a Ruby. Záleží na projektu a podle něj se pak vybere ta či ona technologie. Primárně se ale používá Node.js, to je směr naší orientace. Pro front-end používáme React. Na jednom legacy (starém a těžko udržovatelném) projektu máme i Ruby. Ono teda moc už nefrčí.

Zároveň vytváříme i mobilní aplikace i Data Science department. Tam se určitě používá zase něco jiného. Člověk se musí orientovat i v těchto oborech. Back-end často úzce spolupracuje s Data Science. Chystáme pro ně třeba infrastrukturu či něco podobného. Myslím, že u nás není až takové diverzita jazyků, jako spíš diverzita různých technologií.

Používáte mimo GitHubu i jiné technologie tohoto typu?

Git se používá poměrně často. Záleží to projekt od projektu. Pokud klient nemá preference, tak je to nakonec GitHub. Ale pokud má klient svůj vlastní GitLab nebo něco jiného, tak se člověk podřídí. Pak jsou to samozřejmě cloudy. Pro webové aplikace si klienti nestaví vlastní servery, takže hostované služby jsou primárně na cloudech. Většinou AVS, Google Cloud atd.

Tím, že většina projektů je napsaná v Node.js kvůli rychlému prototypování a podobným podporám. Pak používáme na něco i Python, hlavně na Data Science. Pro tyto projekty chce člověk co nejméně řešit integrační věci jako jsou platby a autorizace, které se implementují 100x všude. Na nich je největší prostor něco pokazit. Nejlepší je proto využít nějaké řešení a služby třetí strany, které má firma ověřené.

Používáte určité jazyky výhradně na nějaké speciality?

Pro datové pipeline v Pythonu máme Flask, FastAPI - to je teď poměrně trendy, především ten FastAPI. V Node.js se to liší projekt od projektu, nebo i od fáze projektu a klientských požadavků. Pokud má klient nějaké minimální požadavky, stačí to během půl dne nahodit na Heroku. Nebo také může klient přijít třeba s nějakým kubernetes clusterem.

V JavaScriptovém světě trenduje TypeScript, a to na front-endu i back-endu. Ukazuje se, že dynamické typování není úplně ideální. Stejně jako PHP v nových verzích, tak i vlastně v JavaScriptu (pomocí TypeScriptu) se všude aplikují typy. V Pythonu to tak nevadí, ten je víc striktně dynamicky typovaný. Nebo v Ruby, tam je to také trochu jinak. U těch hodně flexibilních dynamických jazyků je to ale problém.

Dalšími trendy jsou dev ops, Docker, pak automatizace a nasazování automatizace, testování a infrastruktura. U testování je třeba psát automatizované testy - to jsou teď věci, které se hodně řeší. Pak třeba CIBC pipline, automatické nasazování a dev ops okolo toho. To jsou oblasti, které spadají pod back-end. Ten dev ops se snaží o to, aby šel development a aperations ruku v ruce. Spousta back-endistů se učí nebo bývá zodpovědná i za infrastrukturu. Pro front-endisty to už tolik neplatí, ti mají spoustu nástrojů, které mohou používat. Například Verseo, které používají ke zjednodušení nasazování front-endu. Naopak na back-endu se člověk musí starat o infrastrukturu. Někdo ji musí nastavit, i když je řízená v cloudu. Pokud má člověk více vývojových prostředí, tak to musí být zreplikovatelné. Z toho pak vyplývá automatizace.

Staráme se i o infrastrukturu pro Data Science. Tam je to komplikovanější než samotný back-end. Když jsou tam věci ohledně Machine learningu nebo ohledně scrapování, není to tak snadné nastavit.

Jaké používáš metodiky projektového managementu a způsob delivery?

U nás neděláme přímo scrum, ale spíš agilní vývoj, který se ještě liší projekt od projektu. Ať už je to těmi ceremoniály, které se aplikují, délkou sprintu nebo rolí v týmu. Proces se uzpůsobuje na míru projektu. Obecně platí, že se snažíme vyvíjet po menších kouscích a plánovat dopředu - zachovat si velký přehled, ale mít naplánovanou práci v rozumném rozmezí dopředu.

V příští lekci, Požadavky na juniory a vzdělávání, se zaměříme na požadavky kladené na juniory a na roli vzdělávání.


 

Všechny články v sekci
Agenturní vývoj a IT scéna
Přeskočit článek
(nedoporučujeme)
Požadavky na juniory a vzdělávání
Článek pro vás napsal Karel Zaoral
Avatar
Uživatelské hodnocení:
9 hlasů
Karel Zaoral
Aktivity