Limbaje și tehnologii pentru 2021
Discuția despre cele mai căutate limbajele de programare e una complexă și contextuală pentru că relevanța acestora fluctuează în funcție de cerere, popularitate în rândul comunității IT, dar și în funcție de trendurile și direcțiile date de marile companii de tehnologie.
Programarea rămâne până la urmă unul dintre domeniile în care procesul de învățare este constant și neîntrerupt. Astfel, programatorii trebuie să fie la curent cu ultimele trenduri, să se adapteze la proiecte noi și să fie deschiși să învețe ultimele tehnologii, dar în același timp să se dedice și limbajelor de programare cu o istorie, pentru a rămâne relevanți pe piață.
Prin urmare, pentru a înțelege mai bine care sunt cele mai relevante tehnologii pentru un programator, ce lucruri noi au apărut sau urmează să apară pe piață și ce limbaje de programare se păstrează în topul preferințelor și în 2021, am vorbit cu 3 programatori din ING Tech România, hub-ul de dezvoltare software al ING.
Dan Lucian Roșu, back-end developer
Lucian lucrează de peste 5 ani în programare și crede că diferența între un programator bun și unul foarte bun e dată de cele mai multe ori de pasiunea și munca continuă. Ne povestește că el a progresat cel mai mult când a început să studieze singur programarea și să citească mai multe despre lucrurile care îl interesau.
„Îmi place că scriu cod în fiecare zi, dar job-ul meu nu se rezumă doar la asta. Am ocazia să mă implic și în decizii arhitecturale, să am o privire de ansamblu asupra unui proiect, așa reușesc să rezolv probleme în mod optim. Încerc să mă implic și în zona de mentoring în echipă, să îi învăț cât mai multe pe cei nou veniți și cred că asta e extrem de relevant pentru că un programator e mereu într-un proces de învățare. Dinamica tehnologiilor evoluează constant și ce făceai acum un an e foarte posibil să se schimbe, așa că și tu trebuie să îți adaptezi rapid abordarea.”
Lucrează în prezent ca back-end engineer, în aria de canale și platforme digitale, dar a lucrat și ca full-stack și dezvoltă soluții bazate pe JVM, în principiu folosind Java, Kotlin sau Scala. Ne povestește că, odată ce a început să lucreze mai mult cu aceste limbaje, a crescut și interesul lui pentru paradigma de programare funcțională.
„Am ajuns să folosim și în proiectele la care lucrăm biblioteci de programare funcțională care ne-au ajutat să rezolvăm problemele într-un mod mai ușor și mult mai declarativ. Bineînțeles, noi dezvoltăm în general soluții ce se bazează pe implementări concurente și astfel abordarea hibridă dintre programarea funcțională și cea orientată pe obiect ne-a ajutat să avem o experiență de dezvoltare foarte plăcută.”
Sursa foto: Unsplash.com
De urmărit în 2021
În 2021, la nivel de abordare micro, mai precis detalii de implementare, Lucian ne spune că din punctul lui de vedere abordările funcționale, concurente și foarte performante vor domina principiile de dezvoltare software, iar librării precum Arrow, Cats-Effect , Monix și ZIO ajută foarte mult dezvoltatorii în această direcție și au devenit foarte populare în comunitate.
„Eu sunt interesat atunci când dezvolt servicii web de ideea de ‘HTTP as a Function’, unde este posibil. Încerc și soluții full fledged, cum ar fi Vert.x. Ca abordare macro pentru 2021 mi se pare interesantă partea de verificare formală a sistemelor, practic atunci când dezvolți un sistem concurent, distribuit, să ai șansa să îi faci o verificare formală (apriori), iar cel mai bun exemplu pentru acest lucru îl reprezintă TLA+.”
Tot el ne povestește că dincolo de job urmărește de peste jumătate de an un limbaj denumit Unison care e în curs de dezvoltare și care i-a stârnit curiozitatea legat de forma finală în care va fi lansat. Lucian adaugă faptul că 2021 va fi un an important și pentru comunitatea de Scala, deoarece versiunea 3 a limbajului așteaptă un release candidate în acest an.
„Pentru mine de menționat pentru 2021 sunt și knowledge graph-urile. Anul acesta cred că vor fi din ce în ce mai populare, iar soluții precum grakn.ai (ce oferă inferență sau analytics by default) vor atrage mulți adepți. Într-un final, în contextul unui developer care lucrează într-o companie mai mare, nu într-un start-up, tehnologiile care pot fi folosite pentru diverse referințe pornesc în primul rând și de la maturitatea acestora. Pentru baze de date putem vorbi de Cassandra sau Riak, pentru Infrastructură de Mesos, Consul, Kubernetes, pentru Message Brokers de Kafka sau Pulsar și așa mai departe.”
Twitter, Github și Daily medium diagest
Cu atâtea surse de informare, comunități online și canale în care oamenii împărtășesc informații și resurse utile, Lucian ne spune că încearcă să fie la curent diversificând canalele. Urmărește diferite conferințe, speakeri, precum și activitatea acestora în contextul open source. Twitter este canalul principal unde găsește trenduri noi sau contribuții relevante pentru o anumită tehnologie. De asemenea, o altă sursă este și daily medium digest-ul unde este abonat la diferite grupuri.
„Îmi place să urmăresc și ce se întâmplă la companiile mari, precum Netflix, Amazon sau Google, pentru că toate au un blog pentru ingineri unde aceștia postează constant anumite părți din ce lucrează, problemele de care s-au lovit și cum le-au rezolvat.”
Radu Enucă, Team Lead și front-end developer
Radu lucrează de 18 ani în programare și zâmbește mărturisind că nu prea știe cum a trecut timpul. În prezent este front-end developer în aria de canale și platforme digitale din ING Tech, dar pe parcursul carierei a lucrat și în zona de baze de date, back-end, arhitectură etc. În rolul actual se ocupă de dezvoltarea unei suite de produse, e în contact cu zona de business și arhitecții, dar scrie mereu cod și încearcă să își facă timp pentru sesiuni de mentoring și knowledge sharing cu echipa. Crede că e foarte relevant să oferi prioritate acestui tip de activități pentru a progresa în domeniul programării.
„Lucrez majoritatea timpului în JavaScript, dar am lucrat destul de mult și cu Python. În ultimii ani am început să aloc mai tot timpul personal pentru Machine Learning. Folosesc Python și bibliotecile aferente: TensorFlow, Keras, PyTorch, scikit-learn etc. În plus, încerc să aplic principiile programării funcționale unde este posibil, chiar dacă limbajul nu e pur funcțional. Pentru că am urmat studii tehnice, au mai mult sens pentru mine limbajele funcționale și de aceea le folosesc des.”
Radu ne povestește că atunci când vrea să fie la curent cu tot ce e nou în domeniu nu are o sursă sau un canal preferat, pentru că în prezent sunt atât de multe posibilități încât poți alege foarte ușor în funcție de tipul de conținut care ți se potrivește mai bine. Atunci când îl interesează un subiect preferă să îl cerceteze, să caute printre recomandările altor persoane, să urmărească prezentări în domeniu și cu tot ce găsește să își creeze cumva curriculum lui propriu de învățare.
„Când vreau să învăț un framework sau o librărie nouă cred că cea mai bună metodă e să mă uit dincolo de documentație, la codul scris. În principiu, codul e mereu la zi, documentația nu întotdeauna. În plus, urmăresc constant și Hacker news, Medium, feed-uri de Front-end și îmi iau multă informație de la oamenii pe care îi urmăresc pe Twitter în zona de Machine Learning. ”
Perspective pentru 2021
„Anul acesta eu mi-aș dori să aloc mai mult timp zonei de web assembly, care deși e pe piață de câțiva ani, nu am reușit să îi acord prioritate. Pe zona de Machine Learning vreau sa studiez mai mult TensorFlow 2, cu care am început să lucrez încă de anul trecut.”
Radu punctează că a observat că în ultimul an, în comunitate, a crescut destul de mult interesul pentru Python și crede că va continua să crească. El explică și că încă din 2015, odată cu dezvoltarea machine learning și data science, a luat și Python avânt.
„Cred că este în primele patru limbaje în majoritatea topurilor pe care le-am citit. Pe de altă parte, Python este și un limbaj de programare foarte bun pentru cineva care se lovește pentru prima oară de programare, e ușor de învățat și prin urmare gradul de adopție crește și din acest motiv.”
Sursa foto: Unsplash.com
Limbaje și tehnologii pentru un start bun în programare
Întrebat ce ar sfătui un tânăr la început de drum în programare în anul 2021, Radu ne povestește că din punctul lui de vedere e important să fii pragmatic, să te uiți în piață la ce job-uri sunt disponibile și cu ce limbaje și frameworks lucrează majoritatea companiilor mari.
Apoi, în funcție de limbajele care îți sunt potrivite, care te atrag, e bine să începi să le studiezi individual. Radu punctează că e important să stăpânești un limbaj, maxim două, dar să abordezi și ecosistemul din jur, la un nivel de bază: să știi să lucrezi cu source control, testare automată, să știi să găzduiești un API pe un server, pentru că te vor ajuta să înțelegi mai bine la un nivel macro, proiectele în care vei lucra.
„Cu ajutorul acestor aspecte de bază descoperi ce îți place și ce ți se potrivește atunci când ești la început de drum. E important să te uiți la zona de front-end, de back-end, dar și la cea de bază de date. Pentru Front-end de exemplu, cred că nu ai cum să nu te lovești în carieră de Java Script, pentru Back-end, de Java sau C#. Pe partea de mobile pe de altă parte sunt utile Swift, Kotlin și Java.”
Maria Nicula, back-end developer
Maria lucrează de 6 ani în programare, în zona JVM, în special cu Java. Momentan e parte din două echipe și proiecte și se bucură că astfel participă la diverse sesiuni de knowledge sharing în care discută despre tot ce e nou în materie de limbaje, clean code sau alte teme mai abstracte.
„În prezent eu folosesc cel mai mult Java, iar ca frameworks Spring și SpringBoot. În timpul liber am început să explorez Quarkus, Micro Profile, Cloud ready. Am mai lucrat în Kotlin și cred că rezolvă anumite probleme din Java și e și o tranziție ușoară pentru un developer care are un istoric similar cu al meu. Mă interesează mult și zona de Machine Learning și asta încerc să prioritizez cel mai mult ca temă de învățare, cu framework-urile aferente: TensorFlow și PyTorch.”
Functional programming și Kotlin
„Pentru mine, 2021 va însemna mai mult studiu în zona de functional programming pentru că, deși lucrez cu ea de câteva luni, vreau să devin mai încrezătoare și să îmi extind cunoștințele. În aria de functional programming te lovești totuși de o curbă de învățare care la început te poate speria. Multe articole, tutoriale și mulți termeni, dar cu toate astea, simt că mă ajută mult și vreau să continui să îi aloc timp.
”În plus, la nivel de limbaje, Maria ne povestește că îi stârnește interesul în continuare Kotlin și vrea să continue să îl folosească pentru că are mult potențial de integrat inclusiv în proiectele în care lucrează acum. Ea ne menționează că a observat că a crescut în popularitate acest limbaj în ultimul timp și crede că va continua să crească și în 2021.
„Zona de Deep Learning, de exemplu, mă ține mereu în priză pentru că apar lunar lucruri noi. Un model nou, un framework actualizat. Îmi doresc să studiez mai mult ce au creat cei de la Open AI și anume GPT-3 (Generative Pre-trained Transformer 3). E ceva ce mă interesează de anul trecut de la lansare, dar nu am reușit să îi acord suficient timp.”
Pentru a fi la curent cu ce e nou și Maria folosește multiple canale de informare. Reddit, Twitter, conferințe precum TenserFlow Dev Summit, meet-up-uri și discuții cu colegii sau oamenii din comunitatea de Machine Learning, zona care o atrage pe ea în ultimii ani. Încearcă să citească și câte ceva din fiecare domeniu, pentru a rămâne la curent cu piața și schimbările dese.
„Încă mai citesc și despre Python, de exemplu. Este limbajul meu de suflet cumva, pentru că este primul limbaj pe care l-am învățat chiar în liceu. Python era destul de sus în topuri și înainte să se dezvolte foarte mult zona de Machine Learning cu librăriile aferente și Data science. Este ușor de folosit, cu o comunitate foarte activă și extrem de interoperabil cu biblioteci C/C++ pentru cazurile când performanța este o necesitate.“
Sursa foto: Unsplash.com
Să fii deschis, să explorezi constant, asta cred că e important pentru a deveni un programator bun
De la primul limbaj de programare, folosit de Maria încă de acum 10 ani, facem un salt în 2021 la tehnologiile utile pentru un programator la început de drum. Maria începe prin a ne spune că e important să încerci mai multe tehnologii și să înveți niște concepte de bază, pentru că domeniile sunt interconectate. Din perspectiva ei, în calitate de back-end developer e important și să înțelegi, de exemplu, cum e conectată zona de front-end, cu cea de back-end și cu cea de baze de date, pentru că îți oferă o perspectivă de ansamblu relevantă asupra proiectelor în care lucrezi.
„ Cred că și atitudinea e importantă, mai ales la început. Să fii deschis, să pui întrebări mereu și să nu faci doar ceea ce ți se cere, să explorezi constant, asta cred că e baza pentru a deveni un programator bun, indiferent de tehnologie. Mai departe, cred că ține de interesul fiecăruia și de lucrurile care îi plac cel mai mult dintre limbajele la care a fost expus.”
Maria încheie prin a ne spune că în zona în care lucrează ea, Java e în continuare un limbaj important, dar trebuie explorat și Kotlin care oferă multe posibilități și în partea de mobile.
Indiferent de topuri și preferințe subiective, în programare te poți lovi și de multe oportunități și alternative. Chiar dacă ești la început de drum sau ai mulți ani de experiență în spate, era digitală și rapiditatea cu care apar update-urile și schimbările, te obligă, la fel ca în alte domenii, să fii la curent, să înveți librării sau framework-uri noi și să lucrezi cu mai multe limbaje.
Cu toate acestea, limbajele de programare rămân un instrument de lucru iar întrebarea „Ce tehnologie folosești?” se dovedește a fi mai puțin importantă decât flexibilitatea în gândire și înțelegerea faptului că fiecare limbaj în parte îți arată de cele mai multe ori încă o altă posibilitate de rezolvare a unei probleme.