Kada koristimo aplikacije, platforme ili digitalna rešenja, retko razmišljamo o tome šta se dešava iza kulisa. Programeri su ti koji oblikuju ideje u funkcionalne proizvode, rade sa podacima, eksperimentišu sa veštačkom inteligencijom i suočavaju se sa svakodnevnim izazovima koje korisnici nikada ne vide. U ovom razgovoru želimo da otkrijemo kako oni gledaju na svoj posao i kako vide budućnost ove profesije. Odgovori na ova pitanja otkrivaju koliko je programerski rad složen i značajan, iako često ostaje nevidljiv. Upravo kroz ovakve razgovore možemo bolje razumeti kako nastaju digitalna rešenja koja oblikuju naš svakodnevni život.
Razgovor vodila: Nina Kovačević
Marko Kovačević danas radi kao Lead Software Engineer na projektima za First Horizon Bank u Sjedinjenim Američkim Državama. Vodi Platform Engineering tim od devet ljudi, a njegov posao je usmeren na izgradnju i unapređenje platformi, infrastrukture i alata koje koriste i drugi inženjerski timovi.
Njegov posao je danas dosta širi od samog programiranja. Naravno, tu su i dalje arhitektura sistema, razvoj internih platformi, automatizacija procesa, CI/CD, monitoring i rešavanje kompleksnijih tehničkih problema. Međutim, kako je vremenom prelazio u vodeće uloge, sve veći deo posla postao je stvaranje okruženja u kojem njegov tim, ali i drugi timovi sa kojima sarađuje, mogu efikasnije da rade.
Platform Engineering je specifičan upravo po tome što često pokreće inicijative koje menjaju način rada mnogo šireg dela organizacije. Zbog toga svoj posao danas manje posmatra kao pisanje koda, a mnogo više kao rešavanje problema pomoću tehnologije.
1. Kako izgleda proces od prvog koncepta do funkcionalnog proizvoda iz tvoje perspektive?
U mom slučaju taj proces često izgleda malo drugačije od klasične slike razvoja proizvoda. Kao Platform Engineering tim, često vodimo inicijative koje menjaju i način rada drugih timova. Na neki način smo pokretači promena u sistemima koji su već veliki, stabilni i funkcionalni i to nosi posebnu vrstu odgovornosti.
Najčešće je u pitanju kombinacija više stvari. Postoje strateški ciljevi kompanije i određeni pravci razvoja, postoji arhitektura koju planiramo, ali istovremeno kroz svakodnevni rad sami prepoznajemo probleme i prostor da nešto uradimo bolje.
Naš posao je da sve to pretvorimo u konkretno tehničko rešenje, ali i da ljudima objasnimo zašto nešto menjamo, kako će ta promena izgledati i šta njome želimo da postignemo.
Kada menjate sisteme koji već funkcionišu, ne možete samo da kažete ljudima da je novo rešenje bolje i očekujete da ga svi odmah prihvate. Promena prirodno donosi određenu dozu nestabilnosti i zato morate da izgradite poverenje.
Po mom iskustvu, poverenje se najviše gradi rezultatima. Kada ljudi nekoliko puta vide da iza onoga što govorite stoje znanje, integritet i stvarna želja da nešto napravite bolje, onda će mnogo lakše imati poverenja u vas i kada predložite sledeću promenu.
Zato je za mene put od koncepta do funkcionalnog proizvoda istovremeno tehnički i ljudski proces. Možete imati odličnu arhitekturu i odličan kod, ali ako ne umete da komunicirate zašto nešto radite i povedete ljude sa sobom, veoma je teško napraviti stvarnu promenu.

2. Kako posmatraš podatke: da li su ti oni samo „gorivo“ za kod ili ih vidiš kao ključnu vrednost proizvoda?
Podatke vidim kao jedan od ključnih elemenata za donošenje dobrih odluka. Bez njih veoma lako možemo da napravimo proizvod na osnovu sopstvene pretpostavke o tome šta korisniku treba, umesto na osnovu toga kako ga on zaista koristi.
Naravno, prvi uslov je da se podaci prikupljaju odgovorno i u skladu sa regulativama, standardima i privatnošću korisnika. Posebno kada radite u industriji kao što je bankarstvo, to nije nešto o čemu razmišljate naknadno. To mora da bude deo sistema od samog početka.
Ali ni velika količina podataka sama po sebi ne znači mnogo. Podatak vam može reći šta se dogodilo, ali neko i dalje mora da postavi pravo pitanje, razume zašto se nešto dogodilo i odluči šta će sa tim saznanjem da uradi.
Tu su veoma korisni A/B testiranje i product analytics. Umesto da pretpostavimo da je jedno rešenje bolje, možemo da napravimo različite varijante i vidimo kako ih ljudi zaista koriste. Nekada nešto što nama kao inženjerima deluje potpuno intuitivno korisnicima uopšte nije intuitivno.
Zato podatke ne vidim ni kao „gorivo za kod“, niti kao konačan odgovor. Oni su osnova za donošenje odluka. Prava vrednost nastaje tek kada spojite kvalitetne podatke, znanje i dobru ideju o tome šta želite da postignete.
Na kraju, cilj nije prikupiti što više podataka. Cilj je napraviti bolji proizvod.
3. Na koji način koristiš veštačku inteligenciju u svom radu i gde uočavaš njen najveći potencijal?
Veštačku inteligenciju danas koristim praktično svakodnevno. Koristimo je pri pisanju dokumentacije, definisanju zahteva, testiranju, brainstormingu, radu sa kodom, DevOps-om i infrastrukturom.
Meni je, međutim, mnogo interesantnije to što AI nije samo ubrzao stvari koje smo već radili. Omogućio nam je da se bavimo i stvarima koje ranije možda ne bismo ni pokušali da napravimo zbog vremena, kompleksnosti ili cene.
Dobar primer je razvoj internih alata za potrebe koje su se ranije često rešavale kupovinom specijalizovanih SaaS proizvoda. Uz današnje AI modele moguće je mnogo brže razviti alate prilagođene konkretnim potrebama kompanije, od automatizacije određenih procesa do pomoći pri analizi i review-u koda.
To ima vrlo konkretnu poslovnu vrednost. Pored produktivnosti, u određenim slučajevima možemo da smanjimo potrebu za dodatnim komercijalnim softverom i samim tim smanjimo troškove. A pritom dobijamo nešto što možemo da prilagođavamo sopstvenim procesima.
Tu mi AI postaje posebno zanimljiv. Više nije samo alat koji jednom programeru pomaže da brže napiše kod. Može da postane deo inženjerske infrastrukture kompanije.
Druga velika promena je brzina eksperimentisanja. Danas možemo mnogo brže da proverimo neku ideju. Ako vidimo da smo krenuli pogrešnim putem, možemo da promenimo pravac bez ogromnog utroška vremena.
Ali mislim da zbog toga znanje nije postalo manje važno. Zapravo bih rekao suprotno. Nikada nisam imao toliko mogućnosti da učim kao danas. Ako ste radoznali, volite da čitate, istražujete i postavljate pitanja, AI je neverovatan alat za učenje.
Naravno, morate da razumete šta ste dobili. AI vrlo brzo može da napravi nešto što na prvi pogled izgleda potpuno ispravno, a da zapravo nije. Zadatak inženjera je da to preispita i proveri. Posebno kada govorimo o sistemima gde su bezbednost i pouzdanost važne, ljudska kontrola je i dalje neophodna.
Za mene najveći potencijal AI-ja nije da razmišlja umesto nas, nego da nam ostavi više vremena da razmišljamo o pravim problemima.
4. Da li misliš da AI može da ugrozi tvoju profesiju ili ga vidiš kao alat koji ti pomaže da celokupan proces rada bude produktivniji?
Mislim da smo kao ljudi prirodno skloni tome da velike tehnološke promene prvo gledamo kroz strah. Prvo pitanje je obično šta će ova tehnologija zameniti i koje će profesije nestati.
Sigurno je da će AI promeniti tržište rada. Verovatno će u nekim oblastima biti potrebno manje ljudi za posao koji danas radi veći broj. Mislim da nema smisla pretvarati se da se to neće dogoditi.
Ali postoji i druga strana priče. Živimo u veoma digitalnom svetu. Gotovo da više ne postoji deo svakodnevnog života koji na neki način nije povezan sa softverom, ekranom ili aplikacijom. AI sada značajno smanjuje vreme i resurse potrebne da se nešto napravi.
To možda znači da će za pojedine proizvode biti potrebno manje inženjera, ali istovremeno znači da će mnogo ideja koje ranije nisu bile ekonomski isplative sada postati moguće.
Tu vidim veliku priliku. Jedan softverski inženjer danas može sa relativno malo resursa da napravi nešto za šta je nekada bio potreban čitav tim. Mislim da ćemo zbog toga videti mnogo više ljudi koji će eksperimentisati, praviti svoje proizvode i pokušavati da svoje ideje pretvore u nešto konkretno.
Naravno, postoji određena doza neizvesnosti kada vidite koliko brzo tehnologija napreduje. Ne mislim da bilo ko danas može sa sigurnošću da kaže kako će naša profesija izgledati za deset ili dvadeset godina.
Ono što mislim da će se sigurno menjati jeste sama definicija programera. Biće manje važno koliko brzo neko može ručno da napiše određenu količinu koda, a mnogo važnije koliko dobro razume problem, sistem i ono što na kraju pokušava da napravi.
Tehnologija nas tera da se menjamo. Ljudi koji prihvate nove alate, nauče kako da ih koriste i nastave da razvijaju svoje znanje biće u mnogo boljoj poziciji od onih koji odluče da ih ignorišu.
5. Šta je ono što ljudi „iza scene“ ne vide, a bez čega proizvod ne bi postojao?
Ovo mi je zanimljivo pitanje jer se i sam, iako se bavim ovim poslom, ponekad uhvatim kako koristim neku aplikaciju, nešto ne radi i pomislim: „Pa dobro, kako ne možete da napravite jedno dugme da radi?“ (smeh)
I potpuno razumem korisnika koji tako razmišlja. Kada pritisnete dugme, jedino što očekujete jeste da se nešto dogodi. Zapravo je dobro što ne morate da znate šta se sve dešava iza njega.
A iza tog jednog klika može da stoji ogroman broj sistema. Imate servere i infrastrukturu, mreže, DNS, sertifikate, različite servise koji međusobno komuniciraju, API-je, baze podataka, bezbednosne mehanizme, a u bankarskom okruženju i čitav niz regulatornih zahteva.
I to je samo ono što je potrebno da bi nešto radilo.
Moramo da razmišljamo i o tome šta se događa kada ne radi. Moramo da znamo šta se dogodilo, gde je nastala greška i koji deo sistema ju je izazvao. Zbog toga postoje monitoring, logovi i sistemi za upozorenja koji treba da prepoznaju problem, obaveste pravi tim i daju inženjeru dovoljno informacija da može da vidi šta se zapravo dogodilo.
A još nismo ni došli do toga kako je taj kod stigao do produkcije. Pre nego što korisnik dobije novu funkcionalnost, kod prolazi kroz razvoj, review, automatizovane testove, bezbednosne provere i različita okruženja.
Iza svega toga na kraju stoje ljudi. Inženjeri, dizajneri, product, security, infrastruktura i mnogi drugi moraju da rade zajedno da bi iskustvo korisnika bilo što jednostavnije.
Postoji jedan zanimljiv paradoks u našem poslu. Što smo ga bolje uradili, korisnik je manje svestan koliko je sistem iza proizvoda zapravo komplikovan.
Korisnik vidi dugme. Naš posao je da nikada ne mora da razmišlja o svemu što stoji iza njega.
6. Koliko je tvoj posao zapravo kreativan i koliko fleksibilnosti ti dozvoljava u tom smislu, a koliko se svodi na rutinske zadatke?
Mislim da je softversko inženjerstvo oduvek bilo veoma kreativan posao. Sa pojavom AI-ja se samo promenilo mesto na kojem se ta kreativnost najviše ispoljava.
Ranije smo veliki deo kreativnog procesa vezivali za samu izradu. Kako ćete napisati kod, kako ćete ga organizovati i kako ćete korak po korak napraviti određeno rešenje. Danas AI može veoma brzo da proizvede veliki deo toga.
Zbog toga kreativnost nije nestala. Samo se pomerila jedan nivo iznad. Sve važnije postaje pitanje šta zapravo želim da napravim i kako želim da rešim određeni problem.
Da biste dobili dobro rešenje, morate jasno da definišete šta sistem treba da radi, ali često i šta ne treba da radi. Morate da razumete ograničenja i predvidite različite scenarije. To je zanimljiv balans. Ako ste previše neodređeni, verovatno nećete dobiti ono što ste zamislili. Ako pokušate da definišete apsolutno svaki detalj, vrlo lako možete da napravite kontradiktorne zahteve i izgubite suštinu.
Sa druge strane, deo rutinskog posla je postao jednostavniji i to nam ostavlja više prostora za eksperimentisanje. Mogu da probam nekoliko različitih pristupa problemu za vreme za koje bih ranije možda napravio samo jedan.
Postoji ipak deo posla koji svesno ne prepuštam AI-ju, a to je komunikacija sa ljudima. Mogu da ga koristim da istražim problem, sagledam različite opcije ili preispitam neku odluku, ali razgovor sa svojim timom želim da vodim ja.
Posebno kada vodite ljude, mislim da poverenje, razumevanje i direktna komunikacija ne treba da se automatizuju.
Zato ne mislim da je moj posao danas manje kreativan. Kreativnost se samo sve manje meri količinom koda koji ste napisali, a sve više kvalitetom problema koje ste uspeli da rešite.

7. Kako izgleda saradnja sa dizajnerima, menadžerima i drugim članovima tima?
Za mene dobra saradnja počinje time da znamo ko je za šta odgovoran. Dizajnerske odluke treba prvenstveno prepustiti dizajnerima, inženjerske inženjerima, dok product ima važnu ulogu da poveže različite perspektive i pomogne nam da zajedno dođemo do najboljeg rešenja.
Trudim se da ekspertsko razmišljanje prepustim ekspertima. Ako imate kvalitetne ljude u timu, morate da im date prostor da rade ono u čemu su dobri.
To, naravno, ne znači da se uvek slažemo. Neslaganje je normalan i često veoma zdrav deo posla. Neke od najboljih odluka nastanu upravo zato što je neko bio spreman da kaže: „Mislim da ovo nije dobro i evo zbog čega“.
Bitno je kako vodimo takve razgovore. Morate da znate kada treba da insistirate na nečemu što smatrate važnim, ali i kada treba da spustite loptu, saslušate drugu stranu i prihvatite da možda neko drugi ima bolje rešenje.
Ego tu često može da bude veliki problem. Što duže radim ovaj posao, sve više mislim da je sposobnost da ostavite ego po strani i stvarno saslušate ljude jedna od najvažnijih profesionalnih veština.
Posebno kada razgovaram sa nekim ko je ekspert u oblasti koja nije moja, trudim se prvo da slušam i postavljam pitanja. Ne morate biti najglasnija osoba u prostoriji da bi vaše mišljenje imalo težinu.
Tehničko znanje vam daje kredibilitet, ali ako želite da vodite ljude, morate da znate i da slušate, jasno kažete šta mislite i rešavate neslaganja bez stvaranja nepotrebnih konflikata.
8. Da li osećaš ličnu odgovornost prema krajnjim korisnicima proizvoda?
Apsolutno. Tokom karijere sam često radio na proizvodima kod kojih su novac, finansijske transakcije i osetljivi podaci bili sastavni deo sistema, tako da tu uvek osećam dodatnu dozu odgovornosti prema ljudima koji te proizvode koriste.
Korisnik zapravo vidi samo interfejs. Otvori aplikaciju, prijavi se, pritisne nekoliko dugmadi i kroz taj mali vidljivi deo sistema poverava vam nešto što mu je veoma važno. Svoj novac, svoje podatke i na kraju svoje poverenje.
On ne mora, niti bi trebalo, da zna šta se sve događa iza toga. Upravo zato je naša odgovornost još veća.
Za mene nije dovoljno da nešto samo tehnički radi. Moramo da razmišljamo da li je ono što smo napravili pouzdano, da li korisnik razume šta se događa, da li su njegovi podaci zaštićeni i šta će se dogoditi ako neki deo sistema zakaže.
Zbog toga dosta insistiram da se alati i sistemi koje uvodimo dodatno proveravaju i testiraju. Testiranje nije nešto što uradite jednom pred puštanje proizvoda. Ono postoji na više nivoa i deo je čitavog procesa razvoja.
Posebno u finansijskoj industriji, bezbednost i pouzdanost ne mogu biti nešto što dodajete na kraju. O njima morate da razmišljate od prvog dana.
Kvalitetan finansijski proizvod za mene zato nije samo onaj koji funkcioniše. To je proizvod koji korisnik može svakodnevno da koristi i da ima poverenje da će ono što očekuje biti urađeno na bezbedan i pouzdan način.
Kada vodite veći tim i sarađujete sa velikim brojem drugih timova, jedan od najvećih problema postane vreme. U jednom trenutku više nije pitanje kako da uradite još više stvari, nego kako da svoje vreme i pažnju usmerite na stvari koje su zaista važne.
Zato dosta insistiram na dobroj pripremi. Želim da imamo što manje sastanaka, da ti sastanci budu kvalitetni i da na njih dolazimo sa idejom šta pokušavamo da rešimo. Volim da znamo i koju odluku želimo da donesemo na tom sastanku. U suprotnom komunikacija vrlo lako postane samo buka koja svima oduzima vreme.
Pošto kao Platform Engineering tim radimo sa velikim brojem drugih timova, moramo dobro da razumemo i prioritete. Šta nam je važno sada, šta želimo da završimo ovog meseca, šta zavisi od nekog drugog i šta može da sačeka. Ne može sve da bude prioritet.
Ali možda je još veći izazov kada vodite ljude da pronađete balans između rezultata i ljudskosti.
Ljudi nisu mašine koje svakog dana rade na potpuno isti način. Svako prolazi kroz neke svoje stvari, ima dobre i loše dane. Mislim da morate dovoljno dobro da poznajete ljude sa kojima radite da biste znali kada nekome treba pomoći, kada treba razgovarati, kada ga malo pogurati, a kada mu jednostavno treba dati prostora.
Sa druge strane, odgovornost mora da postoji i rezultati moraju da postoje. Ne mislim da su te dve stvari u sukobu. Možete da imate visoka očekivanja od ljudi, a da istovremeno napravite tim u kojem ljudi pomažu jedni drugima, mogu da se našale, otvoreno razgovaraju i imaju određenu bliskost.
Kada nemam dovoljno informacija da donesem neku odluku, nemam nikakav problem da pitam. Nemam problem ni da kažem da nešto ne znam. Istražimo problem, pitamo ljude koji znaju više i pogledamo kako se to uklapa u širu sliku onoga što pokušavamo da napravimo.
Veliki sistemi su na neki način ogromne slagalice i meni je upravo taj deo posla veoma zanimljiv.
Imam veliko poverenje u svoj tim i mislim da smo trenutno u odličnoj poziciji upravo zato što svako doprinosi na svoj način. Ne mislim da je posao leada da bude najbolji u svakoj pojedinačnoj stvari. Njegov posao je da napravi okruženje u kojem ljudi mogu da budu dobri u onome što rade i da zajedno dođemo do rezultata.
Kada imate dobre stručnjake koji istovremeno funkcionišu kao dobri ljudi i kao tim, mislim da zaista postoji vrlo malo problema koje zajedno ne možete da rešite.
9. Kako zamišljaš budućnost programerskog posla u narednih 10 godina i koja je tvoja poruka onima koji bi pošli ovim putem?
Ovo je pitanje koje mi ljudi u poslednje vreme veoma često postavljaju, posebno oni koji tek žele da počnu da se bave programiranjem. Pitaju me: „Da li uopšte ima smisla da učim programiranje ako AI već danas može da piše kod?“
Moj odgovor je – da, apsolutno ima.
Mislim da će čovek još dugo biti potreban u svim oblastima razvoja digitalnih proizvoda, bilo da govorimo o softverskom inženjerstvu, dizajnu, UX-u ili nekim novim ulogama koje će tek nastati. Ono što se već sada menja jesu granice između tih profesija. Alati nam omogućavaju da radimo mnogo više stvari nego ranije i naše uloge samim tim postaju šire.
Ne mislim da će programer budućnosti biti osoba koja jednostavno zna sintaksu pet programskih jezika. Mnogo važnije će biti da razume problem, ume da uči, postavlja dobra pitanja, komunicira sa ljudima i zna da koristi alate koji su mu dostupni.
Ako bih nekome ko danas počinje dao jedan savet, rekao bih mu da bude radoznao.
Softverski inženjeri su na neki način večiti učenici. Ovo nije profesija u kojoj nešto naučite jednom i onda narednih trideset godina radite na isti način. Tehnologija se stalno menja. AI je taj proces dodatno ubrzao, ali nam je istovremeno dao neverovatne mogućnosti za učenje.
Tržište rada će se takođe menjati. Kompanije će uvek tražiti načine da budu efikasnije i smanje troškove, a na tržište utiču i mnogo širi ekonomski faktori, ne samo AI. Naravno da AI ima svoj uticaj i bilo bi besmisleno to ignorisati, ali mislim da je pogrešno svaku promenu koju danas vidimo pripisivati samo njemu.
Postoji ipak nešto za šta mislim da će biti važno bez obzira na to koliko tehnologija napreduje, a to je kakav ste čovek.
Danas i sam učestvujem u intervjuima prilikom zapošljavanja i, pored tehničkog znanja, dosta obraćam pažnju na osobu sa kojom razgovaram. Da li želi da uči? Da li je radoznala? Da li će pomoći kolegi? Da li ume da sasluša? Da li može da kaže „ne znam“ i onda pokuša da pronađe odgovor? Da li ima taj „can-do“ stav i stvarnu želju da nešto napravi?
Svi na kraju želimo da radimo sa ljudima koji žele da doprinesu, koji imaju entuzijazam i sa kojima je prijatno zajedno rešavati probleme.
Tehničko znanje može da se nadogradi. Nova tehnologija može da se nauči. Danas su nam informacije dostupnije nego ikada. Mnogo je teže naučiti nekoga integritetu, odgovornosti, radoznalosti i odnosu prema drugim ljudima.
Zato bih nekome ko danas ulazi u ovu industriju rekao: učite programiranje, učite AI, koristite najbolje alate koji su vam dostupni i nemojte se plašiti promena, ali nemojte zaboraviti da radite i na sebi.
Jer što tehnologija bude sposobnija, mislim da će ono što je ljudsko u nama postajati još važnije.
Fotografije: Marko Kovačević (privatna arhiva)