Developerima nije lako

Miroslav Benak

Nisam developer, iako sam prije mnogo godina programirao, ali dugogodišnji rad u Perpetuumu dao mi je dobar uvid u svakodnevicu kolega iz developerskog tima. Izazovi s kojim se susreću suvremeni developeri prilikom razvoja web aplikacija generalno se mogu svrstati u dvije kategorije: poslovni i tehnološki. Poslovni principi razvoja aplikacija su gotovo nepromijenjeni, bez obzira na tehnologiju. Načini vođenja projekata se mijenjaju i prilagođavaju trendovima i potrebama, pa je danas u razvoju i implementaciji aplikacija sve češći slučaj korištenja agilnog projektnog pristupa, kao što je Scrum.

No, bez obzira kojom projektnom metodologijom se služili, neke stvari uvijek moraju ili bi barem trebale postojati. To su između ostaloga dobro definiran opseg i sadržaj projekta odnosno specifikacija potrebnih funkcionalnosti, definiran budžet i vremenski opseg odnosno trajanje projekta te ostali preduvjeti neophodni za realizaciju, kao što su članovi tima na strani korisnika i implementatora, tehnički resursi potrebni za realizaciju projekta i slično.

Većina developera će s pravom ustvrditi da im je najveći problem nepostojanje dobre specifikacije funkcionalnosti i tehničke specifikacije projekta, kao i promjene zahtjeva tijekom izvođenja projekta. Ovakav „moving target“ dovodi do neefikasnosti u realizaciji, većem utrošku vremena, nezadovoljstva developera, defokusiranja sa glavnih ciljeva projekta, mogućeg odbacivanja dijela prethodno razvijenog koda i niza posljedica koje iz toga proistječu. Sve to rezultira dodatnim pritiskom na rokove, smanjenjem kvalitete koda, dodatnim troškovima ili smanjenjem profitabilnosti projekta, te kašnjenjima u realizaciji.

U idealnom svijetu sve bi se znalo unaprijed, ne bi bilo promjena u hodu, svi resursi bi bili na raspolaganju, projektni opseg i trajanje bi bili dobro definirani i procijenjeni i sve bi se realiziralo po planu. U idealnom svijetu bi i svi developeri imali sva potrebna znanja i razvijali aplikacije jednako učinkovito i brzo. U idealnom svijetu bi naručitelji točno znali što žele i to dobro definirali i prenijeli razvojnom timu. U idealnom svijetu bi – sve bilo idealno. Na žalost nije tako.

scrum

Sažeto mogli bismo reći da su s poslovne strane tri najveća izazova:

  • Specifikacija funkcionalnosti / opseg posla
  • Promjene tijekom projekta
  • Upravljanje projektom i očekivanjima korisnika

Svi napori u što kvalitetnijem definiranju projekta i njegovom vođenju često nisu dovoljni da se sve obavi kako je planirano i na zadovoljstvo svih uključenih.
 

TEHNIKA RADNOM DEVELOPERSKOM NARODU

Na sve ovo vremenom se stvari dodatno kompliciraju s obzirom na brzi tehnološki razvoj i promjene tehnologija, alata, platformi, frameworka, sigurnosnog okruženja i gomile drugih tehnoloških faktora. Developerima nije lako!

U jednom ovakvom članku nije moguće obuhvatiti sve, no možemo generalno spomenuti pet glavnih izazova koji se postavljaju pred developere web aplikacija:

1. Korisničko sučelje i iskustvo

Famozni UI i UX već dosta godina su jedna od najvažnijih tema u domeni web aplikacija. Izazov implementacije aplikacije koja će biti dobrog izgleda i jednostavna za korištenje na različitim platformama (desktop, mobilni telefon, tablet, …) i uz upotrebu različitih web preglednika postaje sve veći protekom vremena. Prema tome aplikacija treba imati prilagodljivi dizajn koji će se prilagoditi klijentu s kojim se koristi.

Na to se nadovezuju očekivanja korisnika. Neki bi mogli reći da su korisnici sve razmaženiji i sa sve višim očekivanjima. Aplikacije moraju biti intuitivne za korištenje bez prethodnog učenja, a pojedini elementi navigacije moraju biti prilagođeni veličini ekrana s kojega se koriste.

Ako uzmemo u obzir broj različitih platformi i preglednika nije jednostavno implementirati aplikaciju koja će zadovoljiti sve ove kriterije, jer mora dobro raditi i na Windowsima, Linuxu i MacOS-u i na Androidu i iOS-u, a kad u jednadžbu dodamo još i Internet Explorer, Chrome, Firefox, Safari, Edge, Operu, pa onda i njihove mobilne verzije za spomenute operativne sustave, složenost se multiplicira. I sve to još biva ažurirano svaki čas. Neki od navedenih preglednika dobivaju nove verzije u mjesečnom ritmu.

ui

2. Platforma i Framework

Većina suvremenih aplikacija razvija se na više ili manje standardiziranim platformama. Svaki suvremeni framework pruža gomilu funkcionalnosti koje su prethodno testirane i usklađene te omogućuje razvoj naprednih aplikacija bez potrebe pisanja svakog koda od početka. Pri tome je veliki izazov praćenje promjena i učenja novosti, budući da se većina frameworka ubrzano razvija i mijenja. Stoga je temelj kvalitetnog razvoja redovito praćenje novosti i učenje cijelo vrijeme.

Jedan od najvećih izazova je što često imate nekoliko generacija aplikacija na različitim verzijama frameworka. Aplikaciju napisanu prije nekoliko godina treba održavati, aplikaciju koju upravo radite vjerojatno ćete raditi na aktualnoj verziji frameworka, a već se pojavila beta verzija buduće generacije frameworka koju treba učiti i upoznavati da biste bili spremni kada postane aktualna. Na tržištu postoji mnoštvo frameworka, koji se koriste zbog brzine razvoja, poboljšane kolaboracije i organiziranosti koda.

3. Skalabilnost

Aplikacija mora biti dizajnirana tako da tijekom vremena može podnijeti veći broj korisnika, odnosno da može raditi u nekoj distribuiranoj arhitekturi. Na početku možda sve može raditi na jednom serveru, ali ako se pokaže potreba treba omogućiti dodavanje dodatnih servera u različitim konfiguracijama za prihvat povećanog prometa (npr. load balancing) ili za povećanje pouzdanosti (cluster). Razvoj skalabilnih aplikacija predstavlja dodatni izazov i napredna programerska znanja. S obzirom na brzinu tehnoloških promjena nije jednostavno biti „u tijeku".

4. Performanse

Odavno je poznato da su korisnici nestrpljivi i da neće dugo čekati da se stranica učita. Iako je prije desetak godina prosječni korisnik bio spreman čekati i do 8 sekundi da mu se stranica učita, danas je to vrijeme „strpljivosti“ smanjeno na četvrtinu. Prema tome, aplikacije i infrastrukturu treba dimenzionirati i optimizirati da njihov odaziv bude sukladan očekivanjima korisnika. Ovako je to jednostavno za reći, no da bi stvar radila tako, mora biti zadovoljeno više faktora: kvalitetno napisan kod, optimizirana baza podataka, pravilno dimenzionirana i konfigurirana infrastruktura (serveri, mreža, load balanceri, …). Na neke od ovih stvari sami developeri nemaju utjecaja, ali moraju tražiti da im se osiguraju preduvjeti za dobre performanse. I najbolje napisan kod neće raditi dovoljno brzo ako je ostatak mozaika loš i poddimenzioniran.
 

developer

5. Sigurnost

Na kraju, iako ni blizu najmanje važno, tema je sigurnosti. Sigurnosni aspekti razvoja ponekad bivaju zanemareni pod pritiskom rokova i očekivanja, pa loše napisane aplikacije bivaju ciljem raznovrsnih napada. Fokus u razvoju se primarno stavlja na funkcionalnosti koje aplikacija treba imati a pri tome se zanemaruju sigurnosni mehanizmi koje sama aplikacija mora imati kako bi se štitila od različitih napada. Iako se dio zaštite obavlja izvan aplikacije raznovrsnim tehnološkim rješenjima, poput web application firewalla, različitih antimalware rješenja, intrusion detection sustava i slično, same aplikacije bi trebale imati sigurnost ugrađenu u vlastiti dizajn. Tu prije svega mislimo na OWASP Top 10 vrsta rizika o kojima se mora voditi računa pri razvoju web aplikacija. Spomenimo ih nekoliko: Injection, Broken Authentication and Session Management, Cross-Site Scripting (XSS), Insecure Direct Object References, Security Misconfiguration…

Na kraju cijele priče jasno je kako je posao developera iznimno složen i izazovan, a kako bi projekt bio uspješan i konačan proizvod zaživio u najboljem izdanju potrebni su i najbolji ljudi. Naši developeri puni su iskustva i dobro znaju kako doskočiti izazovima. Javite nam se ako želite surađivati s njima.