Kreatori i alati: Vladimir Zdravković, mobile developer

Ovog vikenda uz Vladimira do detalja prolazimo kroz sve alate koji su potrebni jednom mobile developeru koji radi za outsourcing kompaniju.

Sanja Vatić
07/12/2019

Vladimir Zdravković je mobile developer koji radi na razvoju aplikacija za holandsko i druga tržišta, a njegov svakodnevni posao obuhvata razvoj mobilnih aplikacija za obe mobilne platforme: Android i iOS. Inače gaji i interesovanje za nove tehnologije i njihov uticaj na zajednicu.

Hardver

Kao iOS developer, ograničen sam na korišćenje macOS operativnog sistema za razvoj aplikacija. Ono što je dobro je to da prilikom razvoja Android mobilnih aplikacija operativni sistem ne utiče na mogućnost razvoja, tako da je moguće odabrati Apple računar kao univerzalno sredstvo za rad. Ono na čemu trenutno radim je MacBook Pro iz 2018. godine. Sa 256GB prostora za skladištenje i 16GB RAM memorije, imam sasvim dovoljno prostora za svakodnevne obaveze u toku radnog vremena.

Ono što bih izdvojio na ovom modelu je korišćenje touch bar-a, iako sam i ja sam bio skeptičan kada su objavili nove modele i razmišljao sam čemu to i zbog čega. Moram priznati da me je lepo iznenadila funkcionalnost samog hardvera. Najviše mi se sviđa opcija biometrijskog ulaženja na sistem, jer touch bar sa sobom donosi i skener otiska prsta.

Uz ovaj laptop, imam dosta „delova” iliti dongle-va, zbog toga što je Apple odlučio da stavi samo Type-C portove na laptopu. Samim tim, moram sa sobom uvek da imam minimalno jedan adapter uz pomoć kojeg imam standardne izlaze koji su mi potrebni za rad. Jedni od njih su i USB portovi pomoću kojih su mi telefoni „zakačeni” na mašinu.

Od periferija imam još dva monitora od 24 inča, proizvođača DELL. Monitori su sami po sebi klasični kancelarijski, sa matiranom površinom, tako da nema presijavanja ukoliko se nalazite u nekoj svetlijoj prostoriji. Pored monitora, imam i jedan običan bežični miš, uz poveću gejmersku podlogu radi udobnijeg osećaja prilikom korišćenja miša.

Najviše me je obradovalo to što je Apple ipak ostavio izlaz za slušalice na svojim laptopovima, tako da i dalje mogu da koristim svoje LG bubice za slušanje muzike u toku radnog vremena, kada želim da se opustim malo uz svoj ritam.

Softver

IDE

Kao mobile developer, moram da budem upoznat sa dosta okruženja i detalja koje sama okruženja donose. Tako mi je za razvoj iOS aplikacija potreban Xcode, a za razvoj Android aplikacija Android Studio.

Ono što mi je takođe potrebno kao IDE jeste Visual Studio Code. Kako sam ranije koristio Sublime i Atom, smatram da je Visual Studio Code jedno vrlo kvalitetno osveženje što se tiče alata za razvoj aplikacija.

Tools 

Zašto mi je potreban Visual Studio Code pored već postojećih alata za iOS i Android? Razlog je taj što ni Android Studio ni Xcode nisu u mogućnosti da urade syntax highlight koda za određene jezike koji se koriste. Takođe je moguće uraditi i code reformat za gotovo svaki jezik jednom jednostavnom instalacijom plugin-a.

Imam čitav spisak alata koje svakodnevno koristim za kvalitetniji rad na projektima:

Primarni jezici

Kao mobile developer, imam dosta posla što se tiče praćenja izmena na svim jezicima i alatima koje koristim. Kao primarne jezike na projektima koristimo Kotlin za Android i Swift za iOS. Istina je da bude i legacy projekata u jezicima Java za Android i ObjectiveC za iOS. Ono što je ohrabrujuće je to da su gotovo sve kompanije prepoznale vrednost novih jezika i ono što ti jezici nose sa sobom, a to je brži i stabilniji razvoj aplikacija. Najzanimljivije mi je to što mogu da vidim različita korišćenja istog koda na četiri različita jezika. To ume dosta da pomogne programeru da se kvalitetnije razvije i da stekne bolje razumevanje za platformu na kojoj radi i jezik koji koristi.

GIT

Za git pretežno koristim aplikaciju Sourcetree — iako ima pozamašnih razlika u verzijama između Windows-a i MacOS-a, i dalje ga vidim kao odlično i brzo rešenje za manipulaciju source code-a.

Kada se dešavaju konflikti u kodu, odlučujem se za Visual Studio Code, samo zbog toga što im je UI odlično urađen i zato što dobijate jasna vizuelna pomagala za rešavanje konflikta.

VCS

Kada je version control system u pitanju, tu je šareno, jer kako radim u outsourcing kompaniji, mi kao developeri imamo mogucnost da koristimo gotovo sve glavne servise za hostovanje koda. Tako da se, nakon nekoliko projekata, možeš upoznati i sa GitLab-om, i sa Bitbucket-om, i sa Github-om, kao glavnim igračima. Bude tu i po koje custom rešenje, ali se nalaze u manjoj meri.

Continuous integration and delivery (CI/CD)

Da bismo uspešno uradili build i distribuciju same aplikacije, koristimo sistem pod imenom Jenkins. Jenkins je open source rešenje koje nam pomaže da ubrzamo proces distribucije i omogućava brže nalaženje bug-ova u developmentu. Nažalost, ne postoji onlajn rešenje, pa samim tim mora postojati neko ko je iskusan sa podešavanjem samog Jenkins-a na internoj mašini.

Jenkins je napisan u Java programskom jeziku, dok Jenkinsfile (fajl koji koristimo da definišemo proces) koristi Groovy sintaksu.

Jedan tipičan pipeline (flow, process) na projektu bi bio:

  1. Setup project
  2. Build project
  3. Unit tests
  4. UI tests
  5. Code quality — ovde najčešće koristimo Sonar
  6. Distribution — najčešće koristimo Fabric koji uskoro postaje Firebase App Distribution
  7. Finalize — ovde odradimo neki manji cleanup projekta, šaljemo poruke na Slack, šaljemo mejlove i još neke dodatne notifikacije

Ono što je super kod korišćenja CI/CD rešenja, za koje god se odlučimo, uvek nam dodatno olakšava posao za gore navedene korake i dodatno pojačava kvalitet same aplikacije.

Komunikacija

Komunikacija se većinski obavlja preko aplikacije Slack, i to na engleskom jeziku. Doduše, kako radim u outsourcing kompaniji i kako sarađujemo sa dosta klijenata iz gotovo celog sveta, ponekad se dešava da klijenti koriste neko treće rešenje za komunikaciju tako da ima pregršt aplikacija za korišćenje. Kao primarne su uvek Skype i Slack, s tim da znam da postoje timovi unutar kompanije koji koriste recimo Hangouts.

S obzirom da interno koristimo Microsoftova rešenja, tako je naš e-mail klijent za korišćenje uglavnom Outlook. Takođe, postoje i drugi servisi za integraciju Outlook Exchange-a, ali ja iskreno volim „vanila” iskustvo tako da se i dalje držim Outlook-a na desktopu, na svom telefonu, kao i na vebu po potrebi.

Što se tiče komunikacije specifične za projekat, stvari na kojima radimo, na kojima ćemo raditi i koje smo već uradili, koristi se servis JIRA kao primaran način praćenja zadataka. Takođe, servisi kao sto su Trello i Asana su isto prisutni, samo u dosta manjoj meri nego JIRA.

Daily

Jedna od najboljih stvari, što se mene tiče, jeste ta da se svakodnevno vodi komunikacija direktno sa klijentom. Jedan od načina na koji to radimo je preko svakodnevnih jutarnjih kratkih sastanaka od 15 minuta, koji se zovu Daily meetings. Većina ljudi pomisli, „Šta ja to mogu da kažem za 15min?”, još ako je tim sastavljen od većeg broja članova… Daily sastanci služe tome da se na kvalitetan način iskaže ono što smo radili dan pre, kao i to šta bismo od zadataka uradili tog dana. Generalno, iz ličnog iskustva, ekipa od 10 članova uspe da odradi sastanak za 5-10 minuta.

Scrum

U našoj ekipi trenutno koristimo Scrum metodologiju, koja nam govori na koji način da struktuiramo komunikaciju oko dodatnih zahteva vezanih za projekat. Samim tim, imamo i nekolicinu sastanaka direktno sa klijentom i manje-više celokupnom ekipom.

Sastanci su podeljeni u Refinement, Planning, Retrospective. Takođe, tu koristimo i termin Sprint, koji nam određuje vremenski interval za koji se dogovaramo da ćemo završiti neku grupu zadataka. Refinement nam služi da prođemo kroz sve tikete na JIRA-i i proverimo da li kojim slučajem treba nešto dodatno da pojasnimo, opišemo ili doradimo radi bolje i lakše izrade zadatka. Planning koristimo da bismo što bolje isplanirali svaki sprint radi što bolje i kvalitetnije izrade release-ova. Na kraju svakog sprinta radimo retrospektivu, uz pomoć koje prolazimo kroz procese koje imamo da bismo sagledali kako da ih poboljšamo na nivou tima, projekta, radi što efikasnijeg rada.

Posete 

Rad sa klijentima je poprilično zahvalna stvar jer kroz rad na različitim projektima, vežbamo i učimo da radimo sa velikim brojem različitih ljudi. Ono što bih ja ovde izdvojio i što se meni lično jako sviđa kad su posete u pitanju, jeste to što se na nivou kompanije u kojoj radim promoviše putovanje, kako zaposlenih tako i klijenata. Više puta godišnje se organizuju posete naših timova kod klijenta, u njihove matične gradove, gde se dosta kvalitetnije upoznajemo sa njima i njihovim načinom rada. Kroz pregršt zanimljivih interaktivnih sastanaka, dolazimo do zajednickih rešenja vezano za ono što je klijentu i samom projektu potrebno.

Ne putujemo samo mi, dolaze i nama klijenti u posetu. Dolaze na naš teren, takorecći. Mi ih zauzvrat upoznajemo sa našom kulturom i našom okolinom. Ono što mogu da potvrdim je da se do sada svima svidela čašica kvalitetne domaće rakije :).

Mobilne aplikacije

Kao neko ko razvija mobilne aplikacije, uglavnom imam dosta instaliranih aplikacija i na svom telefonu. Iako sam mobile developer i pratim prakse obe platforme za razvoj native aplikacija, ja sam lično primarno Android korisnik. Sa sobom sam do pre nekog vremena imao OnePlus 5T, gde sam u međuvremenu kupio na neki način naslednika, OnePlus 7T Pro. Obožavam ovu firmu jer im je OS čist, a telefon poprilično kvalitetan i brz, gde samim tim nemam problema da pokrenem nijednu aplikaciju.

Primarne su mi aplikacije koje svakodnevno koristim i za posao. Većina aplikacija ima svoju mobilnu verziju, tako da se na mom telefonu uvek mogu naći JIRA, Confluence, Outlook, Slack, Skype.

Od ostalih aplikacija, što se tiče razvoja aplikacija, imam Google Analytics, Play Console, a tu su i Fabric Beta i Firebase App Distribution, kao i sve aplikacije koje trenutno razvijamo.

Guglanje

Svako dnevno nekoliko puta „izgugla” neki problem. Najčešće uradim Google pretragu da nađemo neki „Error code 65”, „Gradle won’t sync” i druge probleme. Gotovo kompletna pretraga vodi na Stack Overflow, što i nije ništa čudno jer je Stack Overflow jedno od najboljih mesta za postavljanje pitanja i nalaženje odgovora kada alati koje koristite ili jezik kojim kucate jednostavno ne žele da sarađuju sa vama.

Ono što sam smatrao smešnim ranije, a ispostavilo se kao korisno, jeste i Rubber duck debugging. Ovo je način nalaženja rešenja/bug-a tako što ćete nekom ispričati problem, gde već u toku prepričavanja problema sami dolazite do toga da shvatite gde je problem. I toplo preporučujem svakome da proba barem jednom ovu tehniku.

Za kraj…

… bih voleo da izdvojim to da rad na mobilnim aplikacijama ponekad ume da bude mukotrpan jer se ponekad nađete u nekom vrtlogu greški, kako iz vaših IDE-a tako i od alata koje koristite. I meni se lično desilo da ponekad padnem u bedak kada mi nešto ne ide i kada ne uspevam da namestim nešto. Najbolji deo je što uz odličnu podršku ljudi oko sebe, taj bedak vrlo brzo ispari i pretvori se u pozitivan osećaj postignuća.

Svet mobilnih aplikacija se svaki dan menja, svaki dan adaptira na promene i u svetu i na tržištu. Samim tim, njihov razvoj je uvek dinamičan jer se konstantno uči nešto novo.


Ukoliko želite da budete deo rubrike Kreatori i alati, pošaljite nam svoj CV i/li portfolio na mail [email protected].

Sanja Vatić

Objavio/la članak.

subota, 7. Decembar, 2019.

IT Industrija

🔥 Najčitanije