10 greseli de care sa te feresti cand te apuci sa inveti programare
Ca in multe alte domenii ale vietii, in invatarea programarii calculatoarelor principala piedica iti esti tu insuti. Poate ca dai vina pe profesorii pe care i-ai avut in scoala, pe extraordinara dificultate a subiectului sau pe inabilitatea ta genetica de a intelege matematica. Oricare ar fi
motivele tale pentru care te-ai apucat (sau te-ai gandit sa te apuci) de programare si ai renuntat, daca esti ca majoritatea oamenilor cele mai multe dintre aceste motive sunt exterioare tie (sau nu pot fi controlate de tine) si doar cateva (sau deloc) tin de tine (sau sunt sub controlul tau).
Este un exercitiu dificil de sinceritate sa te autoanalizezi si sa ajungi sa elimini cat mai multe dintre motivele din prima categorie. Daca esti foarte sincer cu tine insuti vei ajunge sa constati ca (exceptand cazuri foarte rare) adevaratele piedici care stau intre tu-cel-de-acum si tu-programatorul nu tin de lumea exterioara, ci de lumea ta interioara.
Adevaratele piedici sunt greselile pe care le faci si prin care te autosabotezi.
Iata in continuare zece greseli de care sa te feresti daca te-ai apucat sau vrei sa te apuci sa inveti programare:
1. Esti prea nerabdator
Ai aflat ca e in trend C# si vrei sa incepi direct sa-l inveti. Sau prietenii tai programatori ti-au spus ca Java e miezul si gata — saptamana asta te apuci sa-l inveti. Sau ai o idee foarte tare de joc pentru telefon si vrei ca la sfarsitul lunii sa-l lansezi.
Nu e rau sa ai o motivatie si sa stii incotro sa te indrepti. Dar nu trebuie sa neglijezi pasii marunti necesari pentru a ajunge acolo. Drumul catre tu-programatorul este un drum pietros pe alocuri, asa ca dupa ce ai ridicat privirea ca sa te uiti incotro te indrepti trebuie imediat sa o cobori pentru a vedea pe unde calci.
2. Vrei sa incepi direct cu ultimele limbaje si tehnologii
Bineinteles ca la un moment dat vei ajunge sa scrii romane de succes. Dar n-ar fi indicat ca in clasa 1 sa scrii primul capitol, in clasa a doua capitolul al 2-lea si asa mai departe. Iti dai seama ce ar iesi?
In schimb, trebuie sa inveti bine mai intai literele, apoi sa inveti cuvintele, apoi sa inveti sa le legi in propozitii si fraze si abia in acest punct putem vorbi despre a te apuca sa inveti cum sa scrii un roman.
Nu vreau sa te demoralizez, dar daca pana acum contactele tale cu programarea au fost minime sau inexistente tu esti acum la nivelul la care trebuie sa inveti “literele”. Vom ajunge si la “romane”, dar deocamdata trebuie sa ne concentram pe a invata sa vorbim aceeasi “limba”.
3. Crezi ca nu poti
Ratiunea e supraapreciata. Omul este intr-adevar o fiinta rationala, dar nu stiu daca asta e cu adevarat trasatura lui definitorie. Ai fi surprins sa constati in cat de multe dintre lucrurile pe care le faci ratiunea are doar o pondere extrem de mica.
Credinta iti seteaza un cadru mental care te face sa filtrezi realitatea si sa percepi din ea doar anumite aspecte. Este ca atunci cand vrei sa iti cumperi un telefon nou si te interesezi despre el. Daca iti place foarte tare si vrei sa il iei, vei gasi doar informatii pozitive despre el, iar informatiile negative le vei trece foarte rapid cu vederea. Daca, in schimb, ai ceva dubii despre el, vei reusi sa gasesti o gramada de pareri negative despre acel telefon. Pe baza informatiilor gasite vei lua apoi decizia “rationala” de a il cumpara sau nu.
Da, decizia a fost intr-adevar rationala, dar informatiile care au stat la baza ei au fost selectate pe altfel de criterii.
Daca imi spui ca tu crezi ca nu poti sa inveti programare, mie nu-mi ramane altceva de facut decat sa fiu de acord cu tine. Nu te poti pune cu credinta omului si nu o poti schimba cu niciun fel de argumente rationale.
4. Te porti ca si cum calculatorul te-ar intelege
Daca totusi ai trecut peste alte bariere si te-ai apucat sa programezi, apar alt gen de probleme. Relatia care se formeaza intre tine si calculator este foarte importanta si e important sa nu capete sub nicio forma nuante emotionale.
Calculatorul nu iti este refugiu atunci cand esti suparat, nu iti este “sac de box” pe care sa iti versi nervii si nu iti este nici prieten.
Calculatorul iti este doar o unealta. Si face doar ceea ce ii spui sa faca. La fel cum toporul taie fara discriminare atat lemnul cat si piciorul (daca nu l-ai manuit cum trebuie). Diferenta dintre topor si calculator este ca pe primul il manuiesti cu forta bratelor, iar pe al doilea cu forta mintii, prin instructiunile pe care i le dai sa le execute. E vital sa ii dai instructiuni clare si lipsite de orice fel de ambiguitati.
5. Te lasi intimidat de matematica
Nici nu te-ai apucat sa inveti bine programare si deja ai dat de coordonate carteziene, de operatii aritmetice si logice, de functii si de matrici. Si automat in mintea ta se nasc ganduri care iti spun ca n-ai cum sa inveti vreodata programare.
Nici nu iti trece prin minte posibilitatea de a putea invata vreodata acele notiuni de matematica. Ai mai trecut prin asta si s-a dovedit a fi un esec total. Poate ca inca mai ai cosmaruri legate de lucrarile de verificare pe care le dadeai la orele de matematica.
Veste buna e ca matematica e pentru majoritatea oamenilor doar un Bau-bau imens care le-a speriat copilaria si a ajuns sa ii terorizeze si acum. Se poate scapa de el prin “terapie”. Recomand in primul rand o atitudine ludica orientata spre intelegerea practica, palpabila, a notiunilor “infricosatoare” din matematica. Deci ridica-te din pat, ia-ti “lanterna” si du-te sa-ti verifici “dulapul” — asa te vei convinge ca nu e niciun “Bau-bau” acolo.
6. Subestimezi rolul antrenarii gandirii
Pentru a putea sa reusesti in domeniul programarii ai nevoie de o gandire buna. Nu ma refer neaparat la acel gen de gandire care ti-ar asigura “10 pe linie” in scoala. Dar ai nevoie de o memorie buna, de abilitatea de a trage conluzii din fapte, de flexibilitate si de viteza in gandire, de abilitatea de a-ti mentine atentia focusata, de abilitatea de a rezolva probleme si de a vizualiza mental notiuni abstracte.
Poate ca te intimidezi doar citind insiruirea de mai sus, dar toate aceste abilitati se pot dobandi si intari prin exercitiu sustinut.
7. Crezi ca poti programa fara sa stii algoritmica
Te-ai uitat la filme si ai vazut hackeri care apasa in disperare pe niste taste si imediat pe ecran curg rauri de coduri si BUM! — securitatea sistemului e sparta si personajele sunt salvate. Deci nu ma mira ca iti inchipui ca poti construi programe in viteza apasand coduri, combinatii, chei si mai stiu eu ce.
Programarea nu e cum ai juca CounterStrike, ci e cum ai juca Go. Adica nu iti trebuie viteza de reactie, ci iti trebuie o intelegere in adancime a lucrurilor, o strategie bine pusa la punct si o tactica adecvata obiectivelor stragetice.
Am vazut destui oameni frustrati de faptul ca trebuie sa invete modalitati de organizare a datelor in structuri de date si sa invete algoritmi de cautari, sortari si prelucari. Adica tu vrei doar sa inveti programare, nu toate chestiile astea, nu? Ideea e ca “chestiile” alea reprezinta de fapt programarea adevarata. Pentru a juca un rol de hacker intr-un film poti si fara ele, dar pentru a fi un programator in lumea reala nu prea.
8. Crezi prea mult in puterea mintii si neglijezi exercitiul practic
Poate ca greselile “lumesti” de pana aici nu te-au atins. Poate ca tu esti un om “superior” care are o minte puternica si invata foarte repede. Poate deja ai citit carti intregi de programare. Poate ca daca te intreb daca stii cutare limbaj de programare imi spui ca da, ai citit trei carti despre el.
Dar poate ca daca te intreb in ce mediu de programare lucrezi, ce exercitii ai facut sau ce aplicatii de test ai construit o sa ma privesti ca pe un “muritor de rand”.
Din pacate (pentru tine) programarea nu se gaseste pe muntele inalt din care privesti tu lumea, ci in campia asta unde dam cu sapa, facem miscare, ne distram si ne bucuram de roade.
9. Nu stii sa o abordezi in joaca
Degeaba n-ai facut niciuna dintre greselile de mai sus daca esti mereu trist sau foarte incordat. Nici macar nu conteaza daca ajungi la aceeasi destinatie ca si ceilalti. Si n-ar conta nici daca ai ajunge la destinatie mai repede decat ei.
Conteaza sa te bucuri de fiecare pas, de fiecare dificultate, de fiecare depasire a vreunei dificultati, de fiecare exercitiu pe care l-ai rezolvat si de fiecare exercitiu pe care n-ai reusit inca sa-l rezolvi, de tot ce ai invatat pana acum si de tot ce ti-a mai ramas sa inveti.
Cand ai de rezolvat o problema de programare, incearca s-o rezolvi astfel incat rezolvarea ta (corecta, dar jucausa) sa-i produca indignare unui profesor imaginar batran, acru si incruntat.
10. Nu iti dai voie sa gresesti suficient
Daca esti ca majoritatea oamenilor, inseamna ca esti un om care greseste doar din greseala. Nu gresesti niciodata intentionat.
E bine, nu zic nu. N-ar fi deloc bine sa gresesti cu rea intentie. Dar n-ar strica sa te avanti in actiune chiar daca ratiunea ta iti spune ca n-ai suficienta experienta si ca vei gresi. Genul asta de greseala e singura cale catre a invata.
Asa ai facut si cand ai invatat sa mergi sau sa vorbesti. Ai cazut si te-ai ridicat. Ai gresit si ai perseverat. Ceea ce esti acum e o dovada ca strategia asta de invatare a functionat. Deci e testata. Nu ezita s-o folosesti in continuare.
Gata cele 10 greseli. Dar cu siguranta nu sunt doar zece. (Zece nu e un numar magic, ci e doar un numar care poate reprezenta orice numar scris in propria baza de numeratie.) Astept sa mi-o spui tu pe a unsprezecea. Si pe a doisprezecea. Intr-un comentariu. Mai jos :-).
Alatura-te celor peste 2000 de oameni din armata noastra de creiere cu muschi si vei primi testul care iti va spune daca ai sau nu minte de programator:
Cu drag,