Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
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í.

1. diel - Vývojárske nástroje a ľudské zdroje

Henrich Máca sa venuje programovaniu profesionálne zhruba 20 rokov. Vyštudoval fakultu informačných technológií na ČVUT a primárne sa zameriava na webový vývoj. Roky bol redaktorom a lektorom kurzov v ITnetwork.cz a teraz sa vo voľnom čase venuje aj mentoringu. Téma prednášky, ktorú pre nás pripravil, je porovnanie toho, ako prebieha agentúrny vývoj v českej a zahraničnej firme, resp. ako to chodí na českom a zahraničnom trhu. V prvej časti sa zameriame na situáciu na trhu ľudských zdrojov a na nástroje používané na vývoj.

Agentúrny vývoj

Rozdiel medzi agentúrnym a produktovým vývojom je v tom, že agentúrne sa väčšinou nesústredí na jeden projekt a máva ich viac. Produktový vývoj sa na druhú stranu venuje jednému projektu, ktorý potom ďalej prepredáva.

Nie je to väčšinou tak, že by sa celá agentúra sústredila na jeden projekt. Býva ich viac. Agentúry majú svoj tím, ktorý poskytuje vývojárov, dizajnérov, produktových manažérov a mnoho ďalších. Veľkosť vývojárskeho tímu sa tiež líši podľa projektu. Niekde pracujete sami, inde s in-house tímom (so zamestnancami firmy, ktorá si agentúru najala). Pokiaľ ide o veľké projekty, môžete tiež pracovať aj s ľuďmi z inej agentúry a spoločne staviate výsledný produkt.

Ako je to s kreativitou?

Agentúrny vývoj je defacto vývoj na zákazku. Miera kreativity potom záleží na zadaní, ktoré dostaneme. Niekedy ideme bod po bode, inokedy sa ako technologickí partneri snažíme zákazníkovi (firme, ktorá si nás „prenajala“) poradiť, alebo aj sami vymýšľame riešenie. Hlavné slovo má však vždy zákazník. Ten má svoje vlastné predstavy o tom, ako by mal produkt vyzerať a čo by mal robiť. Ohľadom kreativity zoberte za príklad medzinárodné reťazce služieb počas pandémie. Všetci potrebovali digitalizovať, napríklad posilňovne, a napojiť sa na nejaké existujúce systémy.

Agentúrny vývoj a IT scéna

Aká je pre programátorov situácia na trhu práce po pandémii?

Pre skúsených vývojárov je situácia skvelá. Čítal som niekoľko zaujímavých článkov, ako pandémia ovplyvnila nábor v IT a ako vynikol nedostatok vývojárov, ktorí sú potrební ešte viac ako pred pandémiou. Veľa firiem išlo cestou digitalizácie, čo zapríčinilo príval množstva projektov as tým spojenú potrebu viacerých vývojárov.

Keď začala pandémia, nikto nevedel, čo bude. Väčšina firiem stiahla svoje financovanie. Bol tam vidieť veľký prepad, kedy sa pozastavilo množstvo projektov. Akonáhle sa ale manažmenty rozhliadli a povedali si, že potrebujú vlastne všetko digitalizovať, aby mohli fungovať ďalej, dopyt zrazu šialene vzrástol. Každý dnes potrebuje prerobiť alebo vyrobiť nový produkt.

Paradoxne to vytvorilo trochu ťažšiu vstupnú bariéru pre junior vývojárov. To preto, že väčšina firiem potrebuje rýchlo a relatívne kvalitne vyvíjať produkty. Prestali preto investovať do vzdelávania a zaučovania juniorov. Nedávajú im toľko šancí. Na to by firmy potrebovali viac zdrojov, ktoré teraz jednoducho nemajú.

Bohužiaľ sa teda znížil dopyt po junior programátoroch, čo sa z dlhodobého hľadiska podpíše na trhu. Keď človek nedá šancu juniorom, aby sa z nich stali skúsenejší programátori, tak tí skúsenejší programátori tu potom nebudú. Prestanú pribúdať.

Pri všetkom tej vysokej dopyte nebolo zdrojov nazvyš a veľa juniorov tak prišlo o šancu získať toľko potrebné skúsenosti. Dôležité je hlavne to nevzdať. Síce to teraz môže byť ťažšie, ale keď si nájdete dobrú príležitosť, máte pomerne veľkú istotu dobrej práce a zázemia. Budete musieť poslať viac prihlášok na rôzne pozície a hľadať starostlivo, aby vám nič neutieklo.

Píšeš kód aj ty, alebo už to nestíhaš?

Ja sám tiež píšem kód. Leader projektov sa už síce skôr venuje architektúre a infraštruktúre projektov a všeobecnejšiemu technickému riešeniu, ale robím občas aj nejaké code reviews. A keď mi chýba programovanie, pracujem na nejakých interných veciach čo máme pre GitHub. Máme zverejnené nejaké projekty, do ktorých môžem po troškách prispievať. Nemôžem mať projekt ako taký, na to naozaj nemám čas.

Agentúrny vývoj a IT scéna

Ako dlho trvá vytvoriť jeden projekt?

Veľa záleží na samotnom projekte a na tom, koľko sa mu venuje programátorov. Nie každý projekt má rovnako veľký tím. Tlačíme na to, aby sa prvá použiteľná verzia dostala rýchlo k používateľom. Začneme potom zbierať spätnú väzbu a prispôsobovať produkt ich požiadavkám. Tieto prvé verzie väčšinou trvajú tri až šesť, niekedy aj deväť mesiacov. Potom sa buď pokračuje vo vývoji, alebo tiež niekedy nie. Niektoré projekty máme vo firme už veľmi dlho. Napríklad štyri, päť rokov. Niektoré projekty naopak skončia po pár mesiacoch, kedy treba dobre nefungujú a dôjde budget. Priemerne však trvá projekt zhruba pol roka.

Koľko jazykov vlastne používate?

U nás je back-end veľa písaný v Node.js. Máme aj C#, Python a Ruby. Záleží na projekte a podľa neho sa potom vyberie tá či ona technológia. Primárne sa ale používa Node.js, to je smer našej orientácie. Pre front-end používame React. Na jednom legacy (starom a ťažko udržiavateľnom) projekte máme aj Ruby. Ono teda veľmi už nefrčí.

Zároveň vytvárame aj mobilné aplikácie aj Data Science department. Tam sa určite používa zase niečo iné. Človek sa musí orientovať aj v týchto odboroch. Back-end často úzko spolupracuje s Data Science. Chystáme pre nich napríklad infraštruktúru či niečo podobné. Myslím, že u nás nie je až taká diverzita jazykov, ako skôr diverzita rôznych technológií.

Používate okrem GitHubu aj iné technológie tohto typu?

Git sa používa pomerne často. Záleží to projekt od projektu. Pokiaľ klient nemá preferencie, tak je to nakoniec GitHub. Ale ak má klient svoj vlastný GitLab alebo niečo iné, tak sa človek podriadi. Potom sú to samozrejme cloudy. Pre webové aplikácie si klienti nestavajú vlastné servery, takže hostované služby sú primárne na cloudoch. Väčšinou AVS, Google Cloud atď.

Tým, že väčšina projektov je napísaná v Node.ss kvôli rýchlemu prototypovaniu a podobným podporám. Potom používame na niečo aj Python, hlavne na Data Science. Pre tieto projekty chce človek čo najmenej riešiť integračné veci ako sú platby a autorizácie, ktoré sa implementujú 100x všade. Na nich je najväčší priestor niečo pokaziť. Najlepšie je preto využiť nejaké riešenie a služby tretej strany, ktoré má firma overené.

Používate určité jazyky výhradne na nejaké špeciality?

Pre dátové pipeline v Pythone máme Flask, FastAPI – to je teraz pomerne trendy, predovšetkým ten FastAPI. V Node.js sa to líši projekt od projektu, alebo aj od fázy projektu a klientskych požiadaviek. Pokiaľ má klient nejaké minimálne požiadavky, stačí to počas pol dňa nahodiť na Heroku. Alebo tiež môže klient prísť napríklad s nejakým kubernetes clusterom.

V JavaScriptovom svete trenduje TypeScript, a to na front-ende aj back-ende. Ukazuje sa, že dynamické typovanie nie je úplne ideálne. Rovnako ako PHP v nových verziách, tak aj vlastne v JavaScripte (pomocou TypeScriptu) sa všade aplikujú typy. V Pythone to tak nevadí, ten je viac striktne dynamicky typovaný. Alebo v Ruby, tam je to aj trochu inak. Pri tých veľmi flexibilných dynamických jazykoch je to však problém.

Ďalšími trendmi sú dev ops, Docker, potom automatizácia a nasadzovanie automatizácie, testovania a infraštruktúra. Pri testovaní treba písať automatizované testy - to sú teraz veci, ktoré sa veľa riešia. Potom treba CIBC pipline, automatické nasadzovanie a dev ops okolo toho. To sú oblasti, ktoré spadajú pod back-end. Ten dev ops sa snaží o to, aby šiel development a aperations ruka v ruke. Veľa back-endistov sa učí alebo býva zodpovedná aj za infraštruktúru. Pre front-endistov to už toľko neplatí, tí majú množstvo nástrojov, ktoré môžu používať. Napríklad Verseo, ktoré používajú na zjednodušenie nasadzovania front-endu. Naopak na back-ende sa človek musí starať o infraštruktúru. Niekto ju musí nastaviť, aj keď je riadená v cloude. Pokiaľ má človek viac vývojových prostredí, tak to musí byť zreplikovateľné. Z toho potom vyplýva automatizácia.

Staráme sa aj o infraštruktúru pre Data Science. Tam je to komplikovanejšie ako samotný back-end. Keď sú tam veci ohľadom Machine learningu alebo ohľadom scrapovania, nie je to tak ľahké nastaviť.

Aké používaš metodiky projektového manažmentu a spôsob delivery?

U nás nerobíme priamo scrum, ale skôr agilný vývoj, ktorý sa ešte líši projekt od projektu. Či už je to tými ceremoniálmi, ktoré sa aplikujú, dĺžkou šprintu alebo rolí v tíme. Proces sa prispôsobuje na mieru projektu. Všeobecne platí, že sa snažíme vyvíjať po menších kúskoch a plánovať dopredu – zachovať si veľký prehľad, ale mať naplánovanú prácu v rozumnom rozmedzí dopredu.

V budúcej lekcii, Požiadavky na juniorov a vzdelávanie , sa zameriame na požiadavky kladené na juniorov a na úlohu vzdelávania.


 

Všetky články v sekcii
Agentúrny vývoj a IT scéna
Preskočiť článok
(neodporúčame)
Požiadavky na juniorov a vzdelávanie
Článok pre vás napísal Karel Zaoral
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
Karel Zaoral
Aktivity