INTERVJU – Nebojša Pongračić, Serengeti: Razbijanje monolitnih rješenja u učinkovite mikroservise

Programirati treba početi što ranije, već u vrtiću, s vizualnim programskim jezicima kao što su Logo ili Scratch, a Python bi se trebao početi učiti već u nižim razredima osnovne

Zvonko Pavić petak, 18. listopada 2019. u 00:00

Nebojša Pongračić računalni je programer iz Bjelovara. Čovjek je s više od 12 godina iskustva u razvoju .NET web i poslovnih aplikacija. Trenutačno radi kao tech lead za .NET u tvrtki Serengeti. Glavna zanimacija mu je mikroservisna arhitektura, a u tijeku je i s modernim frontend tehnologijama kao što je React, među ostalima. Otac je dvoje krasne djece, s kojima voli provoditi slobodno vrijeme.

Gdje, kako, kada i zašto ste se odlučili biti programer? I što je bila alternativa? Što biste danas radili da niste završili kao pisac kôda?

Računala su me uvijek zanimala, a što se programiranja tiče, mislim da me to “ulovilo” već u četvrtom ili petom razredu osnovne škole, kad sam upisao Informatiku kao izborni predmet. Tamo smo između igranja igara stigli učiti i osnove programiranja u QBasicu. Prekretnica se dogodila kad mi je jedan od klinaca koji je išao u isti razred pokazao kôd i neko grafičko sučelje te podršku za miša.

To mi je bilo tako fascinantno da sam poželio napraviti svoju verziju Windowsa i popratnih aplikacija. Kad smo već kod toga, trebao bih ga kontaktirati i preporučiti šefu, sigurno je postao super developer. Čime bih se bavio kad ne bih kodirao za život? Vjerojatno bih bio grafički dizajner, jer mi je crtanje uvijek dobro išlo, ili bih se odvažio i pjevao po svadbama – karaoke mi nisu strane. Za sve detalje samo pitajte kolege iz Serengetija.

Preduvjeti

Postoje li neki genetski, karakterni ili neki drugi preduvjeti koje treba imati čovjek da bi se “zapalio” za programiranje?

Možda mrvicu prednosti imaju ljudi s izraženim analitičkim pristupom rješavanju problema – oni kojima je lijeva polutka mozga dominantna pa im bolje leži matematika, logika i slično. Uz to, važan je pozitivan stav prema programiranju. I, naravno, treba početi što ranije – skoro bih rekao u vrtiću, s vizualnim programskim jezicima kao što su Logo ili Scratch, a Python bi se trebao početi učiti već u nižim razredima osnovne. Kada djeca vide neki rezultat – pomaknula se kornjača, iscrtao sam graf, pokrenuo sam robota 0.0005 mm udesno itd. – to ih nadahnjuje i požele se time baviti. Dakle, ne bih rekao da za programiranje postoje neki posebni genetski i karakterni preduvjeti, više je to “u glavi”.

Zašto su vas šefovi tvrtke Serengeti, zapravo, zaposlili? Što oni kažu o tome? Što vi mislite o tome? A što o tome misli kolega u tvrtki kojem se najmanje sviđate?

Malo ljudi to zna, no Bjelovar je izvorište kvalitetnih kompjutorskih programera, od kojih većina peče svoj zanat u izazovnoj i dinamičnoj okolini jedne od većih banaka u Hrvatskoj, koja je ujedno i jedini veći poslodavac u gradu i okolici. Takav položaj omogućio je toj financijskoj instituciji da se ne trudi previše oko zadovoljstva svojih zaposlenika pa su neki od bjelovarskih programera emigrirali u Zagreb i zaposlili se u drugim tvrtkama, a oni koji su ostali i koji iz raznih razloga nisu bili spremni na selidbu ili na svakodnevno putovanje na posao u drugi grad, počeli su razmišljati o alternativama.

Tada se jedan od nas zaposlio u tvrtki Serengeti i otkrio im kako u našem gradu postoji veći broj ljudi sa znanjima kakva njima trebaju, a oni su razmišljali o otvaranju svojih podružnica u manjim gradovima. Brzo smo se dogovorili, a pomogao nam je i entuzijazam čelnih ljudi Grada Bjelovara i Tehnološkog parka, koji su prepoznali IT i prilike koje se pružaju razvijanjem te struke u našem mjestu. Ured tvrtke Serengeti u Bjelovaru danas ima dvadesetak zaposlenih i dalje raste. Što se tiče toga što o meni misli kolega kojemu se najmanje sviđam – nema takvih u tvrtki. Ako ih ima – dobro se skrivaju!

Učenje i neučenje

Što je bilo najšašavije programersko pitanje koje su vam postavili na razgovoru za posao – i kako ste na njega odgovorili?

Moram priznati da sam imao prilično standardne razgovore za posao i nisam se susreo s onim starim dobrim Google-Style trik-pitanjima tipa koliko bi mi trebalo da operem sve prozore u New Yorku. U samim počecima karijere jedino što mi je bilo smiješno jest kad su mi nudili “minimalac” i radno vrijeme dulje od 12 sati te ponekad slobodnu nedjelju. Također mi je bez veze kad na razgovorima za posao neke tvrtke forsiraju najmanje pet krugova razgovora s obaveznim psihološkim testiranjima i testovima inteligencije.

Što je bila najveća pogreška koju ste napravili programirajući – i što iz nje NISTE naučili? Nakon toga recite nam što iz te pogreške JESTE naučili.

Najveća pogreška bila je objava slabo testiranog programskog kôda direktno na produkcijsko okruženje, što je, naravno, izazvalo višesatni zastoj rada određenog dijela te produkcije. :/ Iz toga, izgleda, još uvijek nisam naučio da za sve treba pisati testove, a opet, ono što sam naučio jest to da za sve treba pisati testove.

Zamislite da nemam pojma o informatici – kako biste mi opisali razliku između LISP-a, Pythona i PHP-a, a da o JavaScriptu ne govorimo?

U LISP-u pišeš samo hrpu zagrada i nečitko je do bola, u Pythonu svaki problem možeš riješiti u nekoliko linija kôda jer za svaku sitnicu već postoji neko rješenje, a s PHP-om su manje-više svi počeli raditi web-aplikacije i nakon toga prešli na nešto bolje


TECH43

Što je najveće dostignuće bjelovarske zajednice Tech43?

Tech43 je meetup zajednica koju čine nekolicina bjelovarskih IT entuzijasta/volontera te ekipa s Veleučilišta u Bjelovaru, koji zajedno žele osvijestiti zajednicu i “pogurati” IT u Bjelovaru. Radi se na principu da se pokušava jednom u mjesec dana održati po jedno predavanje/meetup, gdje se govori o predloženim i zanimljivim IT/tech temama.


Mikroservisi, Geticon

Idemo na vaš glavni posao – što je najbolja metoda za “razbijanje” velikih, monolitnih rješenja u učinkovite mikroservise, i zašto bi to itko činio?

Eh, za to morate doći na moje predavanje na Geticon, u Varaždin, 26. listopada. Ne bih htio sada sve otkriti i tako smanjiti dolaznost, no dobro je početi od dijela koji nije preusko povezan s cijelim sustavom i koji se lako “odlomi”. Najbolje je to raditi iterativno, a ne krenuti odmah u Big Bang refactoring sustava jer je to gotovo zajamčeni recept za neuspjeh.

Organizacije obično prelaze na mikroservise kad im monolitna aplikacija koju trenutačno koriste postane preteška za održavanje ili kad i najsitnija izmjena zahtjeva višetjedne pripreme, sastanke i strategije za retestiranje funkcionalnosti cijelog sustava, a čija ogromna većina uopće nije zahvaćena tom doradom. Što se tiče alata, za mikroservise su preduvjet containeri – to jest, alat koji će “vrtjeti” containere kao što je, primjerice Docker. Containeri su nešto od čega bi trebalo početi, jer oni su neke minimalne cjeline u koje će ti mikroservisi biti “zapakirani”. Nadalje, potrebna je neka platforma na kojoj će se to vrtjeti (primjerice, Azure, Amazon, Google, OpenShift…), a sve drugo podložno je promjenama.

Kako ćete tu metodu prezentirati na konferenciji Geticon?

Pokazat ću to na konkretnom primjeru iz prakse – pokazat ću kako smo mi rješavali neke stvari, i proći kroz neke probleme koje takva arhitektura donosi i kako ih riješiti, a ući ću i u detalje o nekim aspektima kao što su sama komunikacija između svih tih mikroservisa. Prezentaciju ću učiniti što više zanimljivom, no važno mi je dati konkretne odgovore svima koji se žele baviti mikroservisima.

Talent na cijeni

U pripremi za ovaj razgovor rekli su mi da je Serengeti tvrtka koja zaista cijeni talentirane ljude. Što je tu PR, a što istina? I nemojte me razočarati pa reći kako u dnevnom boravku tvrtke imate stol za ping-pong i kapsulu za meditiranje…

Nije to (samo) korporativna propaganda, ima i nešto istine.  I moram vas razočarati: imamo stol za stolni tenis, a imamo i stol za biljar, PlayStation, itd. Dobra stvar u Serengetiju je to što je hijerarhija “plitka” – velika većina tvrtke su programeri, a i ono malo menadžmenta uglavnom vuče korijene iz samih “rovova” razvoja. Kod nas postoji pravilo: ako je čovjek sposoban – to će se i prepoznati. Uz to, poštuju se želje pojedinca. Ako se netko želi okušati u vođenju tima ili želi promijeniti projekt – prvom prilikom to će se pokušati i provesti u djelo. Mnogo je kolega dobilo svoj tim jer su pokazali da su daroviti za tako nešto. Primjerice, jedan naš kolega iz Bjelovara promoviran je u Program Managera za financije, i zadužen je za četrdesetak ljudi. Za mene kažu da znam programirati u .NET-u pa sam postao tech lead za to… Mogućnost napredovanja i veće plaće važni su faktori, no važno je i da nam je tu ugodno raditi. Evo, nedavno smo uspjeli iskamčiti stroj za karaoke koji smo dobili kad smo proslavljali stotog zaposlenog u Serengetiju. Često je u pogonu, pogotovo ako nam kolege iz Zagreba dođu u posjet.

Umijeće programiranja i prezentiranja

Volite javne nastupe. Jeste li vi zaista tako dobar prezenter? Jeste li, i što, u toj vještini kopirali od Stevea Jobsa?

E sad, nije baš da volim javne nastupe, no za razliku od većine programera, nemam fobiju od toga. Ne volim se ponavljati, a ni puno pripremati za prezentacije koje održavam, i trudim se biti prirodan. Držim prezentacije iz tema za koje sam siguran u svoje znanje pa mi nedostatak priprema uglavnom nije problem, a ispadne spontano i svaki put malo drugačije, nadam se, s određenom dozom humora, pa ljudima bude OK. Tajna dobre programerske prezentacije je u kvalitetno odabranoj hoodici, a ni nekoliko čaša vina/gemišta/pive prije prezentiranja ne može odmoći. Od Stevea Jobsa samo sam kopirao to da nosim traperice i najsvečaniju hoodicu – nemam crnih dolčevita u ormaru, to ću kad ostarim i postanem direktor!

Od aplikacija koje imate u svom mobitelu, i za koje znate da ih koristi većina ljudi – koja vam zaista najviše ide na živce? Zašto? I kako biste je vi popravili?

Najviše mi na živce ide Facebook Messenger sa svojim chathead popup balonima/stvarčicama. Nije mi baš jasno kako mi to točno poboljšava korisničko iskustvo, osim što me naživcira i iskače u najgore vrijeme, primjerice, kad žena nešto gleda po mom mobitelu, a ljubavnica piše poruke.

Zanemarite li pomalo zastarjeli dizajn naše web-stranice, mreza.bug.hr, što biste na njoj odmah promijenili i kojom web-aplikacijom biste je poboljšali?

Sviđa mi se što je čist raspored i nije ogroman bloatware od stranice – što zna biti dosta čest slučaj s novim hit “sve-u-javascript” frameworksima kao što su Angular/React (i ne, nisam mrzitelj Javascripta, zapravo mi je React super stvar). Kada sam bacio oko na Network tab u Chrome Developer Toolsima, vidio sam da imate mnogo network requestova (recimo, 113 requestova) koji vam dohvaćaju resurse kao što su raznorazne slike i javascript datoteke.

Browseri odjednom mogu odraditi osjetno manji skup zahtjeva (requestova) te vam to vjerojatno usporava učitavanje stranice. Moj savjet je – sve Javascript datoteke trebalo bi skupiti u jednu i minimizirati je (smanjiti veličinu uklanjanjem razmaka i sl.) kako bi je se dohvatilo u jednom zahtjevu prema serveru. Sličnu stvar mogli biste napraviti i sa slikama, ili ih spojiti u jednu mapu pa učitavati iz te jedne (to se, primjerice, zove sprite) ili dio njih prebaciti u base64 pa koristiti u CSS-u. Koristan alat je Google Lighthouse, aplikacija kroz koju možete provući stranicu pa vam ovakve stvari kao što sam ja naveo sugerira besplatno; platite jedino svojom privatnošću i možda dušom.

Geticon

Što je, uopće, Geticon?

Geticon je besplatna, jednodnevna IT konferencija od developera za developere, koju organizira Serengeti, i koja je originalno zamišljena kao idealna stvar za predstavljanje tvrtke, a ove godine održat će se u Varaždinu, u subotu 26. listopada. Prvo izdanje konferencije održano je prošle godine u Bjelovaru.

Na njoj su bili uglavnom predavači iz samog Serengetija, koji su govorili o raznim temama kao što su izazovi vođenja timova, primjena DevOpsa, a bilo je tu i konkretnih development tema, kao što je bilo moje predavanje o implementaciji rješenja problema daljinskog podizanja rampe i kroničnom nedostatku daljinaca za nju. Bila je odlično primljena od posjetitelja pa je Serengeti samim time odlučio i ove godine održati Geticon. Ovaj put u Varaždinu (još jednom gradu gdje je Serengeti otvorio urede), a bit će još veći i bolji s temama Industrije 4.0, na kojima će predavati predavači iz tvrtki s kojima Serengeti posluje. Dođite. Stavite je u svoj Kalendar IT događaja!