
Male tajne za razvoj aplikacija koje neće pregaziti vrijeme – niti nova tehnologija
Koje su tajne razvoja "future-proof" aplikacije? Kako izgleda baza koda, kako su posloženi radni procesi te kako na kraju dobiti nešto što možemo skalirati? Donosimo vam detaljan pregled kako Superology planira napraviti Superbet aplikaciju otpornu na vrijeme.
Ovogodišnja SuperMinds konferencija dovela je predavače poput Paula Hudsona, jednog od najvećih globalnih stručnjaka za Swift i Garricka Toubassija, investitora i savjetnika koji je prošao i svijet startupa i velike kompanije poput Googlea. Također, već smo objavili izvještaj u kojem su predavači Christina Lee i Mattt otkrili kako postati bolji programer spreman na budućnost.
Uz njih, na pozornicu su stala dva Android programera s predavanjem Past, Present and Future (of a product app) kako bi predočili svoj plan za stvaranje Superbet aplikacije otpornom na vrijeme u kontekstu skaliranja, baze koda i radnog procesa.
Kako bi najbolje prenijeli svoje ideje koje su počeli realizirati, dali su detaljan pregled razvoja Superbet mobilne aplikacije. Superbet već ima navršenih 5 godina postojanja što za jednu aplikacju nije kratak životni vijek, pogotovo kada uzmemo u obzir kako je to proizvod koji stalno raste kojeg je potrebno održavati.
Svoje tajne za razvoj future-proof aplikacije otkrili su Luka Leopoldović, Senior Android Developer i Filip Debelić, Android Team Lead iz Superologyja.

Migracija ka novim tehnologijama ne događa se preko noći
Luka se priključio Superologyju prije dvije godine, a u trenutku njegovog dolaska već tada su radili s relativno zastarjelim tech-stackom: MVP arhitektura, RxJava, Android View System itd. Priznaje kako mu je to bio važan čimbenik u odluci hoće li uopće prihvatiti ponudu ili ne:
Da budem precizniji – s obzirom da nikad prije nisam bio dio produktnog okruženja (pogotovo tako velikog produkta) nisam znao koliko smo fleksibilni i motivirani za bilo kakva tehnološka unaprjeđenja.
Ponudu je naposlijetku prihvatio, a čim se posao zahuktao bio je i ugodno iznenađen motiviranošću da se stvari unaprijede. Kaže da nikada nije imao priliku raditi na toliko puno radikalnih zahvata na arhitekturi koda:
A to je uvijek i najveći izazov. Naročito procijeniti koje tehnologije ima smisla uvoditi, a koje ne. U te dvije godine, kick-offali smo i aktivno migriramo ka MVVM arhitekturi, Kotlin korutinama i Jetpack Composeu, gdje već neko vrijeme određene dijelove aplikacije upogodnjuje upravo taj tech-stack.
Naravno, svim programerima je gušt raditi na najmodernijim tehnologijama, ali Luka smatra kako je važno napomenuti da su migraciju ka tim tehnologijama pokrenuli kada su procijenili da bi od njih dugoročno imali najveći benefit:
Kako bismo u tome uspjeli, bilo je važno zadovoljiti razne preduvjete. A postavljanje dobrih temelja, kao i integracija novih tehnologija, nisu procesi koji se odvijaju preko noći.
Upravo iz toga Luka izvlači najvažnije točke kako pristupiti u razvijanju future-proof proizvoda, čije funkcionalnosti, bazu koda i radne procese možemo lako skalirati.
Luka je cijeli proces podijelio u 3 točke:
1) U svakom trenutku, vizija produkta mora biti spremna na promjenu, nadogradnju ili proširenje
Kao primjer, Luka navodi viziju Superbet digitalnog ekosustava prema kojem aplikacija teži biti one-stop-shop za sve fanove. Uz klađenje, moguće je ostvariti vrlo detaljan uvid u sportsku statistiku, a integrirali su i društvenu mrežu za fanove:
Tu su i novčanik, streamovi utakmica te malo more funkcionalnosti koje polako izlaze iz domene čistog klađenja. Posljedično, željeli smo si stvoriti preduvjete da se svaki takav segment produkta može razvijati samostalno.
To smo ostvarili podjelom na produktne timove, gdje je za svaki segment produkta (klađenje, statistike, društvena mreža, novčanik, itd.) odgovoran jedan produktni tim.

Od sportske statistike i društvene mreže u konačnici su napravili dvije ogromne in-house platforme, što sigurno ne bi uspjeli bez ovakve organizacije, napominje Luka:
Struktura Androidove baze koda također prati organizaciju po produktnim segmentima, gdje je kod za klađenje, sportsku statistiku ili društvenu mrežu raspoređen u module koji ne znaju jedni za druge te je takav kod moguće lako mijenjati, nadograditi ili proširiti, neovisno o drugim modulima (segmentima produkta).
Superbet android aplikacija sadržava gotovo 300 fragmenata na kojima radi 10 android developera u 9 produktnih timova, možemo vidjeti benefit ovakvog pristupa:
Iako ovaj konkretni model neće nužno odgovarati svima, mislim da je na određeni način važno omogućiti različitim dijelovima produkta da se razvijaju individualno te u svakom trenutku moći vrlo lako proširiti ili nadograditi postojeći produkt.
2) Kreiranje arhitekture koda koja će omogućiti rješavanje novih problema i izazova koji će se pojaviti u budućnosti
Baza koda je uvijek škakljiv dio, navodi Luka. Relativno je jednostavno kreirati arhitekturu koda koja rješava trenutni set problema, ali proizvod konstantno raste te se mobilno okruženje ubrzano razvija:
Stoga, smatram da je, u slučaju već dobro razvijenog i uspješnog produkta, vrlo važno kreirati arhitekturu koda koja će omogućiti rješavanje novih problema i izazova koji će se pojaviti u budućnosti.
Prvi korak ka tome je, paradoksalno, kreiranje komponenti s ciljem arhitekturalne neutralnosti, kako bi iste bile lako iskoristive i nakon sljedećih 5 godina:
To je dio kod kojega smo se blago opekli kad smo pokušali iskoristiti određene komponente iz stare MVP arhitekture u novoj MVVM arhitekturi i nešto na što stavljamo veliki fokus sada.

3) Propitkujte sve što se radi i kako se radi
Nikad ne bismo trebali slijepo slušati i primjenjivati sve savjete i povratne informacije jer na taj način ne možemo znati radimo li stvari ispravno, napominje Luka. Kako bismo mogli propitivati, potrebno je dobro proširiti znanje:
I ne samo najnovijim stvarima iz Android svijeta, već i određenim principima u programiranju koji su vječni i koji će nam pomoći u tome da sve te nove Android stvari implementiramo na pravi način.
Ovo je također nešto na što u Superologyju stavljaju velik naglasak. Luka kao primjer toga navodi činjenicu što su nedavno organizirali internu radionicu gdje su ugostili Christinu Lee, stručnjakinju za Kotlin i duboko uronili u tehnologije koje su im trenutačno od velikog interesa.
“Tko zna koliko grešaka sad radimo, to ćemo vam javiti kad nas dostignu…”
S druge strane, jedan od najvećih izazova u razvoju softvera je pronaći balans između želje za učenjem novih tehnologija i zdravorazumske logike iskušanih praksa, tvrdi Filip:
Dobar inženjer ima konstantan poriv napredovati, isprobavati nove stvari, pratiti trendove i educirati se. Međutim kad imaš jako veliku aplikaciju kao što je naša, zdrav razum nameće da neke stvari jednostavno nemaju smisla, a to je teže prepoznati jer za adaptaciju nečeg novog treba vremena.
Kada govorimo o greškama, rijetko se dogodi da nešto napraviš i odmah zaključiš – ovo je bila greška:
U našem poslu greške te najčešće dostignu kad je već prekasno za neke jednostavne promjene pa su time još bolnije.
Svaka greška koju su napravili putem omogućila im je da nauče nešto i da naknadno naprave bolji proizvod, zaključuje Filip:
Tko zna koliko grešaka sad radimo, to ćemo vam javiti kad nas dostignu…

Za kraj, osvrnuli smo se i na budućnost Superbet aplikacije te kako osigurati da odluke danas za sutra budu ispravne…
Neka podaci odlučuju!
Vizija iza Superbet aplikacije je biti one-stop-shop za sve betting fanove, a Luka smatra da već sada korisnicima nude pregršt sadržaja i funkcionalnosti koje produkt čine upravo takvim.
Koje ćemo nove funkcionalnosti integrirati kroz godinu ili dvije ili kako ćemo tada proširiti postojeće, trenutno vam ne mogu reći, jer ni sam ne znam, s obzirom da Superology, kao Superbetov R&D hub, nema onog klasičnog stakeholdera koji odlučuje o tome što radimo sljedeće.
Adis Mustedanagić iz Superologyja održao je izvrsno predavanje na SuperMinds konferenciji baš na tu temu, kojim je sjajno predstavio paradigmu kojom se vode u Superologyju:
Ukratko – data je naš stakeholder. Dakle, ideje o svakoj novoj funkcionalnosti, ili o proširenju postojećih, većinski dolaze analizom prikupljenih podataka o načinu korištenja aplikacije te su upravo ti podaci stakeholder koji će na kraju reći hoće li se ta nova funkcionalnost i zadržati u produktu.
Filip smatra kako će produkt sigurno rasti, a u planu su nova uzbudljiva tržišta i nove funkcionalnosti, što je naravno jako izazovno dok usporedno treba održavati aplikaciju da radi bez ikakvih poteškoća. Kako bi to uspjeli, moraju se konstantno educirati i istraživati nove stvari jer produkt ne dozvoljava da stagniraju:
S tehničke perspektive vjerojatno najveći izazov koji nam predstoji je migracija data layera aplikacije s RxJava-e na Flow i Coroutines, to je proces koji zasigurno nećemo moći odraditi preko noći tako da će zahtijevati puno planiranja i strategije.
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.