În prima parte a seriei noastre am arătat că munca unui programator înseamnă mult mai mult decât simpla scriere a codului.
Am vorbit despre primele zile într-un software house, despre diferența dintre facultate și proiectele reale și despre faptul că experiența se dobândește în primul rând prin practică.
Astăzi trecem la întrebarea pe care și-o pune aproape fiecare Junior. Ce ar trebui, de fapt, să învăț?
Internetul îți spune orice. Unii spun că e obligatoriu să cunoști React. Alții susțin că viitorul este al Rust. Alții iar convin că fără Docker, Kubernetes și cinci certificate nu are rost să trimiți CV-ul.
Adevărul arată mult mai liniștit...
Nu învăța framework-uri. Învață programare.
Această propoziție poate părea ciudată.
Până la urmă companiile anunță recrutări pentru React Developer, Java Developer sau PHP Developer.
De ce, atunci, spunem să nu începi cu framework-urile? - Pentru că framework-ul este un instrument. Iar instrumentele se schimbă foarte rapid.
Cu câțiva ani în urmă mulți erau convinși că AngularJS va domina decenii. Azi arată cu totul altfel.
Framework-urile le vei învăța pe parcursul întregii cariere. În schimb, felul de a gândi al unui programator rămâne cu tine pentru totdeauna.
De aceea mai întâi învață să:
- rezolvi probleme,
- analizezi cerințele,
- proiectezi soluții,
- citești codul altora,
- scrii cod clar.
Tehnologia este doar un mijloc pentru a atinge un scop.
Stăpânește bine un singur limbaj
Probabil aceasta este cea mai frecventă greșeală a începătorilor.
Astăzi JavaScript. Mâine Python. Poimâine Go. Săptămâna viitoare Rust. După o lună C#...
După două luni se dovedește că niciunul nu a fost stăpânit la un nivel bun. Mult mai bine e să alegi un limbaj și să-l cunoști cu adevărat.
Înțelege:
- cum funcționează memoria,
- ce sunt referințele,
- cum se gestionează excepțiile,
- cum funcționează colecțiile,
- care este diferența dintre programarea sincronă și cea asincronă,
- cum funcționează depanarea.
Când vei învăța bine un limbaj, vei învăța următoarele mult mai rapid.
Învață să citești documentația
Puțin spectaculos? Foarte.
Extrem de util? Cu siguranță da.
Un bun programator nu își amintește totul. Un bun programator știe unde să găsească răspunsuri de încredere.
Documentația oficială a framework-ului sau a bibliotecii va fi aproape întotdeauna o sursă mai bună de informații decât un post ocazional pe un forum din urmă cu șase ani.
Aceasta abilitate de a căuta informații îi diferențiază pe cei care se dezvoltă de cei care copiază la nesfârșit soluții găsite pe internet.
Git nu e butonul „Trimite”
Dacă ar fi să indicăm o singură abilitate pe care merită s-o înveți cât mai curând, ar fi Git. Nu pentru că e la modă. Ci pentru că aproape fiecare echipă de programare îl folosește.
Git nu înseamnă doar salvarea schimbărilor. E un mod de colaborare. Branching. Pull Request. Merge. Rezolvarea conflictelor. Istoricul schimbărilor.
Fără acestea e greu de imaginat munca într-o echipă profesională.
Și încă un sfat. Niciodată nu trimite proiectul într-un fișier ZIP. Serios.
SQL - chiar dacă nu vrei să devii administrator de baze de date
Mulți Juniori evită SQL. Greșit.
Majoritatea aplicațiilor business folosesc baze de date. Nu trebuie să devii expert în optimizarea interogărilor.
Dar ar trebui să înțelegi:
- ce este o bază de date relațională,
- cum funcționează relațiile,
- ce este un index,
- care e diferența dintre LEFT JOIN și INNER JOIN,
- de ce o interogare prost scrisă poate încetini întreaga aplicație.
Aceste cunoștințe sunt utile în aproape orice proiect.
Linux nu mușcă
Nu trebuie să renunți imediat la Windows. Dar merită să înveți bazele lucrului în terminal.
Majoritatea serverelor rulează pe sisteme Linux.
Cunoașterea comenzilor de bază:
- ls,
- cd,
- grep,
- cat,
- chmod,
- ssh,
poate economisi foarte mult timp.
La început pare ciudat. După câteva luni e greu de imaginat munca fără terminal.
Docker - de ce toată lumea vorbește despre el?
Cu câțiva ani în urmă configurarea mediului putea dura toată ziua.
Fiecare avea o versiune diferită de PHP. O altă bază de date. Alte biblioteci.
Docker a simplificat foarte mult problema. Permite rularea aplicațiilor în același mediu, indiferent de calculator.
Ar trebui ca un Junior să devină imediat expert în containerizare? - Nu.
Dar merită să înțelegi ce este un container și de ce aproape orice proiect modern folosește Docker.
AI e un excelent mentor. Nu cel mai bun programator.
Este un subiect pe care azi nu-l poți ignora.
ChatGPT, GitHub Copilot și alte instrumente AI pot accelera enorm învățarea. Cu o condiție. Nu copia cod fără să-l înțelegi.
E mult mai bine să întrebi:
- De ce această soluție este mai bună?
- Cum funcționează acest algoritm?
- Cum se poate optimiza?
- Care sunt dezavantajele acestei abordări?
AI explică foarte bine.
Totuși nu ar trebui să înlocuiască gândirea proprie.
Debugger-ul e prietenul tău
La început majoritatea programatorilor fac ceva de genul: var_dump($variabila);
Apoi: echo $variabila;
I puțin mai târziu: console.log(date);
console.log(date2);
console.log(date3);
console.log(date4);
Fiecare dintre noi a început așa. Dar merită să înveți cât mai repede să folosești debugger-ul.
Îți permite să oprești programul în orice punct, să inspectezi valorile variabilelor și să înțelegi ce se întâmplă cu adevărat în timpul execuției codului.
Este una dintre abilitățile care accelerează foarte mult dezvoltarea.
Ce echipament să alegi?
Mulți se așteaptă la o listă de calculatoare de zeci de mii de lei. Inutil.
La început mai importante decât cel mai nou procesor sunt:
- o tastatură confortabilă,
- un SSD rapid,
- o cantitate adecvată de memorie RAM,
- un mediu de lucru stabil.
Iluminarea RGB nu va accelera compilarea. Trei monitoare nici nu vor face codul mai bun.
Un echipament bun ar trebui să ajute la muncă. Nu să impresioneze în poze (deși, să fim sinceri - aspectul contează și el ;) )
Glosar de termeni
Framework
Un set pregătit de instrumente și biblioteci care facilitează crearea aplicațiilor conform unor reguli determinate.
Git
Sistem de control al versiunilor care permite urmărirea schimbărilor în cod și colaborarea mai multor programatori la același proiect.
Docker
Platformă care permite rularea aplicațiilor în containere izolate, astfel încât mediul funcționează identic pe calculatoare diferite.
Debugger
Instrument folosit pentru a analiza execuția unui program pas cu pas și pentru a găsi erori.
SQL
Limbaj folosit pentru comunicarea cu bazele de date relaționale.
Concluzie
Un bun programator nu cunoaște toate tehnologiile. Nu știe toate framework-urile. Nu ține toată documentația în memorie.
Un bun programator are fundații solide.
Știe cum să analizeze problemele.
Știe unde să găsească informațiile.
Înțelege principiile de funcționare ale tehnologiilor.
Și tocmai de aceea poate învăța rapid noi instrumente.
Framework-urile se vor schimba.
Limbajele vor evolua.
Modul de gândire va rămâne cea mai valoroasă abilitate pe tot parcursul carierei.
În următoarea parte vom arăta cum arată munca cotidiană a unui Senior Developer, de ce Code Review este cea mai bună școală de programare, ce înseamnă cu adevărat Clean Code și de ce fraza "la mine funcționează" provoacă un zâmbet nervos la mulți programatori.



