Cum învăţ să programez?

28 Sep

Ok, văd pe o grămadă de forumuri această întrebare. Mai nou, sunt întrebat de tot mai multe persoane pe messenger cum am învătat eu CSS/HTML/Javascript. Şi hai să le răspund tuturor, să fie toată lumea fericită. Este un post generalist, fiind valabil pentru ORICE platformă sau limbaj de programare.

În primul şi în primul rând, eu nu ştiu javascript. Da, sună ciudat, dar ăsta este adevărul crunt. Eu ştiu să folosesc jQuery şi cam atât. Dacă îl dau pe ăla la o parte… Sunt terminat. În schimb, îmi place să cred că ştiu HTML & CSS la un nivel mulţumitor, atât pentru mine cât şi pentru cei cu care lucrez.

În al doilea rând, trebuie să-ţi PLACĂ asta. Un exemplu clasic de „aşa nu” este cam pe orice forum mai mare şi începe cu :

Sal. Am 14 ani shi vreau sa invat programare. Pana akum stateam si ma jukam toata ziua CS dar mam plictisit si am zis sa fac un site mijto pentru clan. pute-ti sa ma ajutati? thx. pupici :*

(greşeli intenţionate, să nu se înţeleagă greşit)

În al treilea rând trebuie să cunoşti bine limba maternă (în cazul nostru româna) şi limba engleză. Din două motive:

  1. Cât timp nu ştii să vorbeşti şi să scrii corect româneşte, nu poţi învăţa o altă limbă. E ceva logic şi de bun simţ
  2. Cam tot ce ţine de programare este legat în mod direct de limba engleză. Că este documentaţie sau că este limbajul în sine, NU poţi face nimic dacă nu ştii engleză la un nivel acceptabil.

Programarea NU se invaţă din cărţi¹. Şi nici din tutoriale video (există tutoriale video de css, php, javascript, ruby, c#, etc). La unele am încercat să mă uit. Unele din curiozitate, altele dintr-o voinţă ciudată de genul „vreau să învăţ Ruby” şi de fiecare dată am tras această concluzie: nu se învaţă din cărţi! Este la fel ca sex-ul: poţi să memorezi toate imaginile din kamasutra, poţi să citeşti toate Playboy & Hustler, dar până nu treci la treabă, pe material real, nu ai de unde să ştii cum e :w00t:

Majoritatea programatorilor pe care îi cunosc au învăţat programare cu diverse resurse online (articole/tutoriale scurte, nu întinse pe sute de pagini din care nu înveţi nimic) şi, cel mai important cu un proiect REAL. Eu m-am trezit peste noapte că trebuie să fac pentru un client front-end-ul ditamai aplicaţiei web. Am început cu prototype/scriptaculous dar, deoarece mi s-a părut prea încurcat şi nu găseam scripturile necesare, am trecut la jQuery.

Dacă nu ai un proiect real, îţi propui unul sau cauţi ceva gata făcut şi te apuci să-l modifici. Eu am învătat HTML salvând pagina de la Yahoo! şi apucându-mă să o editez. Desigur, asta se întâmpla prin 97-98 când abia descoperisem că există şi sisteme de calcul mai performante decât un HC :w00t: Vrei idei de proiecte? Caută un program (fie executabil, fie site) de complexitate simplă spre medie şi încearcă să-l refaci de la zero. Ai reuşit? Caută ceva mai complex.

Nu te satisface metoda asta? Aruncă un ochi pe Rentacoder.com (nu uita să-ţi faci cont în prealabil) şi caută proiecte. Nu contează cu cât sunt plătite! Eşti acolo să înveţi, banii îi laşi pe mai târziu. După ce găseşti un proiect provocator te apuci să-l faci. Nu contează că nu vei face nimic cu respectivul proiect.

Vrei să te apuci de programare web? Fă un CMS! Oh, nu, iar un CMS? E plin internetul de ele. O fi, dar câte sunt făcute de tine? Pentru a face un CMS de la zero ai nevoie de cunoştinţe de tot ce ţine de web: programare server side şi client side, poate un pic design, SEO, usability. Îţi pune la muncă toate simţurile legate de web development :D

Dacă ai avut tangenţe cu programarea până acum, deja poţi sări de bazele oricărui limbaj (în special web) pentru că tipurile de date sunt aproximativ la fel (boolean, integer, array, etc), singurul lucru pe care trebuie să te axezi este sintaxa. Apoi, cu manualul la îndemână poţi face orice. ORICE!

Ok, ai învăţat bazele. Care este următorul pas? FII LA CURENT cu TOT ce mişcă pe web despre acel limbaj de programare. Fii la curent cu noutăţile! Foloseşte un feed reader şi nu rata nimic. Eu am peste 20 site-uri în feed reader despre javascript. Încă vreo 10 despre wordpress şi vreo 15-20 despre html/css.

Cunosc pe cineva care a învăţat programare (web) după un tutorial video. Deşi are zeci de site-uri la activ (şi asta fără să exagerez!) nivelul la care este nu îl depăşeşte cu mult pe cel al unui începător. De ce? Pentru că merge! E corect? Nu neapărat… Citeam mai demult pe un site despre filozofia indienilor: „If it Compiles, Ship it”. Care este legătura? Ghici…

_____________________________________________

¹Programarea nu se învaţă din cărţi. În schimb, te perfecţionezi citind cărţi. Cunosc un programator care, deşi lucrează în domeniu de cel puţin 4-5 ani, a rămas fix la acelaşi nivel ca atunci. Iar asta nu este ceva neapărat bun…

7 Comentarii »

  1. „If it Compiles, Ship it” :)) haios. Frumos post si adevarat.

  2. Complet de acord, dar, poti invata si din carti, doar daca le termini si faci toate exercitiile din ele. Majoritea cartilor de progr. de la Oreilly, Wrox etc. propun un mic proiect, o aplicatie, care se dezvolta capitol dupa capitol, daca scrii tu codul este imposibil sa nu inveti ( ceva :) )
    Primul meu program, era o aplicatie de tweaking de windows 98, scrisa in VisualBasic :)) hmm, ma intreb pe unde am sursele…

  3. Cea mai importanta e vointa. Daca vrea sa invete, va invata. Bine, oamenii astia care se gandesc la head-shot din 2 in 2 minute nu cred ca vor putea invata vreodata ceva, orice.

    Programarea nu se învaţă din cărţi

    sau tutoriale video. Adevarat ! NU poti depasi nivelul de incepator daca ramai la carti / tutoriale, insa te ajuta in ati crea bazele.
    In alta ordine de idei, nu iti recomand sa te stresezi atat pentru “altii”. Iti consumi mult prea mult timp si nervi gandindu-te la problemele altora. Moda “Vreau sa invat programare” va disparea de indata ce invataceii vor realiza ca nu este precum Counter-Strike-ul.
    La fel cum a disparut si moda “Mii de euro din AdSense si domenii parcate”.

  4. In alta ordine de idei, nu iti recomand sa te stresezi atat pentru “altii”. Iti consumi mult prea mult timp si nervi gandindu-te la problemele altora. Moda “Vreau sa invat programare” va disparea de indata ce invataceii vor realiza ca nu este precum Counter-Strike-ul.

    Păi să-ţi spun drept, nici nu prea îmi bat capul. Dar na, le dau şi eu lectură unora :)

  5. 29 September 2008 Bistea Victor a spus:

    Destul de trist ca fostii “canter straici” s-au apucat de design/programare . Maine poimaine vezi ca te duci la un interviu si iti ia un pusti de asta locul :) .

    Anyway nu numai ca nu poti ajunge designer/programator citind carti insa nici macar nu poti deveni cat de cat bun daca nu iti place .

    Pe mine unu ma enerveaza trendul asta de a aparut . Pe mai toate forumurile apar topicuri “vreau sa devin programator” , “am X ( > 10 < 15 ) ani vreau sa invat programare” etc …

    Iar cel mai stresant este ca influenteaza piata , mai toti arunca un template free sau un cms open source , editeaza si gata pretul .

    De unde sa stie clientul diferenta cand ii zici ca ii faci un site de la 0 pe 400 E iar “ion de 14 ani” il face pe 100 cu XHTML/CSS free si Joomla ?

    De ce toata lumea tinde sa se apuce de ceva chiar daca nu ii place … oare sunt asa de importanti banii in viata ?

  6. De ce toata lumea tinde sa se apuce de ceva chiar daca nu ii place … oare sunt asa de importanti banii in viata ?

    Se pare că pentru majoritatea da….
    Şi când îmi aduc că am plecat de la un salariu mai mare decât al părinţilor mei la un loc (iar părinţii mei nu aveau chiar puţin!) am plecat la salariu minim pe economie doar ca să fac ce-mi place (când am renunţat la service-ul auto)…. Oh tempora, oh mores… :w00t:

  7. Frumos articol, felicitări Ionuţ.
    Ar trebui să îl citească fiecare utilizator al PC-ului care consideră că poate învăta programare fără să ştie o boabă de engleză (sau cel puţin să nu ştie mai mult de copy/paste).
    Pentru a învaţa programare în primul rând trebuie să ai:
    - Voinţă.
    - Mult timp liber pentru practică.
    - Logică (Atunci când creezi o aplicaţie trebuie să ştii dinainte ce anume trebuie să iasă, cum să se comporte, etc).

    Ideea în programare este să ştii numele funcţiilor şi unde să găseşti documentaţia despre ele.
    De “ştiut” poate ştii orice prost, scopul este să inţelegi cum funcţionează totul.

    Cât despre indieni ai dreptate, însă şi Românul are modul ăsta de a gandi… de genul “Las-o bă că merge şi aşa”.

Lasă un comentariu

Nu completa urmatorul câmp!

Poţi folosi câteva taguri XHTML: <blockquote> <strong> <a> <em>

Pentru a posta secvenţe de cod, foloseşte
<pre lang="php/css/html/javascript"> CODUL TĂU <pre>