Što iOS i Android timovi u Photomathu rade kako bi odlični rezultati aplikacije bili konstanta, a ne rezultat sretnog spleta okolnosti?
Foto: Mario Poje

Š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 najjači je Appleov pametni telefon bio iPhone 6, a prosječni su korisnici najčešće koristili iPhone 4. Foto: Mario Poje

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.

Razvojem za Android, Petar se počeo baviti još dok je bilo popularno izdanje Jelly Bean. Foto: Mario Poje

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

Foto: Mario Poje

Š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.

S obzirom na to da dio Photomathovih zaposlenika radi remotely (od kuće ili u drugom gradu), nezaobilazan alat u oba tima postao je Slack, dok se za video pozive oslanjaju na Google Meet ili Zoom (a zgodno je i za zajedničke fotografije :)) Foto: Mario Poje

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:

  • Ne budite 💩: Nema vrijeđanja, diskriminiranja, ni psovanja (osim ako nije osobni izričaj, ali onda neka psovka bude općenita, a ne usmjerena prema nekome). Također, upoznajte se sa stavkom 2. članka 94. Zakona o elektroničkim medijima prije no što ostavite komentar.
  • Samo kvalitetna rasprava, manje trolanja: Ne morate se ni sa kim slagati, ali budite konstruktivni i doprinesite raspravi! Svako trolanje, flameanje, koliko god "plesalo" na granici, leti van.
  • Imenom i prezimenom, nismo Anonymous 👤: Autor sadržaja stoji iza svog sadržaja, stoga stojite i vi iza svog komentara. Koristimo ime i prezime te pravu email adresu.

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.

Odgovori

Tvoja e-mail adresa neće biti objavljena.

Popularno

Startupi i poslovanje

Kako je Estonija postala “startup nacija”, može li to Hrvatska, kako – i kad?

Može li novoosnovana udruga Cro Startup ponoviti uspjeh koji je postigla Startup Estonia? Eve Peeterson iz te udruge ispričala je koje su promjene, inicijative i angažmani bili ključni za uspjeh.

Panel

Rok trajanja programera: Možete li 57-godišnjaka zamisliti na razgovoru za posao frontend developera?

Možete li 57-godišnjaka zamisliti na razgovoru za posao frontend developera u nekoj domaćoj IT agenciji? Zavirili smo u raspravu o tome koliki je rok trajanja programera i upitali nekoliko njih, različitih razina iskustva i pristupa karijeri, može li se do mirovine biti "samo programer".

Izvještaj

Na digitalno oglašavanje u Hrvatskoj u 2021. potrošeno 1,65 milijarde kuna, 75% otišlo Googleu i Meti

Na digitalno oglašavanje u Hrvatskoj u 2021. godini potrošeno je milijardu i 657 milijuna kuna, pokazalo je istraživanje digitalni AdEx koje su za HUDI (Hrvatsku udrugu digitalnih izdavača) proveli austrijska agencija Momentum i lokalni partner Ipsos.

Što ste propustili

Izvještaj

Voditelji i menadžeri inženjerskih timova, odrađujete li 1:1 razgovore s članovima svog tima (i zašto ne)?

Hrpetina se propusta u IT tvrtkama dogodi jer se nešto nije iskomuniciralo na vrijeme. Jedna stvar slijedi drugu. U tvrtki nije vladala kultura otvorene komunikacije niti se izgradilo povjerenje da netko bez straha vokalizira svoja iskustva, a osobi se nije dala ni prilika da to učini privatno, jedan na jedan. Na kraju, umjesto da se suoče s mogućim problemima, proaktivno gradeći kulturu otvorenog razgovora, tvrtke izbjegavaju kopati ispod rečenice "Ma nema problema..."

Kultura 2.0

Kako izgraditi karijeru i život u Istri?

Nakon dvije godine vraća nam se Digital Labin, a mi koristimo priliku s prvim čovjekom iza poznate istarske konferencije pričati o razvoju lokalne tech zajednice!

Startupi i poslovanje

Upoznajte 13 hrvatskih healthtech timova “Get Started in Health Innovation” programa

Pred vama je prva generacija jedinog programa u Hrvatskoj koji se sustavno posvetio podršci stručnjaka koji žele razvijati nešto u segmentu healthtecha. Njihova rješenja fokusirana su na razne probleme u zdravstvenom sustavu: od alata za efikasnije pružanje zdravstvene pomoći, ali i onih koji olakšavaju rad samih zdravstvenih djelatnika do rješenja koja i pacijentima omogućavaju jednostavnije pratiti svoje zdravstveno stanje.

Intervju

Kako je softverski inženjer s Kube našao svoju oazu u Microsoftovom razvojnom centru

Iz daleke Havane na Kubi, softverski inženjer Arnaldo Perez stigao je u Microsoftov razvojni centar u Srbiji. Kako, zašto, u kojem timu i što danas radi, kako se privikao na novo okruženje te što je naučio u zadnje četiri godine radeći u Microsoftu i regiji, saznali smo u intervjuu.

Nesortirano

Combisu nagrada Microsoft Partner of the Year 2022 u Hrvatskoj

Combis je osvojio prestižnu godišnju nagradu američke tehnološke kompanije Microsoft za Hrvatsku.

Novost

Huawei Apps UP natjecanje se vraća s nagradom od preko milijun dolara

Treću godinu zaredom Huawei bogatim fondom nagrađuje najbolje programere koji će se odvažiti na razvoj aplikacija za ekosustav Huawei mobilnih usluga.