Care este cea mai buna cale de a invata basic web development?

Daca esti incepator, invatati elementele de baza ale HTML, CSS timp de o luna, in primele 2 saptamani urmati un tutorial specific si apoi va faceti propriile experimente cu ajutorul StackOverflow si w3schools.

Urmatoarele 15 zile invata javascript si JQuery de baza, apoi 1 saptamana propriile experimente, Afla bunele practici de dezvoltare front-end.

1 saptamana obtineti cunostinte despre modul in care functioneaza programarea de pe server si instalati PHP, Apache, MySQL (Xampp) pe pc/laptop.

Acum puteti invata PHP timp de o luna, daca nu aveti suficienta experienta in informatica, va trebui sa invatati elementele de baza ale programarii orientate pe obiecte si ale ciclului de viata al programarii. Fii confortabil in PHP foarte bine. Puteti face aproape orice tip de software in PHP. Orice sfat pt. incepatori este binevenit.

Tu cum ai invatat?

Toate cele enumerate de tine nu doareaza doar o luna fiecare(o luna poate sa dureze doar nivelul basic).

Freecodecamp categoric, mai sunt ceva cursuri bazate pe proiecte de la Google.

Pentru JavaScript n-are nici un rost sa inveti jQuery. (dar freecodecamp are un curs foarte bun cu animatii ca sa intelegi ce este, dar mai mult nu te intereseaza)
Daca inveti acum n-are nici un rost sa inveti PHP, incepi cu ceva backend mock-uit (fals) care da date dintr-un JSON, dupa ce poti crea un front-end inveti despre baze de date, despre sql, despre nosql si documente. Folosesti ceva API REST existent, ceva API graphql existent, inveti despre headere, login cu JWT (librarie standard), SSO, OAuth.
Dupa faci ceva aplicatie reala pe front-end, posibil cu React, pentru backend poti folosi Firebase sau un serviciu cu API (e gratuit pana la o anumita limita)

Dupa ce stii cat de cat ce trebuie facut pe front-end te poti apuca si de ceva pe back-end, ceva simplu cu Go, Kotlin, chiar Python cu FastAPI (mi-a intrat recent in atentie fiindca mi se pare ridicol de simplu). Combinat desigur cu o baza de date mysql/postgresql sau chiar mongodb. Eventual combinat si cu un ORM.
Dupa ajungi la lucruri mai complexe precum roluri pe useri, liste virtuale, componente (widget-uri) in functie de context, date care se actualizeaza in timp real cu websockets si stomp/mqtt, programare functionala.

Iti ia cam un an sa intelegi JavaScript si sa stii cum sa abordezi problemele (aici includ si cunostiinte de HTML/CSS(box model+flexbox+css grid) - poate chiar si desenarea pe canvas, SVG-uri, utilizarea dev tools si presupun ca stii ceva programare, daca JS e primul limbaj s-ar putea sa ia mai mult de un an), dupa un an pentru TypeScript si un an pentru pattern-uri pe front-end cu React de exemplu. Aici includ si unit testele, chiar si e2e-urile. In acelasi timp mai poti invata si lucruri de pe back-end dar m-as mira daca ai invata mai mult de validare, login cu JWT, paginare, OWASP top 10 si join-uri pe sql.

Un om pe front-end decent incepe cand stie cum sa faca un layout fara !important in CSS, intelege build system-ul cu SCSS, cu React… Iar cu JS scrie cod elegant, asta inseamna cod functional cu sintaxa ES6 si stie sa faca debugging din browser la componente mai complexe precum liste virtuale, componente care apar la hover/in afara paginii. Preferabil scrie si unit teste bune in functie de framework, probabil cu jest/mocha+chai.

Legat de gazduire gratuita la inceput (avantajul din trecut al lui PHP), front-end-ul se poate gazdui gratuit pe vercel/netlify/Google GCP, Github Pages/ GitLab… Backend-ul (daca e node sau python) https://www.deta.sh, Firebase, Google GCP, Heroku, Vercel (daca e serverless).

Asta nu mi se pare basic deloc.

Mi se pare total basic sa poti sa iei un API de la Google (probabil un Google Sheets)/Facebook/Github si sa faci ceva cu el. Login-ul peste tot se face cu JWT, API-urile cu graphql sunt din ce in ce mai populare. La SSO zic sa poti folosi API-ul de la Google de exemplu.

Se incepe cu ABC-ul.
Tu ai inceput cu XYZ!

1 Like

Nu mai folositi JWT pentru login:
http://cryto.net/~joepie91/blog/2016/06/13/stop-using-jwt-for-sessions/

Sunt curios, mai sunt ceva tehnologii/tool-uri pe care ai uitat sa le enumeri? :slight_smile:
Si nu e vorba strict de postarea asta, ci de majoritatea, in general.

Am observat ca la tine nu conteaza atat de mult subiectul, cat conteaza sa enumeri cat mai multe buzz-words. Probabil asta te face sa te simti mai avansat, mai smecher.

Acum o sa vii si o sa spui ca nu-i adevarat, dar iti zic ce impresie dai din exterior. De mult timp.

3 Likes

Băi @isti37, nu știu cum să-ți spun mai frumos, dar aberezi[1] grav. Ori arunci nume de tehnologii aiurea ori pur și simplu ai uitat cum e să fii începător.

Zici tu că este o idee bună ca un începătorînceapă cu SSO, OAuth, JWT, Go, Kotlin , React, Jest, mqtt și OWASP? Serios? SERIOS? Serios-serios?

E ca și cum ai vrea să te apuci de tâmplărie și ți se spune: ah, păi ai nevoie de strung și CNC (și mai știu eu ce unelte se folosesc în domeniu) când, de fapt, ai nevoie doar de un fierăstrău și o rindea.


  1. Dar nu doar aici, ci în general. Eu sunt curios cât de bine stăpânești aceste tehnologii. ↩︎

Am zis ca se începe cu Freecodecamp cu html, CSS, JS, restul după ce știi JS/TS, ca să dau un motiv pentru care ia un an, doi să fii minim decent. Adică după cam un an ar fi bine să știi să implementezi ceva din cele enumerate, nu e nimic complicat să iei cod și să îl folosești. (e.g rutare in react cu o librărie de OAuth)

E un post scris la ora 3 dimineața, dar îmi mențin punctul de vedere ca un începător ar trebui sa învețe ce am menționat. Nu toate deodată și sunt alternative, pe back-end am experiență și cu Go și cu Kotlin și documentația/resursele pentru învățat sunt foarte bune.

Un limbaj client side si unul server side diferit de primul sunt un must (deci nu backenduri in nodejs). In rest sunt protocoale f necesare pt a putea participa activ la procesul de dezvoltare. Si eu consider ca sunt necesare, as mai adauga “don’t even get started without knowing linux; yes it hurts, and yes it will make you a senior faster”.

Nu e vina cuiva de pe forum ca lumea software se misca asa repede si expandeaza ca nivel de complexitate.

N-am menționat nici 10%, am menționat doar ce am învățat eu acum 3 ani.

Ceva imi spune ca mai ai de invatat despre cum sa inveti :slight_smile:
Tu cum ai invatat sa citesti?
Te-ai apucat de Balzac si Kafka?

Nu vreau raspuns la aceste intrebari. Sunt retorice.


Parerea mea, nu te supara pe mine :see_no_evil:

1 Like

Eu mă gândesc la începător ca la cineva care are zero experiență. Caz în care este mai important să intri într-un mindset potrivit pentru a scrie cod, mai puțin important să ataci toate tehnologiile

Asta pentru că fiecare tehnologie, fiecare limbaj, fiecare framework are provocările proprii. Nu oi fi eu singurul care a găsit documentații oficiale greșite/incomplete…

După ce aprofundezi un limbaj îți dezvolți anumite modele mentale care îți permit să treci la următoarea tehnologie mai ușor. Apoi la următoarea și mai ușor șamd. Problema este că următoarea nu e chiar o chestie liniară ci are foarte multe ramnificații. Din Roadmap-ul de pe github pus de @isti37 putem extrage:

These roadmaps cover everything that is there to learn for the paths listed below. Don’t feel overwhelmed, you don’t need to learn it all in the beginning if you are just getting started.

Nu compara cazul în care „@tekkie vrea să adauge [cine-știe-ce-limbaj] la lista de limbaje cunoscute” cu cazul în care „gigel este la primul limbaj de programare”, pentru că sunt abordări diferite.

2 Likes

In primul mesaj nu e clar daca e vorba de incepator in web development sau incepator in programare.

Cred ca ne-am dus spre violenta intelectuala fiindca unii intelegem incepator absolut din cerinte si unii intelegem “cineva care stie ceva programare dar vrea sa invete basic web development”. Chiar si cuvantul basic te induce in eroare fiindca pentru unii inseamna fundatii solide si teorie si pentru unii inseamna sa stii sa folosesti unelte/componente de pe net ca sa faci ceva si sa inveti din mers.

Problema clasica de “citeste de 10 ori cerintele” inainte sa raspunzi si sa pui intrebarile relevante inainte sa raspunzi. Caz in care ma simt 100% vinovat cu ce am raspuns. Daca as vrea chiar sa despic firul in patru, atunci se intreaba de PHP si jQuery (web development vechi/classic) si eu automat am raspuns legat de front-end development ca si conceptul meu de web development.

1 Like