Stapanirea unui nou limbaj de programare relevant pietei

Salut,

As dori sa progresez mai mult in domeniu programarii / si al carieri si vreau sa ma focusez cel putin in urmatoarea perioada sa invat un noul limbaj de programare pe care sa-l stapanesc.

Un mic background, lucrez ca frontend developer cu TypeScript, React. Vreau sa invat ceva ca sa fiu relevant marketului, avand in plan cel putin deocamdata sa lucrez pentru banci sau FANG.

Am pe lista urmatoarele limbaje:

  • Python
  • C# (cu .Net)
  • PHP
  • Java
0 participanți

Python si Java, sunt pe departe cele mai cautate limbaje dintre alea 4.
Dar parca Python te face mai relevant in ziua de azi in piata, comparativ cu Java.

2 Likes

La Python ma gandeam si eu + ca am mai avut ceva interactiune cu el (nu la nivel de productie, doar hobby).

La Java vad un learning curve mai mare decat la Python.

1 Like

Daca vrei FAANG e (aproape) irelevant limbajul. Baga algoritmi si structuri de date (plus system design daca vrei pozitie mid sau senior). E suficient sa stii un limbaj (cam oricare) in care sa rezolvi problemele de interviu.
Daca vrei domeniul bancar Java.

Bancile sunt cu Java.

FANG e cu Python și mai nou cu Go.

Eu aș alege în primul rând după ce îmi place.

3 Likes

Caută care e cel mai bine plătit proiect pe care ai aplica azi și vezi ce limbaj se cere.

Python e posibil suprasaturat, interviurile o să fie cancer. Totuși poți avea și noroc.

La java greul nu e limbajul, e domain knowledge (domain model-ul e complicat in multe locuri), baze de date, infrastructură complexă, microservicii aiurea, spring…
Poți să te uiți și la Kotlin pe backend, mie mi-a plăcut Kotlin cu sau fără Spring.

Go se utilizează la proiecte mai complexe care au nevoie de eficiență din ceva motiv.

Python și Java sunt limbaje de facultate, nu prea ai cum să fii în competiție cu cineva care și-a scris toate temele, proiectele și examenele în Java sau Python timp de 3 ani. Asta înseamnă și că interviurile vor încerca să sară peste nivelul de facultate.

4 Likes

Lipseste Go din sondaj si este un limbaj mai mult decat relevant in acest moment. Pe de alta parte Python devine din ce in ce mai utilizat si asta foarte mult, probabil, datorita utilizarii intense de AI/ML (eu momentan lucrez complementar in ambele). Totusi, daca vrei sa mergi in zona enterprise Java si C# probabil sunt cea mai buna alegere.

5 Likes

Nu am adaugat Go si Rust intentionat, din cauza cerintei pe piata. Ma gandesc sa stapanesc limbaje “comericiale” ca sa fiu relevant pe piata.

Deocamdata sunt oarecum imi dubii. Imi place Python pentru simplitate si ma gandesc serios sa incep cu el ca mai tarziu sa ma duc spre Java si C#.

Well, sa sti ca Python e destul de gresit inteles. In esenta a devenit foarte popular ca toata lumea crede ca e un limbaj simplu si s-au scris munti de cod in el dar nu si de calitate. In realitate Python NU e un limbaj simplu si in plus e un limbaj si un ecosistem scris cam prost (unpopular opinion). Atentie la cei care va duceti cu el prin enterprise sau in zone unde lucrurile trebuie sa mearga flawless ca e posibil sa va bateti cuie in talpa. Problema cea mai mare cu care m-am confruntat e lipsa unor retete bune de a realiza ceva. Ai o multime de variante si librarii care mai de care cu lipsurile ei si e foarte dificil sa concepi o solutie profesionala, long term care sa mearga si bine. Mai sunt si alte probleme legate de OOP, structura codului, concurenta e alambicata rau, programarea serverelor si a microserviciilor e cu cantec si asa mai departe. Overall, Python e bun pentru data science,AI, dezvoltari rapide de prototipuri, diverse scripturi de automatizare, dar e complicat sa faci aplicatii complexe si stabile, cel putin din experienta mea cu el in ultima vreme. Cei de la Google cand au dezvoltat Go lucrau mult in Python si multe probleme le-au rezolvat cu Go. Nu fac acum un versus intre Go si Python ci doar zic mare atentie unde te bagi sa rezolvi probleme cu Python.

7 Likes

Mersi Geo. Vad ca balanta se inclina din ce in ce mai mult spre C# si ma bate gandul sa ma apuc sa arunc o privire peste, mi-am luat si o carte aseara pentru a parcurge limbajul. Prefer sa am un limbaj statically typed decat unul dinamic.

Go e foarte cerut

1 Like

Nu cred ca se mai cere in programator Go ci un programator adaptabil.

1 Like

Python suprasaturat? Explicitează, te rog.

Toata lumea stie python, dar nu la un nivel profesional. E la fel si cu JavaScript/React…, multa lume se poate baga, putini oameni stiu ce trebuie facut in realitate.

E.g. nu folosesc Python zilnic, dar iti fac un API cu Fastify sau ma joc cu pandas, dar nu inseamna ca va fi ceva bine facut.

2 Likes

Sunt de acord. Chiar as vrea sa construiesc un raspuns la postul original pe ce ai zis aici:

Dupa cativa ani de experienta, nu mai conteaza ce limbaj stii (daca este unul din cele din lista ta) ci experienta cumulativa cu ele (ex. cineva care a facut un REST API in Java Spring il pot angaja sa faca acelasi lucru in C#). De obicei, pana si ce ai aprofundat, se poate aplica la toate limbajele de acolo (ex. memory optimizations pe un limbaj garbage collected)

Daca as fi in pozitia ta as alege un limbaj diferit de toate insiruite de tine. As alege ceva care este fundamental diferit de alte limbaje (dar le-as invata doar cat sa inteleg acele diferente). As lasa limbajele astea enumerate de tine sa le invat cand va fi cazul (la job). Uite cateva idei:

  • C (nu C++) - lipsa de clase. Poti afla de ce totusi sunt utile clasele/metodele/interfetele/etc. si ce probleme apar fara ele si cum totusi le poti rezolva
  • Rust - adauga borrow-checker-ul in loc de garbage collector. Poti afla ce probleme sunt (ineficient) rezolvate de catre limbajele garbage collected si ce altele apar in modul acesta de lucru
  • Assembly - poti afla cum functioneaza limbajele la un nivel fundamental. Ce se intampla cand se apeleaza o functie? Dar cand se executa un program?
  • LISP sau Haskell - poti afla care sunt avantajele sau dezavantajele programarii (pur) functionale

… sau altele care au mai fost recomandate aici. Daca vrei neaparat ceva care e si cautat si poti aplica direct la un job: Go si Rust sunt alegeri bune si gasesti job-uri pe asa ceva.

Intuitiv, pare ca toate limbajele se invata individual, dar asta nu e adavarat. Din fiecare limbaj poti invata ceva care se poate aplica la toate celelalte limbaje si te-ar pune deasupra unui candidat care nu cunoaste diferenta. Acel amalgam de cunostinte din toate limbajele si modul in care le aplici determina cat de bun esti tu ca programator

1 Like

Clar Java.

La FAANG te astepti sa schimbi limbajele ca pe sosete daca e nevoie. Va trebui ceva capacitate sa inveti rapid diferentele (nu foarte multe) dintre ele.

Probabil mai putin la banci, dar exista destul software enterprise scris in C# (cu .Net). Ca limbaj e mai evoluat decat Java. Diferentele sunt minore insa.

Stapanesti deja un limbaj dinamic. N-as trece tot la unul dinamic ca limbaj #2.

Util pentru cine-l stie (daca nu gaseste job mai bun). Nu l-as invata de la 0 in 2023.

3 Likes

Desi poate nu gasesti a fi relevant ori absurd, eu am inceput recent sa invat erlang si dupa dua carti si cateva excercitii am inceput sa ma mut pe Elixir, ce este derivat din erlang si imprumuta niste tehnici si din alte limbaje.

Chiar daca la prima vedere Elixir nu pare folosit ori chiar inutil, ai fi surprins de nisa si copaniile ce il folosesc, pentru licruri specificie, ori chiar ca si tot stack-ul. Iar “functional programming” te invata multe lucruri utile si in restul vietii de programator.

Iar multi din comunitate zic ca timpul in care dezvolti aplicatii e mult mai redus, fiindca exista mai putina frictiune intre date in limbajele non-mutabile.

Dar eu chiar cred ca ai putea sa iti imbunatatisti skill-urile acolo unde esti acum. Exista o gramada de lucruri pe care le poti invata si pe frontend si pe care o gramada de programatori le ignora.

3 Likes

E irelevant limbajul pe care il inveti, ecosistemul lui o sa te omoare, de la runtime la frameworks, la pachete, trebuie sa citesti cateva carti sa intelegi ce si de ce se foloseste, sa vezi mai multe proiecte mari opensource.

1 Like

Am decis sa merg pe Java. Daca ati ceva recomandari le astept.

Deocamdata urmaresc un curs pe care mai am putin si am sa-l termin Java Master Class | Amigoscode urmand ca dupa acesta sa ma familiarizez si cu Spring Boot si sa fac un proiect unde sa pun in practica ce am invatat.

Pe langa asta m-am gandit ca trebuie sa ma familiarizez cu cu bazele de date, am mai facut in trecut ceva cursuri de SQL dar nimic profeional sau la un nivel unde sa ma simt confident. Iar aici legat de bazele de date vreau sa stiu cum sa creez relatii eficiente intre tabele, cand trebuie sa crez un tabel nou, migratii etc… V-as fii recunoscator daca aveti resurse pentru asa ceva sau sti cursuri bune de unde am ce sa invat. Deocamdata am zis ca am sa arunc o privire peste cartea aceasta https://www.amazon.co.uk/dp/0136788041

1 Like

M-ai facut curios. Ce limbaje ar fi mai putin supra saturate si totusi sa-ti poti gasi cu usurinta job?

1 Like