
Jezgra najpoznatije hrvatske aplikacije: Ovo je Photomathov tim o kojem ovise svi drugi
Baš kao što Photomath aplikacija računa i rješava matematičke zadatke za korisnike, njen Core tim računa i rješava zadatke vezane za brzinu, stabilnost i točnost aplikacije. Kako rade inženjeri u tom timu saznali smo od čovjeka koji ih vodi, a koji je ujedno drugi zaposlenik Photomatha.
Od prvog dana do danas, sedam godina kasnije, Matija Korpar, Principal Engineer u Photomathu i drugi zaposlenik firme, kaže kako se u ovom hrvatskom startupu promijenilo skoro sve – od komunikacije, organizacije, tehnologije, brojnosti zaposlenika – osim težnje da se napravi odličan proizvod koja je ostala konstanta.
Core tim zadužen je da temeljni elementi Photomath aplikacije – cloud sustav za serviranje matematičkog sadržaja te sustav za automatizirano generiranje korak-po-korak objašnjenja – funkcioniraju baš kako treba.
Što čini temelje Photomatha?
Razvoj Photomatha može se odvojiti u tri ključna segmenta: razvoj mobilne aplikacije za iOS i Android, razvoj web platformi, sistema i servisa te razvoj core (temeljnih) komponenti. U slučaju potonjeg, to podrazumijeva:
- usavršavanje automatiziranog sustava za rješavanje matematičkih zadataka (solver engine)
- razvoj i održavanje cloud sustava za serviranje matematičkog sadržaja te
- razvoj i održavanje sustava za spajanje knjiga iz baze s korisničkom slikom.
Matija pojašnjava kako je core tim nastao iz potrebe unificirane tehnologije, odnosno kako bi razvojni tim tu tehnologiju mogao koristiti na svim platformama za koju je Photomath tada pružao podršku (Windows Phone, Android, iOS).
Trenutno, pod core tehnologije se svrstava apsolutno sve što je potrebno da automatizirani procesi u pozadini rade čim bolje. Konkretno, za dio vezan uz solver engine to znači stabilniji sustav i više sadržaja, a za servise da rade čim brže uz što manje resursa.
Prvi član core tima

Matija otkriva kako je core tim nastao kad i Photomath, a on je bio njegov prvi član:
Moj posao bi se kolokvijalno mogao opisati kao ‘Katica za sve’, tj. što god treba u datom trenutku. No, moja pozicija podrazumijeva i obaveze izvan samog tima. To su konzultacije oko arhitekture raznih sustava, konzultacije oko tehnologije…
Ukratko, tu sam da pomognem gdje mogu te da promičem kulturu tehnološke izvrsnosti koja je prisutna u Photomathu od početaka. Dodatno, core tim održava i povezuje gotovu svu cloud infrastrukturu koja se koristi od strane korisnika Photomatha.
Što se tiče zadataka core tima u pogledu solver enginea, Matija otkriva da je tu tipični izazov dodavanje novog sadržaja u automatizirano rješavanje bez da se pokvare već prisutni postupci rješavanja.
Selidba temeljnih dijelova aplikacije iz uređaja u cloud
Zanimljivo je spomenuti da su se na početku sve core komponente vrtile na mobilnom uređaju, odnosno sustav za prepoznavanje i rješavanje zadataka prevodio bi slike u tekst i računao rješenja na mobitelu/tabletu. Ipak, radi postepenog povećanja brzine i dostupnosti bežičnog interneta Photomath je prebacio sve te komponente, osim naravno samih mobilnih aplikacija, u cloud, što je bio i jedan od najvećih izazova s kojima su se inženjeri iz core tima susreli.
Aplikacija se tako danas vrti na jednom od popularnih cloud hostinga u mikroservisnoj arhitekturi, potpomognuta modernim container sustavima containerd i Kubernetes.
Matija otkriva da je selidba na cloud obavljena unutar par mjeseci, ali da iteracije poboljšanja protoka podataka još uvijek traju. Također, napominje kako im je izazov u ovom dijelu bio posložiti samu mikroservisnu arhitekturu i napisati sve potrebne potporne bibiloteke za istu:
Ekosustav C++-a je škrt pa i nema puno kvalitetnih frameworkova, pogotovo u području networkinga.

Stari, ali pouzdani C++ kao jezgra enginea za rješavanje matematičkih problema
C++ čini jezgru Photomathove magije od samih početaka. Naime, kako je aplikacija prvotno radila samo na mobilnim uređajima, inženjeri su morali raditi s high-performance jezikom kako bi aplikacija mogla raditi brzo i točno, čak i na slabijim mobilnim uređajima.
I danas se u produkciji core tim služi gotovo isključivo sa C++-om. Međutim, za neke sitnije komponente napisali su par servisa u Node.js-u, a za razvoj automatiziranog solvera osmislili su specifičan matematički jezik iz kojeg se generira C++ kod koji koriste u produkciji. Matija objašnjava kako se dio core tima koji se bavi solverom “može provući i bez znanja C++-a” iako znanje C++-a uvelike olakšava situaciju.
S druge strane, Matija upravo ističe korištenje C++-a kao jednu od posebnosti core tima, uz specifični programski jezik za matematiku koji su sami razvili:
Nestandardna je i posvećenost visokim performansama naših proizvoda. Nema puno kompanija koje imaju core tim ili neki njegov ekvivalent kao na primjer engine team u kompanijama koje se bave igricama. Posao je vrlo nestandardan. Nekad je to nedostatak zbog korištenja vrlo usko specijaliziranih ili vlastitih tehnologija, no s druge strane, prednosti su sloboda u izboru arhitekture i veće mogućnosti nadogradnje tehnologija s kojima radimo.
Matija kaže da su inženjeri orijentirani na nesvakidašnje tehnologije dobrodošli u core tim, koji nakon nedavnih reorganizacija, broji četvero ljudi. Naime, oko projekata koji su bili djelomično ili potpuno u nadležnosti core tima razvili su se novi specijalizirani timovi te je nekoliko članova core tima završilo u tim novim timovima. Tim više im je prijeko potrebno pojačanje.
Suradnja u timu i s drugim timovima
Ovisno o projektu, rad može biti samostalan ili timski. Matija navodi da su manji i specijaliziraniji projekti nerijetko solo posao, dok je solver engine projekt na kojem je kroz godine radilo puno ljudi te se zasniva na unutartimskoj i međutimskoj komunikaciji.
Dinamika posla se stalno mijenja pa tako nekad rade na održavanju postojećih sustava, a nekad rade na sasvim novim projektima.

Što se tiče rada od kuće, Matija govori kako su po tom pitanju u firmi vrlo fleksibilni, ali također ističe kako je njegovo osobno mišljenje da je rad iz ureda, iz perspektive core tima, produktivniji od rada od kuće:
Razlog tome su tehnološka ograničenja međuljudske komunikacije na daljinu. Još uvijek nije moguće na remote način komunicirati dovoljno jednostavno s većim brojem ljudi. Možda mi se idealnim čini neki oblik hibridnog sustava gdje se jedan ili dva dana u tjednu radi od kuće. Također je važno naglasiti da nemaju svi uvjete za rad od kuće pa je time teško generalizirati pravila na sve zaposlenike. Trenutno svi iz [core] tima radimo cijelo vrijeme iz našeg ureda u kojem je samo nas četvero, jer nam svima tako odgovara.
Inženjeri u core timu uz programiranje NE moraju znati kako poučavati matematiku
Od suradnje s ostalim timovima u Photomathu, Matija kaže da je suradnja solverskog dijela core tima s matematičkim razvojnim timom jedna od najdužih i najuređenijih. Ovdje valja istaknuti da, iako se o solver engineu brine core tim, objašnjenja zadataka u potpunosti pripadaju domeni Photomathovih instruktora matematike.
Štoviše, jedna od najvećih zabluda koje ljudi imaju kada im Matija priča o core timu jest da misle kako inženjeri u core timu uz programiranje moraju znati i kako poučavati matematiku te ne očekuju podjelu posla između core tima i matematičkog razvojnog tima.
Matija dodaje da su za potrebu te suradnje čak razvili specijalizirani alat:
Matematički tim napiše postupke u alat, solverski tim ih vidi i implementira u solver. Sustav se zatim automatski osvježi sa novim sadržajem koji matematički tim pogleda. Ako nisu zadovoljni tada se proces ponavlja.
Skoro svi tehnološki timovi u Photomathu “konzumiraju” proizvode core tima

Općenito, u core timu se trude suradnju bazirati na alatima, od kojih su neki generalni dok su neki potpuno interno razvijeni specijalizirani alati. Isto tako, core tim je odgovoran za razvoj navedenih alata.
Matija dodaje da, s obzirom na to da je core (jezgra) u imenu njihovog tima, gotovo svi tehnološki timovi u Photomathu konzumiraju njihove proizvode, a oni se trude jednostavnošću API-ja svima olakšati život. Matija naglašava da je nova cloud infrastruktura ovdje odigrala veliku ulogu jer manje-više sve svoje proizvode pakiraju kao web servise, što olakšava integraciju s ostalim projektima.
Razvoj core tima se temelji na optimizaciji trenutnih procesa, što višem stupnju automatizacije posla te po potrebi uskakanju u nova razvojna istraživanja pa, upitan o potencijalnim novim budućim poslovima, tehnologijama i izazovima, Matija odgovara kako će se oni s vremenom nametnuti sami od sebe.
Ako se vidite u ulozi izvrsnog stručnjaka koji bi mogao doprinijeti usavršavanju temelja Photomatha, svakako provjerite Photomathove stranice karijera. A ako vas zanima više kako rade drugi Photomath timovi, pogledajte što smo dosad pisali. 🙂
Photomath je početkom ove godine pokrenuo “Photomath Talks”, seriju virtualnih meetupova za tech zajednicu, na kojem su predavači njihovi najiskusniji inženjeri. Na snimci gore Marko i Matija razgovaraju na temu: “Sve o razvoju softvera u Photomathu: od C++-a do Reacta i natrag”. Ako želite da vas obavijeste o budućim sličnim događajima, prijavite se u njihov Tech Community.
Sukladno članku 94. Zakona o elektroničkim medijima, komentiranje članaka na Netokraciji dopušteno je samo korisnicima koji ostave svoje ime i prezime te mail adresu i prihvate pravila ponašanja.
Pravila ponašanja
Na Netokraciji za vas stvaramo kvalitetan, autorski potpisan sadržaj i zaista se veselimo vašim kvalitetnim, kontruktivnim komentarima. Poštujmo stoga jedni druge prilikom komentiranja, kao i Zakon, držeći se sljedećih pravila ponašanja:
Kako koristimo podatke koje ostavljate? Bacite oko na našu izjavu o privatnosti.
Sve ostale komentare ćemo s guštom spaliti, jer ne zaslužuju svoje mjesto na internetu.