Invatare java si alte tehnologii - sfaturi

Una dintre probleme este ca nu stiu ce limbaj sa aleg, la cate tehnologii se cer si pe java ma gandeam la front end acuma…Chiar nu am habar ce sa fac. Iar legat dupa cat timp vreau sa ma angajez, pai in cam dupa 1 an de pregatire, iar la salariu sunt constient ca o sa creasca odata cu experienta mea

Pe Udemy: Java Masterclass … il gasesti mai tot timpul redus…Are multe ore de lectii cu multe “challenge” uri. Avantajul daca il cumperi e ca mai vezi solutii facute de altii si raspunsuri la diferite chestii.
Dar daca nu inveti si ce spune zitrusgrape … nici o sansa la junior java dev.

1 Like

Eu m-am apucat singur sa invat, la inceput nici eu nu stiam cum sta treaba si de ce sa ma apuc, stiam doar ca vreau sa am un job unde sa lucrez la pc si sa creez chesti.

Facusem un mic research si ca sa faci site-uri vazusem ca trebuie sa stii HTML, CSS, JavaScript,
neavand nici un background de computer science/mate-info doar ca mai avusesem ceva contact cu Wordpress si Blogspot (unde mai modificam chestii in xhtml).

Am zis ce e asa greu, pe net majoritatea care vand cursuri si pe youtube ziceau ca poti sa devii web developer in 3 luni. Si eu am zis gata, in 3 luni imi schimb job-ul si o sa lucrez de la birou. :laughing: :laughing: :laughing:

Mi-am cumparat prima data o carte https://www.htmlandcssbook.com/ pe care am citit-o in aproximativ 2 zile, HTML si CSS la inceput sunt destul de usoare.

Dupa a urmat JavaScript, am zis gata, in 3 luni termin cu JavaScript si o sa-mi gasesc job ca web developer. Sa zicem ca JavaScript basic este desult de usor de digerat sau asa pare, dar dupa apar chestii ca scope, shallow copy, classes are syntactic sugar, event loop, promises, async/await, try catch, then, map, filter, prototype etc. cuvinte de care o sa te lovesti si trebuie sa vezi ce insemana.

Pe langa asta mai auzi si de algoritmi, Big O notation mai trebuie sa arunci si o privire pe acolo sa vezi care e treba.

Hai sa zicem ca dupa cateva luni stapanesti cat de cat bazele in JavaScript si dupa o sa-ti dai seama ca pe front end ai nevoie si de un framework gen React, Vue, Angular, Svelte etc., eu am ales React.
Te apuci de React, vezi ca acum se recomanda sa folosesti functional components dar in urma cu ceva timp se foloseau class components. Na eu am inceput cu class components sa invat chiar daca nu se mai folosesc si dupa m-am mutat pe functional components.

Ajungi in React, functional components te apuci sa inveti hook-urile care nu sunt asa simple ca in docs, n-a exemplele peste tot sunt usoare dar cand ajungi sa le implementezi o sa vezu ca nu o sa aiba comportamentul pe care ti-l doreai si dupa adaugi si extensia de la React in browser si vezi ca atunci cand faci update la o componenta in “n” componente fac re-render fara sa se schimbe nimic la ele. Te apuci sa faci debugging cauti pe net info cum si de ce, gasesti info despre useMemo, useCallback (astea sunt default dar majoritatea care sunt la inceput nu le studiaza).

Bun, ajugi sa inveti basic stuff in React si iti dai seama ca ai nevoie de un state management in aplicatie, gen Redux. Te apuci sa inveti Redux ii aloci putin timp sa-l inveti cat de cat basic si sa-l implementezi.

Ajungi in punctul unde stii basic HTML, CSS, JS, JS Framework, State Management si vezi ca se foloseste TypeScrit. :exploding_head:

Te apuci inveti TypeScript ii aloci ceva timp, bazele sunt destul de usoare documentatia nu e foarte grea, example basic etc. Inveti bazele si dupa te apuci sa-l implementezi in proiecte simple, adica e usor sa declari const name: string = “Claudiu” dar nu e totul chiar asa simplu cand il integrezi in React, Redux, Api.

O sa auzi si despre API destul de mult, te apuci sa te documentezi ce este cu ce se mananca. In JS probabil o sa folsoesti axios (e mai ok parerea mea decat fetch), cand ajungi sa te documentezi de API o sa ajungi sa inveti cate ceva si despre HTTP Request, o sa auzi de CRUD de care o sa ai nevoie chiar daca lucrezi pe front end.

Nu mai zic ca atunci cand inveti un framework (library) gen React, trebuie sa te descurci si cu librarii gen React Router, npm, etc.

Aaaa uitasem web dev nu e doar HTML, CSS, JS. Mai e git si github.
Git si github suna ele la fel dar sunt cam diferite. O sa ajungi sa deschizi fereastra aia neagra terminal/command prompt si o sa inveti prima data sa navighezi printe foldere, sa listezi ce se afla acolo, ca faci foldere, fisiere etc.

Dupa ce esti “comfi” cu termianlul te apuci sa inveti cateva comenzi in git, faci un git init, “git add .”, git commit -m “message”, dupa faci un repo (un cuvant care apare peste tot cand folosesti github, dar de fapt e un proiect pe care-l faci acolo) pe github si dai push la codul tau. Eu avem scrise pe o foaie la inceput vreo 4 comenzi si imi era si frica sa le folosesc.

Nu mai zic ca o sa te lovesti de chestii in terminal gen nano, nu mai stii cum sa iesi de acolo, cauta pe google (time consuming dar mai inveti cate ceva) mai auzi si de Vim care e folosit de multi developeri pentru a creste productivitatea, poate vrei si tu sa fii cool ca ei te apuci sa-l inveti si te lasi pagubas dupa cateva minute.

Incepi sa devi usor, usor confortabil cu chestiile de mai sunt dar vezi ca in loc de CSS, mai este si CSS Module, BEM, SCSS, tailwind, chakra, bootstrap.

Mai apare si Next.js daca te-ai decis sa folosesti ReactJS.
Daca tot ai folosit ReactJs o sa auzi de React Native ca deh, poate nu-ti place web dev si vrei sa te axezi pe mobile.

Eu am zgariat doar suprafata cu ce ti-am zis mai sus pentru ca nu o sa-ti fie de ajuns doar un singur curs sau o singura carte.

Eu am ajuns sa cumpar in momentul de fata 47 de cursuri pe udemy, nu le-am terminat pe toate doar majoritatea sunt incepute dar mi-am luat informatia necesara pentru ce am avut eu nevoie, edx CS50 Introductin in Computer Science pe care l-am termiant doar ca nu am trimis ultimul proiect pentru ca in perioada aia am tot impins sa reusesc sa acumulez cat mai mult informatie si un fisier/imagine nu te face mai bun. Pe langa CS50 mai am ceva cursuri pe acolo care sunt incepute. Am mai invatat si pe teamtreehouse.com, frontendmasters.com, codecademy, freecodecamp, youtube, google, blog-uri si plus foarte multe carti.

Eu iti zic lucrurile astea nu sa te descurajez, dar nu sunt vizibile si decat sa renunti dupa cateva luni ca ai ales o cale/orientare gresita e mai bine sa stii ce o sa te astepte pe parcurs.

O sa trebuiasca sa dedici ore bune pentru a invata lucruri cu care creierul tau nu este obisnuit si trebuie sa le asimilezi. Ceva ce ai invat nou acum nu o sa aibe sens maine sau intr-o saptamana dar o sa vezi ca cu timpul o sa aibe sens si o sa ti se para foarte usore.

Pe langa programare trebuie sa inveti si cum sa inveti sa stai focusat ca sa intelegi lucrurile pe care le inveti.

Multe persoane si programatori care au canale pe youtube doar vand vise spunand ca e ok sa parctici 20 de minute pe zi dar lucrurile astea nu sunt adevartate.

Am uitat ca mai trebuie sa stii sa scrii si teste. Sa fii lucrat in echipa, sa stii SCRUM, AGILE.

Dupa ce esti confortabil cu ce am scris mai sus poate o sa primesti ceva feedback la job-urile de Junior la care ai aplicat pe care o sa le pici ulterior pentru ca nu ai destul experienta.

5 Likes

In timp ce iti citeam mesajul m-am speriat putin si ma gandeam: “Ok, deci nu am sanse ca junior pe nici-o pozitie din programare”.

Cred ca tot pe webdev raman, dar nu sunt hotarat daca frontend sau backend.

Chiar daca ce ai enumerat mai sus trebuiesc stiute, cred ca se poate angaja si cu html/css/js/js framework.

Cat despre timpul de invatate in cursul saptamanii L-V pot sa fac doar cate 2-3 ore pe zi.

Cat despre timpul de invatate in cursul saptamanii L-V pot sa fac doar cate 2-3 ore pe zi.
Si sambata si duminica de relaxare? :laughing: (glumesc)

Pai da, se poate html/css/js/js framework ele par mici asa daca le scrii. Dar sunt multe lucruri pe care trebuie sa le stii ca sa ajungi sa scrii html/css/js.

Adica mai greu sa fii web dev fara sa stii trminal/cmd, git, github. Plus ca mai trebuie sa te obinuiesti si cu editor-ul poate o sa schimbi cateva pana te obisnuiesti cu unul.

Eu acolo am mai omis Babel, Webpack, JSON, deployment (firebase, netlify, vercel, heroku, etc), GraphQL, design patterns.

Nu exista din punctul meu de vedere DOAR html/css/js/js framework. Poate ca colegii de aici mult mai experimentati decat mine pot sa ma contrazica.

Treaba e ca o sa te lovesti de multe lucruri in drumul tau de a invata un limbaj de programare. Cred ca limbajul pe care il alegi ce cea mai mica problema.

Poti incerca si limbajul Go. E de mare folos si de mare viitor.

:slightly_smiling_face:

2 Likes

Go e chiar fain, am văzut că există niște resurse foarte bine făcute și practice pe go, poate sunt de folos(eventual chiar în ordinea asta):

2 Likes

parerea mea 2 cents, go are utilizatori foarte vocali.

2 Likes

Nu uita de Rust!(sau Haskell)

lol da.
golang dupa 12 ani au descoperit generics :slight_smile: inca 12 ani si descopera functional stuff :slight_smile:
iar rust, cred ca este folosit de 1000 de persoane si iubit de 999 de persoane

Atunci ce ati alege sa invatati daca vreti sa lucrati in domeniul asta? (cum sunt eu in acest moment) Cum ati proceda?

cred ca majoritatea colegilor de aici stiu mai multe de un singur limbaj de programare
eu personal am lucra profesional cu

  • c
  • perl
  • java
  • python
  • ruby
  • go
  • kotlin
  • javascript

toate limbajele sunt ok. Eu as pune altfel problema.
Ce vei face tu, este precum un maraton. Energia ti se va duce, plictiseala va aparea, frustarea o sa fie mai tot timpul. Si tre sa gasesti ceva ceva te va face sa nu renunti. Acest lucru este curiozitatea si pasiunea. Eu cand am inceput programarea, nu aveam internet asa rapid, cumparam, ci piratam orice CD cu programare, citeam revista chip :slight_smile: si asteptam sa plece lumea sa pot scrie turbo pascal la palatul copiilor. Visam sa am un 486dx2 :slight_smile:

Pe mine curiozitatea, si pasiunea de a face lucruri m-au facut sa nu renunt. SI toti am inceput de la zero, cu salarii mizere, cu task-uri de rahat, etc.

1 Like

Revenind la realitatea din Romania, sunt oameni care lucrează și nu înțeleg ce face proiectu pe care lucrează. Deci nu e dracu așa negru, e cererea atât de mare in cat hiring barul e sub pământ.

Salut @SorinC

Parerea mea este ca nu prea stii ce vrei. Dar nu este nicio problema. Toti am trecut prin asta.
Acum, sunt zeci de limbaje de programare si ecosistemul din jurul lor plus comunitatea.

Ce as face eu in locul tau:

  • M-as uita pe docomentatia mai multor limbaje: Java, C#, PHP, JavaScript, Go etc. Doar ca sa vad cum arata cod scris in acel limbaj. Vezi cum este codul din Java vs cel din alt limbaj. Si poti sa te deci pe care vrei sa il inveti. Lucrurile de baza sunt cam asemanatoare.
  • ce a zis @zitrusgrape legat de alte tehnologii, ei bine poti sa inlocuiesti Java cu orice alt limbaj din lista de mai sus si alea o sa ramana. Trebuie sa stii cate putin despre git, cum sa citesti un log, cunostinte de Linux,
  • M-as orienta catre un internship(4-6 ore/zi sau fulltime). Un internship este orientat catre invatare, adica te pot luat de la 0.5 ca sa nu zic 0 :smiley:
    Pe langa invatare, poti sa si task-uri de productie (sa implemetezi ceva), dar mai lejere decat pentru cineva care lucreaza de ceva timp la compania respectiva. Ai avantajul ca nu simti presiunea unui deadline, vezi cum este modul de lucru, treci si prin acele tehnologii.
    Salariul nu o sa fie unul ca la un job normal full time, dar este un punct de plecare si daca te descurci ok, compania o sa iti faca propunere sa ramai la ei.

Este un efort pe care va trebui sa il faci asa cum l-au facut si ceilalti colegi de pe forum. :slight_smile:

Cat despre cursuri platite:
Gasesti o gramada de resurse gratuite pe Internet. Daca chiar vrei un curs platit, eu m-as uita la cum este structurat, cine este instructorul si ce experienta are.
De exemplu Telecom Academy are un curs fain de Java, iar instructorul este cunoscut in lumea java.

Succes!

1 Like

Problema este ca nu prea sunt firme care sa accepte la internship daca nu ai cunostinte destul de solide, iar cand vad in cv domeniul pe care am terminat…ii face sa ma ignore si mai tare.

Momentan sunt hotarat destul de tare sa invat HTML/CSS/JavaScript (desi nu stiu daca este o alegere buna, ca e cam saturata partea de frontend)

Foarte faina descrierea facuta de Claudiu. Pentru mine toate alea sunt zgomot, adica lucruri pe care le folosesc fara sa le consider ceva greu sau usor, sunt doar unelte cu care imi fac treaba.

Dar inteleg cum pentru un incepator totul pare mult si greu. Si am inteles cum pot exista programatori de Javascript care nu stiu despre o cerere HTTP. Sau programatori care stiu jQuery dar nu Javascript.

Multumesc celui de sus ca am inceput cu Pascal si C/C++ si in 8 ani de studiu la liceu/facultate am facut zero web development.

2 Likes

La internship se cer cunostinte de baza si o atitudine buna.
Ai incercat sa aplici?

1 Like

Am incercat, nu am fost sunat pana acuma…de 2 ani tot incerc internship-uri. Dar momentan nu mai aplic, vreau sa invat html/css/js cat de bine pot si sa incerc, cel putin asta simt ca vreau sa fac…

OK!
Atunci da-i inainte cu html/css/js.

Succes! :slight_smile:

1 Like

M-am gandit mai bine, aleg Java si asta ramane. Ma puteti ajuta cu diverse resurse pentru a invata java (link-uri)?

@Cosmin_Popescu am sa iau in calcul foarte mult acel curs.

Am dat de codecool, au o oferta foarte tare, curs java 12luni+3luni internship, plata curs dupa angajare…doar ca trebuie sa demisionez de la locul de munca pentru a urma ace curs…ceea ce este un mare incomvenient. Stiti alte oferte de genul?