Înainte de toate, vreau să știți că eu profesional vorbind, n-am fost niciodată mobile developer, dar cred că v-ați dat seama deja de asta dacă m-ați mai urmărit. Dar tot timpul mi-a plăcut ideea de a face aplicații mobile, încă de la început.

De când am început la primul meu job ca developer, când ajungeam seara acasă sau în weekend-uri începusem să învăț Android, doar din pură curiozitate, mă fascinau foarte tare aplicațiile Android dintr-un motiv necunoscut. Adică, acum fie vorba între noi, nu chiar necunoscut și hai să vi-l dezvălui și vouă.

De ce îmi plac aplicațiile mobile

Îmi plăcea foarte tare ideea ca pot să fac o aplicație și să o lansez fără să am nevoie de alte servicii de infrastructură, cum era în cazul aplicațiilor web de exemplu. Unde trebuie neapărat să ai un host sau un server undeva. Bineînțeles ca multe din aplicațiile Android folosesc în backend REST APIs, dar dacă ai nevoie doar să stochezi niște date, poți folosi foarte bine Firebase și scapi de multe bătăi de cap. Sau și mai bine, dacă nu ai o aplicație care să împărtășească date printre utilizatori, poți folosi doar o bază de date locală SQLite și ai scăpat de toate grijile. Și asta îmi plăcea al naibii de tare la momentul respectiv.

În fine, cam asta e ideea, de-asta îmi plăceau atât de tare aplicațiile de Android atunci, și am continuat să învăț ca hobby în timpul liber, pe lângă job-ul de backend developer.

Bun, de-atunci lucrurile s-au schimbat destul de mult așa că hai să vedem ce vei face azi, dacă vei fi mobile developer. Ei bine, în zilele noastre mobile development-ul e împărțit în mai multe categorii:

Aplicații Native

Și aici vorbim despre aplicații native de Android, dezvoltate mai nou, folosind Kotlin și Objective C sau Swift pentru IOS. Se numesc aplicații native pentru că efectiv dezvolți direct pentru platforma respectivă, nu este ca în cazul celorlalte categorii în care dezvolți o singură aplicație pe care o poți rula atât pe Android cât și pe IOS. Aplicațiile native nu pot fi rulate decât pe platformele pentru care au fost create, Android, respectiv IOS, nu există cale de mijloc.

Și dacă tot am vorbit despre asta, am făcut și tranziția către următoarea categorie:

Aplicații cross-platform și tipuri de tehnologii

1. Xamarin

Cred că numele-i spune tot, nu? Cross-platform, adică vei scrie o aplicație cu un singur code base, care va rula pe ambele platforme, atât IOS cât și Android. Pentru a putea face aplicații cross platform poți folosi tehnologii ca Xamarin, de la Microsoft, care apropo, va fi înlocuit de dotnet MAUI, undeva la finalul anului sau începutul anului viitor. Xamarin, cât și MAUI, evident, folosesc C# ca limbaj.

2. Flutter

Poți folosi Flutter, cea mai noua tehnologie de la Google cu care poți crea aplicații nu doar mobile cross-platform, adică să targetezi atât IOS cât și Android, dar și web și în curând și desktop. Știu, sună bine, dar vine și cu ceva sacrificii, cum ar fi că folosește limbajul de programare dart, care este deasemenea nou, dar totodată și foarte asemănător cu javascript, așa că dacă ești familiar cu web-ul, îți va fi relativ ușor să te adaptezi. Mai mult de atât, Flutter seamănă destul de bine cu React, deci încă un avantaj dacă ești Frontend developer și ai făcut React.

3. React Native

Și dacă tot vorbim de React, trebuie să știi că Facebook au și ei framework-ul lor pentru mobile, care se numește React Native. La fel, dacă ești familiar cu React, React Native ți se va potrivi de minune. Learning curve-ul va fi mult mai mic, pentru că va trebui doar să înveți despre componentele de mobile pe care va trebui să le folosești, în locul celor web.

4. Ionic

Iar dacă tot vorbim de web development, în categoria asta mai avem și Ionic, cu care poți folosi toată suita de limbaje de web, html, javascript etc. pentru a dezvolta aplicații de mobile. Sincer despre Ionic, nu știu mai mult de atât, dacă pentru celelalte m-am uitat cel puțin odată peste un codebase pentru fiecare dintre ele, Ionic îmi este total străin, așa că n-aș putea să vă spun despre experiența avută dacă alegeți să folosiți Ionic în aplicațiile voastre.

Dezavantajele framework-urilor cross-platform sau hybrid

Acum știu că framework-urile astea cross-platform par alegerea ideală, pentru că evident targetezi ambele platforme cu un singur codebase, dar ce trebuie să știi este că vin și cu anumite dezavantaje.

În primul rând de performanță, dacă lucrezi la vreo aplicație de trading sau care are nevoie de latențe foarte mici, cu siguranță alegerea cea mai bună este să mergi cu aplicațiile native, cele cross-platform vor suferi pierderi de performanță, chiar dacă ele nu sunt foarte vizibile cu ochiul liber.

Deasemenea, nu vei avea acces chiar la cele mai joase drivere și funcționalități, așa cum ai cu native, cum ar fi de exemplu diverși senzori ai device-ului.

Concluzie

Bun, acum că ți-am povestit despre toate framework-urile astea, cred că ți-ai făcut o oarecare idee despre ceea ce vei face la un job de mobile developer. Vei lucra mult pe partea vizuală a aplicațiilor de mobil și poate dacă aplicația este una mai puțin complexă, vei lucra probabil și pe partea de backend a aplicației. Deci în linii mari, vei fi un fel de fullstack developer, dar pe aplicații mobile, în loc de web. Iar dacă folosești Ionic, practic pentru tine va fi aproape același lucru.

Acum, pe lângă ce ți-am povestit eu aici, vei mai avea nevoie de o multitudine de alte cunoștințe, cum ar fi comunicare HTTP, pentru că dacă vei avea un backend REST, va trebui să înțelegi cum funcționează protocolul ăsta, elemente legate de securitate, precum autentificare și autorizare, cunoștințe legate de baze de date relaționale, sau poate chiar non-relaționale.

Dar partea asta e foarte subiectivă, pentru că depinde mult de proiect, companie șamd. Poate nu ai nevoie deloc să știi despre comunicare HTTP și baze de date NoSQL, pentru că aplicația la care lucrezi folosește doar baze de date locale. Deci nu are rost să discutăm acum despre cunoștințe despre potențiale dependințe.

Dacă vrei să înveți programare și nu știi de unde să începi

C# Masterclass s-ar putea să fie o alegere bună pentru tine. Cursul are peste 30 de ore de conținut și cuprinde toate noțiunile de care are nevoie un începător pentru a-și construi propriile aplicații de la zero, cât și pentru a trece de orice interviu tehnic.