Înainte de a învăța să programezi, gândește-te ce vrei să programezi

Programarea înseamnă în mare să construiești lucruri, iar calea este mult mai clară atunci când ai o idee despre destinația finală. Dacă scopul tău este „să înveți să programezi”, fără a avea o idee clară despre tipurile de programe pe care le vei scrie și cum îți vor face viața mai bună, probabil va fi un exercițiu frustrant.

Îmi este puțin rușine să recunosc că o parte din motivația mea pentru studierea informaticii a fost că am dorit să demonstrez că sunt inteligentă și am vrut să fiu în stare să obțin joburi de Persoane Inteligente. De asemenea, mi-a plăcut să mă gândesc la matematică și teorie (această carte m-a uimit când eram la o vârstă impresionabilă) și programarea părea potrivită. Totuși, nu a fost suficient pentru a mă susține pentru mult timp, până când am găsit feluri de a conecta tehnologia cu lucrurile care îmi plăceau cu adevărat, precum muzica și literatura.

Așadar, ce vrei să codezi? Site-uri web? Jocuri? Aplicații pentru iPhone? Un startup care te face bogat? Artă interactivă? Vrei să fii capabil să-ți impresionezi șeful sau să automatizezi o sarcină plictisitoare pentru a putea să-ți petreci mai mult timp uitându-te la imagini cu vidre? Poate că pur și simplu vrei să te prezinte ca fiind mai bun de angajat, să dea bine în CV-ul tău sau să-ți îndeplinești cerințele programului tău educațional. Toate acestea sunt scopuri care merită. Asigură-te că știi care este al tău și studiază în mod corespunzător.

Programarea nu are nimic mistic

Programarea este o abilitate ca oricare alta. La fel ca și pentru învățarea unei limbi, există o gramatică și un vocabular care trebuie dobândite. Ca în matematică, există procese de lucru pentru tipuri specifice de probleme. Precum în tot felul de meșteșuguri și creații de artă, există tehnici, instrumente și bune practici pe care oamenii le-au dezvoltat de-a lungul timpului, specializate în funcție de diferite sarcini, pe care ești liber să le folosești, să le modifici sau la care să renunți.

Tipul ăsta (un tip foarte deștept! A cărui alte scrieri îmi plac și sunt frecvent de acord cu el!) postulează faptul că există o linie clară între persoanele cu o Minte Adevărată a Programatorului și oricine altcineva, care duce lipsă de capacitatea intelectuală necesară pentru a reuși în acest domeniu. Acea linie clară constă, după el, în indicatori și recursiune (există primeri aici și aici pentru curioși).

Am învățat despre indicatori și recursiune la școală și, când am înțeles, a fost ca un șoc încântător pentru creier — felul acela de plăcere intelectuală care m-a determinat să studiez informatica de la început. Dar, pe lângă exercițiile din clasă, numărul de dăți în care a trebuit să fiu familiară cu vreunul dintre aceste concepte pentru a termina lucrurile a fost relativ mic. Și când i-am ajutat pe ceilalți să învețe, mereu am văzut cum oamenii încheie proiecte interesante și satisfăcătoare fără a știi nimic despre niciunul dintre ele.

Nu are niciun rost să fii intimidat sau să te întrebi dacă ești Suficient de Inteligent. Desigur, cu cât mai complexă și mai ezoterică este o sarcină, cu atât nivelul de stăpânire a cunoștințelor trebuie să fie mai mare pentru a o duce la bun sfârșit. Însă acest lucru este adevărat pentru orice alt domeniu. Șansele sunt că nu trebuie să fii un geniu în înțelegerea recursivității pentru a face lucrurile pe care dorești să le faci, doar dacă nu plănuiești să-ți trăiești toată viața după propriul cod.

Niciodată nu funcționează din prima

Și probabil nu va funcționa nici a doua, nici a treia dată

Când începi să programezi pentru prima dată, te confrunți foarte rapid cu următoarea situație: crezi că ai setat totul cum trebuie, ai verificat și reverificat, dar tot nu funcționează. Nu ai nicio idee de unde să începi să repari, iar mesajul de eroare (asta dacă ești destul de norocos să ai parte de unul) ar putea foarte bine să spună „du-te naibii”. Ai putea fi tentat să renunți în acest punct, gândindu-te că nu-ți vei da seama niciodată de problemă, că nu ești făcut pentru asta. Am avut același sentiment prima dată când am încercat să scriu un program în C++, să-l rulez, iar pentru deranjul meu am primit doar cuvintele „eroare de segmentare”.

Însă această situație este atât de comună pentru programatorii cu toate nivelurile de experiență, încât nu spune absolut nimic despre inteligența lor, cunoștințele lor tehnice sau potrivirea lor pentru viața de programator. Ți se va întâmpla ca începător, și ți se va întâmpla și ca programator experimentat. Principala deosebire va consta în modul în care vei reacționa la această situație.

Am descoperit că o mare diferență între programatorii începători și cei experimentați constă în încredere: încrederea că totul merge rău din cauza unui motiv logic și care poate fi descoperit, că problemele se pot rezolva, că există o cale de a îndeplini sarcina.  Calea de la „nu funcționează” la „funcționează” poate nu e evidentă, dar cu răbdare, de obicei o poți descoperi.

Cineva îți va spune mereu că procedezi greșit

Acoladele ar trebui să vină pe rândul următor. Acoladele ar trebui să vină pe același rând. Folosește tab-uri pentru indentare. Dar tab-urile nu sunt bune. Ar trebui să folosești proceduri stocate, dar de fapt nu ar trebui să le folosești. Ar trebui să-ți comentezi mereu codul. Dar un cod bun nu are nevoie de comentarii.

Aproape mereu există multe abordări diferite pentru o anumită problemă, și nu doar o singură „modalitate corectă”. Mulți programatori tind să devină foarte buni la apărarea propriei lor modalități preferate, însă asta nu înseamnă că este Singura Cale Corectă. Purtarea unei conversații în contradictoriu cu aceste persoane care îmi spuneau că greșesc și încercarea de a-mi da seama dacă aveau dreptate a reprezentat unul dintre cele mai stresante aspecte de la începutul carierei mele.

Dacă programezi într-o echipă cu alți oameni, atunci cu siguranță cineva va avea o problemă cu ceva din ceea ce faci. Uneori chiar au dreptate și merită mereu să cercetezi pentru a vedea dacă, de fapt, chiar Procedezi Greșit.  Dar, alteori, vor vorbi prostii sau vor reactiva o dispută antică și fără sens unde ar fi cel mai bine doar să urmezi un ghid de stil și să uiți de asta.

Pe de altă parte, dacă ești tipul de persoană căreia îi plac disputele antice, dar fără rost (tocilari ai gramaticii, la voi mă uit), atunci ai venit în locul potrivit.

Cineva îți va spune mereu că nu ești un programator adevărat

HTML-ul nu este programare adevărată. Dacă nu folosești vi, nu ești prea serios. Programatorii adevărați cunosc limbajul C. Programatorii adevărați nu folosesc Windows. Unele persoane nu vor putea învăța programarea niciodată. Nu ar trebui să înveți să programezi. Tu nu ești un programator de calculatoare (dar eu sunt).

„Programarea” înseamnă o mulțime de lucruri diferite pentru diferite persoane și arată diferită acum față de odinioară. Și e destul de amuzant că instrumentele, pachetele și framework-urile care facilitează munca mai rapidă și mai ușoară a începătorilor sau chiar și a celor mai pregătiți dezvoltatori pentru a construi lucruri sunt cel mai probabil catalogate drept „neadecvate pentru ADEVĂRAȚII programatori”.  (Vezi: „Întoarcerea programatorului adevărat”)

În spatele acestora se ascunde teama că dacă „oricine” se poate considera programator, atunci titlul nu mai are rost. Dar, consider că această pază a porții de intrare este distructivă.

Folosește instrumente care facilitează construirea lucrurile pe care dorești să le realizezi. Dacă asta înseamnă că jocul tău a fost creat în Stencyl sau GameMaker și nu a fost scris de la zero, este bine și așa. Dacă prima ta incursiune în programare este lucrul cu HTML sau cu macro-urile Excel, este în regulă. Lucrează cu ceva pe care simți că îl poți folosi pentru mult timp.

Pe măsură ce te simți mai în largul tău, în mod normal vei începe să consideri că aceste instrumente mai mult te limitează decât te ajută și vei căuta altele mai puternice. Dar, de cele mai multe ori, puține persoane se vor uita vreodată la codul tău sau vor întreba ce ai folosit — contează ce ai făcut cu acestea.

Îngrijorarea despre „credibilitatea de geek” te va toca mărunt

Vezi mai sus. Obișnuiam să mă îngrijorez mult, mai ales la școală, dacă mă identificam ca „a nu fi un geek adevărat” (și, prin urmare, mai puțin demnă de includere în comunitățile de tehnologie) prin haine, aparență, prezentare, alegerea materialelor de citit și chiar personalizarea software-urilor mele. Era o pierdere teribilă de energie și am devenit mult mai funcțională după ce am luat decizia de a renunța la asta.

Trebuie să internalizezi asta: abilitatea ta de a deveni bun la programare nu are nicio legătură cu cât de bine te potrivești cu diferite subculturi de geek. Aceasta se dublează dacă simți în adâncul tău că niciodată nu te vei integra prea bine. Energia pe care o consumi pentru a-ți dovedi asta ar trebui, în schimb, canalizată către realizarea de lucruri. Iar dacă ești un geek indiscutabil, din cap până-n picioare, reține asta pentru când vei evalua nivelul altcuiva. Ar putea să nu însemne ceea ce crezi tu.

Să te ții de ceva e mai important decât metoda

Există o mulțime de articole despre modalități „corecte” și „bune” pentru învățarea programării și există o sumedenie de abordări posibile. Poți învăța conceptele dintr-o carte sau prin efectuarea unor exerciții interactive sau prin depanarea a ceea ce alții au scris. Și, desigur, există o mulțime de limbaje pe care le poți alege pentru a le învăța mai întâi, fiecare având proprii susținători.

O critică mai comună legată de programele și atelierele de „învață-te să programezi” este că vei parcurge ușor materialele pentru începători și apoi te vei împotmoli când lucrurile vor deveni rapid mult mai dificile. Știi cum să afișezi câteva rânduri de text pe o pagină, dar nu ai nicio idee de cum să începi să lucrezi la un proiect „adevărat” și folositor. Vei simți că doar ai urmărit instrucțiunile, fără a înțelege cu adevărat, și vei da vina pe materialele de învățat.

Când ajungi la această etapă, majoritatea tutorialelor și resurselor online disponibile sunt mai puțin folositoare deoarece presupun că ești deja un programator experimentat și sigur pe sine. Dificultatea este agravată și de faptul că „nu știi ce nu știi”. Chiar și încercarea de a-ți dai seama ce trebuie să înveți mai departe e un puzzle în sine.

Te vei lovi de acest obstacol indiferent ce program „de învățare a codării” urmezi, iar singura modalitate de a trece mai departe este perseverența. Aceasta înseamnă că vei continua să încerci lucruri noi, să acumulezi mai multe informații și să-ți dai seama, piesă cu piesă, cum să-ți construiești proiectul. Este mai mult decât probabil să ai succes la sfârșit dacă ai o idee limpede despre motivul pentru care vrei de fapt să înveți programarea.

Dacă pui cărămizi una peste cealaltă, ar putea dura mult timp, dar, în cele din urmă, vei avea un zid. Aici este utilă încrederea pe care am menționat-o mai înainte. Dacă crezi că odată cu timp și răbdare poți înțelege programarea, atunci cu siguranță așa va fi.

Poți citi articolul original în limba engleză aici.