Cum incepi calatoria in acest domeniu?

Intrebarea mea pentru azi e simpla…cum incepi sa lucrezi in acest domeniu? (web development)

Ca sa imi intelegeti dilema putin mai bine: Imi place tot ce tine de web development. De mic mi-au placut calculatoarele. Imi e greu sa ma orientez pentru ca de multe ori deschid forumuri, comunitati si vad lucruri noi si imi vine sa invat tot ceea ce se gaseste online despre tot. Ce stiu sa fac pana acum? Ceva web design, ma descurc ok in photoshop si foarte putin illustrator. Stiu si HTML si CSS evident. Am lucrat pentru o firma la ceva proiect part time ca si junior designer sa zicem.

Totusi imi place web development-ul ceva mai mult. Incepusem sa invat php acum vreo 2 ani insa nu am ajuns prea departe. Stiu asa sa citesc cateva scripturi simple in php. Anul trecut am zis sa invat un limbaj de programare ceva mai bine si am ales javascript. Din intamplare mi-a placut chiar foarte mult. E foarte versatil. Dupa ce am invatat cat de cat bazele am zis sa invat node js si asa am facut, evident bazele. Acum ma gandesc sa ma uit putin peste Angular sa vad ce si cum. Este foarte multa informatie pe care as vrea sa o stiu si este greu cand timpul este limitat. (sunt student la inginerie)

Problema mea cea mai mare este ca pe web development nu am lucrat niciodata la un proiect cat de mic. Drept pentru care habar nu am ce si cum se face in cadrul unui proiect. Ce as vrea sa stiu de la voi este destul de simplu:

  1. Care sunt cunostiintele minime pentru care iti poti gasi un job in domeniu (ca si incepator desigur)?
  2. Cat de mult conteaza o certificare/diploma?
  3. Cat de greu este sa gasesti un loc de munca remote?
  4. Care sunt lucrurile cele mai importante pe care trebuie sa le stii ca si incepator? Si este PHP-ul o necesitate in domeniu?

PS: Cred ca imi place mai mult backend-ul, desi nu am incercat inca ceva pe frontend. Sper ca nu v-am plictisit prea tare insa am zis sa intreb oameni cu experienta :smiley:

Fă proiecte, nu ai cum să înveți ceva doar din cărți, tutoriale. Node.js e o alegere foarte bună pentru backend și frontend.

Eu vreau doar să îți fac mai clar ce înseamnă backend și frontend :

Backend :

  • Rulează pe un server/ n servere, preferabil pe linux
  • Baze de date distribuite (mysql, mongodb, couchdb, oracle, microsoft sql, ibm db2, SAP, Cassandra…)
  • Primește o cerere, procesează cererea și servește datele cerute. (Prin https cu un API rest, cu pagini html cu get/post, un API GraphQL mai nou, un API pe ceva protocol gen TCP/IP, de exemplu cu MQTT sau pe API-ul unui client de joc cu udp, prin websockets…)
  • Unele baze de date pot înlocui complet un backend pentru API-uri
  • Poate genera frontend-ul dinainte pentru a economisi resurse pe client (la unele jocuri toate mișcările sunt procesate și trimise de server pentru a se evita codurile, practic fizica/logica se calculează și pe server, nu doar pe client; pe web poți genera dinainte DOM-ul de js ca pagina pe client să se încarce mai rapid sau să fie 100% vizibil conținutul motoarelor de căutare și dispozitivelor mai speciale)
  • PHP în mod normal este folosit cu un template din care se generează html-ul pe server și in baza cererilor va genera html-urile cu date diferite. (Dar se pot crea api-uri, chiar dacă sunt opțiuni mai bune)
  • În mod ideal nu are stare, nu salvează nimic unde rulează (pe lângă baza de date)

Frontend :

  • Rulează pe un client (un browser, o aplicație, un joc…)
  • Face cereri către un server sau o bază de date locală și afișează/actualizează/redă datele după un template
  • Baze de date locale/sincronizabile (sqlite, leveldb, rocksdb, couchdb, indexedDB, un fișier json/xml/text local, registry)
  • Putem stoca date pe client în anumite limite
  • Avem acces la interfețe precum mouse, tastatură, cameră, sunet, microfon, imprimantă…
  • Programele noastre vor lucra cu aceste interfețe pe baza event-urilor sau stream-urilor
  • Cerem, trimitem și primim datele prin API-uri standardizate (documentate)
  • În cazul unui site/aplicație vom cere și primi date in funcție de necesitățile noastre și disponibilitatea serverului, în cazul jocurilor/sistemelor realtime vom avea un număr de tick-uri la care serverul trimite/primește date pe secundă.
  • Lucrăm cu template-uri sau sisteme precum un engine de joc
  • Pe web/mobile poți avea un frontend generat de js cu react, vue.js, angular, aurora… care cere și primește date și le afișează în mod interactiv

Cele două se cam combină în ziua de azi și aici intervin cunoștințele formale de programare și ceva ce greu se poate învăța.

3 Likes
  1. Totul depinde de postul pe care vrei sa aplici. Exista si internship de unde te ia aproape de la zero, iar firma te ajuta sa cresti. Dar daca e sa zic in general, cu cat mai multe stii, cu atat mai bine. Cu cat ai mai multe proiecte personale care le poti prezenta, cu atat mai bine. Asta in cazul in care iti iei primul job, pentru ca la al doilea, al treilea si asa mai departe vei prezenta mai mult ce ai facut la joburile anterioare.
  2. Asta e un subiect interesant. Aparent, nu conteaza diploma; desi, de la un anumit nivel, la anumite firme mai serioase, o facultate in IT va face diferenta.
  3. Depinde ce fel de loc de munca. Daca te referi la un loc de munca normal, 8 ore pe zi, cu acte si contract si toate cele, parerea mea e ca e destul de greu daca esti la inceput. E mai usor la inceput sa fii intr-un mediu in care poti intreba colegii una alta daca nu te descurci la vre-un task. Dar daca te referi la “job-uri” mici cum poate fi in freelancing, ai sanse sa prinzi daca persisti.
  4. Bazele. Mai ales la inceput e foarte important sa stii bine bazele programarii. Referitor la intrebarea cu numarul 2, daca faci o facultate buna, ea te poate ajuta destul de mult ca sa iti pui bazele programarii. Legat de PHP, nu e o necesitate; desi probabil vei gasi destul de multe job-uri care cer PHP.

Iti recomand ca pana ajungi sa lucrezi undeva, sa faci proiecte personale. Foloseste-ti creativitatea si fa tot felul de proiecte care ori te ajuta pe tine in viata ta de zi cu zi, ori te ajuta sa inveti mai bine tehnologiile respective.

Pe langa toate astea, cred ca e destul de important sa iti alegi tehnologiile si in functie de ce te atrage mai mult. E destul de important ca sa lucrezi cu placere si entuziasm, altfel te vei plictisi si banii (probabil) niciodata nu vor compensa.

2 Likes

Foarte elaborate raspunsurile date de colegi mai sus. Eu insa o sa-ti dau exemplul meu. Am fost undeva in aceeasi situatie cu tine. Am luat totul de la 0 si am stat cam 6 luni acasa sa invat si sa fac proiectele mici. Mi-am facut un portofoliu cu ceva site-uri de prezentare gen psd to html unde am folosit si ceva javascript la nivel basic mai mult sa arat ca stiu cat de cat ce inseamna. Am aplicat pentru un internship(pentru o perioada de 2 luni), am fost acceptat si inca lucrez la firma respectiva. Totul depinde de tine si de cat de mult iti doresti sa inveti. As recomanda si freecodecamp.com - aici poti invata destul de multe si pe langa asta faci si ceva proiecte pe care le poti include in portofoliul tau mai tarziu.

Succes !

3 Likes

Salut.

Eu pot sa iti raspund din experienta mea. Vin din HR si pentru mine it-ul a fost o pasiune (am terminat universitatea de management.).

  1. Cunostintele minime sunt, sa poti sa faci un site de ex, sau sa poti sa faci o aplicatie basic in limbajul ales de tine. Conteaza cat de mult citesti in domeniu, cat de mult ai lucrat. Eu intotdeauna mi-am pus intrebarea asa: De ce m-ar angaja pe mine cineva daca nu stiu sa fac un site cam coada (nu unul complex)
  2. Din experienta mea pot spune ca nu conteaza, conteaza sa dovedesti ca stii “meserie”
  3. Remote mai greu, cel putin la inceput, insa ti-as recomanda sa te angajezi undeva pentru ca o sa inveti mult mai bine si mai repede lucrand intr-o echipa.
  4. daca vb de webdevelopment tre sa stii: Html, css, javascript. Acum depinde de ce directie vrei sa apuci.
    Daca vrei php atunci tre sa stii frontend mai intai si apoi php & mysql, daca vrei sa mergi pe nodejs tre sa inveti html, css si javascript…si tot asa…
    Concluzia: Stabileste un limbaj de programare care iti place si focuseaza-te pe el!

PS: eu am ales PHP

1 Like

Multumesc pentru raspunsuri :smiley: