
Što iOS i Android timovi u Photomathu rade kako bi odlični rezultati aplikacije bili konstanta, a ne rezultat sretnog spleta okolnosti?
Kako je biti dijelom tima koji, iako djeluje u maloj državi poput Hrvatske, stoji iza globalno uspješne aplikacije? Odgovore na ta pitanja (i još ponešto) ponudili su nam Tech Leadovi za operativne sustave Android i iOS u Photomathu.
Domagoj Boroš, danas Photomathov iOS Tech Lead, prije šest godina bio je student koji nije ni slutio u što će se upustiti, prisjeća se:
Naginjao sam prema iOS-u i Appleovim sustavima još od srednje škole. No, nije mi toliko bila bitna platforma koliko je li projekt zanimljiv, kao i hoću li moći učiti načela i temelje koje ću moći primijeniti i na drugim platformama te prijeći na druge tehnologije.
U Photomathu je počeo raditi kao student 3. godine zagrebačkog Fakulteta elektrotehnike i računarstva, smjer računalne znanosti.
Htio sam raditi na projektu koji ima konkretnu primjenu u stvarnome svijetu. Photomath je bio među rijetkima koji su se bavili nečim što je bilo intrigantno studentima mog smjera. Bilo mi je važno da učim od najboljih inženjera i radim na izuzetno zanimljivom projektu. Odluka je bila neupitna.
Svaki tehnološki napredak unutar aplikacije znači i kompleksniji sustav za mobilni uređaj

U vrijeme kada se Domagoj zaposlio u Photomathu uređaji su bili slabiji nego danas, važnije je bilo optimizirati manji skup funkcionalnosti kako bi radile i ponudile dobro korisničko iskustvo.
Koristili smo video skeniranje tijekom kojeg su se na svaki frame iz video sekvence na samom uređaju prepoznavali znakovi te se procedura rješavanja raspisivala u pojedinačne korake da bi se na kraju ponudilo konačno rješenje. Optimizacija algoritama kako bi radili u stvarnom vremenu na samim uređajima bila je tada najveći izazov.
S vremenom i napretkom tehnologije, izazovi su se promijenili. Tehnologija koja je omogućila toliko toga je i zahtjevnija. Nemoguće je danas imati kompletan sustav na jednom uređaju, unatoč tome što su mobilni uređaji daleko jači, objašnjava Domagoj:
Nisu upitni sami algoritmi već raznolikost rješenja i sustava pomoću kojih se ta rješenja generiraju, a koje Photomath nudi. Zbog toga se naši sustavi sele u oblak. A zato je danas najveći izazov stvoriti najbolji mogući UX kroz optimiziranu mrežnu komunikaciju.
Uz to, projekt je u smislu codebasea puno veći pa je bitno kreirati i održavati standard dobrih programerskih praksi koji omogućuju skaliranje istog. Također, tim je narastao pa je rad puno dinamičniji. Potrebno je više truda oko rada u većem timu.
Androidaš kojeg je razvoj vlastite platforme doveo do Photomatha
S druge strane mobilnih operativnih sustava u Photomathu stoji Petar Alilović, njihov senior inženjer i Android Tech Lead. U IT-ju je počeo raditi kao student FER-a, da bi nakon završenog studija pokrenuo vlastiti startup TalkBook, platformu za poslovnu inteligenciju namijenjenu predavačima i publici koja ih prati uživo. No, to je palo u drugi plan nakon što se zaposlio u Photomathu.

Kad se priključio Photomathu, tvrtka je već bila globalno poznata i imala oko milijun korisnika dnevno. Iako su timovi bili manji i nije ih bilo toliko koliko ih je danas, ipak je bila riječ o složenom projektu.
Moji su izazovi u početku bili vezani uz upoznavanje s projektom i balansiranje izrade novih mogućnosti sa zadacima održavanja projekta. Kako je snažan naglasak na stabilnosti aplikacije, po prvi puta sam se susreo s vrlo specifičnim problemima koji se manifestiraju samo na nekim uređajima.
Uz činjenicu da sve što se napravi doista koriste milijuni ljudi diljem svijeta kao prednost rada u Photomathu Petar također izdvaja angažiran People & Culture odjel koji svakom zaposleniku pruža podršku tijekom individualnog razvoja.
Sad kad smo predstavili voditelje, vrijeme je dotaknuti se i detalja o samom radu mobile app timova. Timovi koje predvode Petar i Domagoj u razvoju koriste niz alata bez kojih bi im posao bio puno teži, pa čak i nemoguć.
Trenutno im je oko 70 % iOS projekta napisano u Swiftu
Izdanje aplikacije za iOS isprva je bilo napisano u programskom jeziku Objective-C. Swift je bio tek u počecima i nije bio zreo za dugoročan projekt.
Od početka nismo htjeli koristiti previše biblioteka trećih strana već smo sve što smo mogli napravili sami: crtanje grafova, prikaz rezultata, animacije, sustav s kamerom, naš rješavač matematike… Nakon što je objavljena verzija Swifta s ABI stability odlučili smo se u potpunosti prebaciti na Swift. Sve novo što radimo pišemo u Swiftu, a stari računalni kod se polako prepisuje.
Trenutno je oko 70 posto projekta napisano u Swiftu. Za arhitekturu i programske principe najviše se pridržavamo Appleovih standarda. Zahvaljujući tome je sve pisano na standardan, poznat i provjeren način pa se ne borimo sa značajkama koje nam Apple daje kroz svoje sustave i biblioteke, a i lakše se snalazimo u kodu.
Zahtjevni Appleovi standardi pritom im ne predstavljaju problem. Nije riječ, istaknuo je Domagoj, o nemogućim ili besmislenim uvjetima već jako dobrim smjernicama za izradu kvalitetnih aplikacija.
Testiranjem protiv fragmentacije u svijetu Androida

Što se Androida tiče, kod tehničke implementacije koriste niz biblioteka Android Jetpacka, većinu funkcionalnosti koje pruža platforma Firebase i biblioteke koje to omogućuju.
Koristimo još i OkHttp i Retrofit za mrežnu komunikaciju te Gson za deserijalizaciju. Za rad na novoj značajki uglavnom provodimo niz iteracija i prototipiranja. Zbog toga UI komponente koje koristimo u aplikaciji implementiramo sami od početka. Takav se način rada pokazao najfleksibilnijim.
Android je poznat po visokom stupnju fragmentiranosti, kako samog operativnog sustava tako i uređaja. Kako u Photomathu pristupaju rješavanju tog problema?
Imamo niz procesa pomoću kojih nastojimo smanjiti mogućnost greške prilikom programiranja. Nakon što dodamo novu značajku ili promijenimo postojeći tim za provjeru kvalitete radi dodatne testove stabilnosti, uglavnom na više različitih uređaja.
Naravno, nije sve moguće uvijek savršeno istestirati prije puštanja u produkciju. Zbog toga se i nakon toga prati stabilnost aplikacije, kako bi što brže popravili grešku koja utječe na značajan broj korisnika, ako se pojavi.
Tehnički gledano, najvećim izazovima smatra one usmjerene na preinaku dijelova aplikacije kako bi u budućnosti bili održiviji.
Tipični ciklus razvoja u Photomathu traje mjesec dana
Iako se razvojni ciklusi pojedinih dijelova Photomatha međusobno razlikuju, timovi koji na određen način ovise o aplikaciji međusobno su ih uskladili. Tipični ciklus razvoja u Photomathu traje između 30 i 45 dana. Uključuje planiranje, izradu specifikacija, implementaciju, testiranje i praćenje aplikacije u produkciji. Sve to će nadgledati kao novi član Photomatha Filip Šišić koji će na poziciji Engineering Managera pružati podršku Android i iOS timovima.

Vremenski okvir od mjesec do mjesec i pol dana su si sami zadali. Naime, kako rade vlastiti proizvod nisu u velikoj mjeri ograničeni vanjskim utjecajima i datumima, no trebalo je uspostaviti kakvu-takvu strukturu. Osim toga, pri razvoju aplikacije i implementaciji novih značajki najvažnija načela su im točnost, stabilnost i učinkovitost, upravo tim redoslijedom, ističe Domagoj:
Bitno nam je znati kako nešto radi i kada nešto implementiramo, kao i zašto to radimo na određeni način. Ako nam je poznata dubina rješenja koje primjenjujemo na problem, tada je lako održati točnost i stabilnost. Za efikasnost već treba ići još malo dublje i biti malo više kreativan.
Kako aplikacija iz godine u godinu postaje sve kompleksnija, prilikom planiranja novih mogućnosti potrebno je što prije uočiti kako dodavanje ili mijenjanje nekog dijela može utjecati na ostatak aplikacije. Također sve je potrebnije imati dobre načine detekcije problema kako bi, ako se neki propust i dogodi, reakcija mogla biti pravovremena. Trenutno Photomathovi App timovi koriste skupinu alata Atlassian za pisanje specifikacija, raspodjelu i praćenje zadataka. Također, sva dokumentacija i finalni “source of truth” su u Confluence dokumentima, koji su zadnja riječ za implementaciju i arhivu. Za task management unutar tima koriste JIRA-u.
Tijesna suradnja radi boljeg korisničkog iskustva
Kako bi što brže, učinkovitije i uz što manje grešaka mogli stalno nuditi nova izdanja Photomathove mobilne aplikacije, suradnja timova zaduženih za Android i iOS mora biti što bolja. Većina stvari koje rade se preklapaju, pojasnio je Petar:
Već u početnim fazama zajedno sudjelujemo u planiranju i specificiranju promjena. Finalna tehnička implementacija je specifična za svaki sustav, ali i tijekom izrade dijelimo savjete i iskustva. Sve to ne bi bilo moguće bez odličnih kolega koji su spremni izdvojiti vrijeme za suradnju i procesa koji to podržava.
Domagoj je potvrdio kako se rad timova za dvije glavne softverske platforme uvelike preklapa. Cilj je, naglasio je, uz poštivanje smjernica svake platforme kreirati podjednak UI i UX.
Sve značajke ne rade uvijek paralelno istovremeno na jednoj i drugoj platformi. To nam omogućuje istraživanje, ispitivanje i prototipiranje više stvari odjednom.
Ipak, sve te značajke na kraju završe na obje platforme bez velikog međusobnog razmaka. Ono što se tijekom testova pokaže kao dobro na jednoj implementiramo i na drugoj platformi.
Zanima li vas više o radu iOS i Android timova u Photomathu pročitajte blog postove u kojima Petar i Domagoj dijele još više detalja o svom iskustvu rada u Photomathu (a otkrili su i neke svoje tajne supermoći). Također, tu je i Photomath Talks, serijal virtualnih meetupova za tech zajednicu na kojem predaju njihovi najiskusniji inženjeri. Pogledajte snimku meetupa s Domagojem i Petrom, a ako želite da vas obavijeste o budućim sličnim događajima, prijavite se u njihov Tech Community.
Ako ste iOS ili Android stručnjak koji bi htio doprinijeti usavršavanju aplikacija Photomatha, svakako provjerite Photomathove stranice karijera. Zanima li vas više kako rade drugi Photomath timovi, pogledajte što smo dosad pisali.
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.