Cred cu adevărat că oricine poate învăța să codeze.

La sfârșitul zilei, programarea este o abilitate, iar dobândirea unei abilități este deschisă oricui.

Uneori, a te pricepe la ceva pare a fi un proces magic. Dar, în realitate, sunt pași clari de urmat.

Anders Ericsson, profesor la Florida State University, este un cercetător de frunte al artiștilor experți. El studiază procesul de dobândire a unei abilități și ceea ce este necesar pentru a deveni expert.

Prin anii săi de cercetare, el concluzionează că ceea ce separă performanții de top de toți ceilalți este cantitatea de timp petrecut într-un lucru pe care îl numește Practică deliberată.

El crede că „tipul corect de practică pe o perioadă suficientă de timp duce la îmbunătățire. Nimic altceva.”

Cred că cadrul Deliberate Practice dezvoltat de Dr. Ericsson poate fi folosit pentru a ajuta oamenii să învețe să programeze.

Implementarea practicii deliberate m-a ajutat în viața mea personală și cred că vă poate ajuta să învățați programarea mai eficient.

Mai jos vă voi explica fiecare componentă a Deliberate Practice și cum puteți încorpora Deliberate Practice în călătoria dvs. de codificare.

Deconstrucție

Primul pas al practicii deliberate este de a deconstrui și analiza abilitățile dorite.

Deconstruirea necesită o viziune de pasăre asupra obiectivului dvs. general și descompunerea acestuia în componente mici de gestionat. Încercați să găsiți cea mai eficientă cale de unde vă aflați până unde doriți să mergeți.

Există două moduri în care poți face deconstruirea unei abilități. Puteți fie să descompuneți componentele, fie să învățați de la cineva care a dobândit deja abilitatea.

Pentru cineva care învață să codeze, aș recomanda să profitați de cunoștințele altor dezvoltatori în loc să reinventați roata.

Majoritatea materialului de acolo (cum ar fi Routech) a fost creat de oameni care au depus eforturi în deconstruirea procesului de învățare și au repetat pe material.

Puteți să le folosiți expertiza și efortul atunci când căutați propria cale înainte.

Răsfoiți câteva site-uri web de codificare diferite sau citiți Cuprinsul diferitelor cărți de codificare (puteți previzualiza cărțile pe Amazon gratuit). De asemenea, citiți câteva bloguri sau întrebați un prieten dezvoltator pentru părerea lor.

După un timp, veți avea o idee despre cea mai bună cale înainte.

De asemenea, asigurați-vă că interesele dvs. au vot. Este greu să înveți repede dacă nu te interesează materialul.

Cea mai eficientă cale de învățare a codării este la intersecția cu ceea ce recomandă experții și cu ceea ce vă interesează.

Nu vă obsedați să deconstruiți perfect calea spre a deveni programator. Nu veți găsi niciodată ruta perfect eficientă.

Este mai bine să faceți puțină cercetare, să începeți de undeva și să vă reajustați în timp ce mergeți.

Intindeți obiectivele

Următoarea componentă cheie a Practicii deliberate este crearea de obiective întinse.

Un obiectiv de întindere este o sarcină mică care te împinge în afara abilităților actuale și te mută de-a lungul căii de învățare deconstruite.

Crearea obiectivelor de întindere nu înseamnă atât de mult să ai o listă imensă de sarcini pe care trebuie să le îndeplinești. Partea cea mai importantă este configurarea învățării dvs. într-un mod care depășește limitele abilităților dvs. de programare.

Noi, oamenii, favorizăm în mod natural lucrurile ușoare și automate.

Cu toate acestea, dacă ne împingem în afara zonelor noastre de confort suficient de mult timp, corpul nostru va încerca să normalizeze noul comportament și să-l facă un obicei.

Obiectivul unui obiectiv de întindere este să te plasezi în mod conștient în afara zonei tale de confort și să aștepți ca corpul tău să se adapteze.

Trucul pentru a crea un obiectiv de întindere este de a face sarcina dificilă, dar totuși realizabilă.

Dacă obiectivul este prea dificil, atunci te vei pierde și nu vei ști cum să mergi înainte. Dacă obiectivul este prea ușor, atunci nu vă veți dezvolta cât de repede puteți (sau deloc).

Va dura ceva timp pentru a găsi locul dulce.

La început, un obiectiv de întindere ar putea fi pur și simplu o lecție despre Routech. Odată cu trecerea timpului, un obiectiv întins ar putea fi implementarea unui buton pe site-ul portofoliului dvs. fără a utiliza Google.

Lucrul cheie de reținut este că, dacă o sarcină este ușoară, probabil că nu vă împingeți suficient.

Concentrare și atenție

Focusul este o componentă fundamentală a memoriei și dobândirii abilităților.

Când încercați să codificați informații noi în creier, puterea codificării este direct legată de intensitatea focalizării.

Când atenția dvs. este slabă, noile informații vor fi mai puțin lipicioase, ceea ce va duce la o învățare mai lentă și la mai mult timp de studiu.

O trăsătură comună în rândul persoanelor care învață programarea rapid este că au capacitatea de a se concentra intens asupra oricărei sarcini pe care o îndeplinesc pentru perioade lungi de timp.

Gândiți-vă la modul în care practică orice interpret de talie mondială. Probabil că nu își verifică telefonul la fiecare 5 minute. Cel mai probabil sunt blocați mental în orice sarcină pe care o îndeplinesc.

A avea o concentrare bună înseamnă eliminarea tuturor distragerilor nedorite.

Există două tipuri de distrageri, interne și externe. Scăderea distragerilor externe înseamnă închiderea telefonului, deplasarea într-o cameră liniștită și / sau plasarea unui blocator de site pe computer.

Îmblânzirea distragerilor interne înseamnă a nu lăsa gândurile interne să-ți consume timpul. Acest lucru se poate face practicând meditația sau având un caiet în care să scrieți orice aveți în minte.

Cheia este să construiești un mediu lipsit de distragere și să ai un plan atunci când apare inevitabil o distragere. Probabil că sunteți deja foarte conștienți de toate lucrurile care vă distrag atenția.

(Dacă doriți mai multe informații despre locul în care vă trece timpul, vă recomand să folosiți ceva de genul RescueTime.)

Îmbunătățirea concentrării este un proces. La început, încearcă să fii pe deplin concentrat câteva minute. Odată cu trecerea timpului, formați încet durata codării concentrate.

Când vă exersați în mod deliberat abilitățile de programare, este mai bine să fiți 100% concentrat pentru o perioadă mai scurtă de timp decât 70% concentrat pentru o perioadă mai lungă de timp.

Este posibil să ne simțim imposibil să menținem concentrarea, deoarece trăim într-o lume care încearcă în mod constant să ne atragă atenția. Cu toate acestea, trebuie să găsiți o cale.

A executa

Singura modalitate de a te îmbunătăți la ceva este să o faci de fapt.

Oamenii confundă adesea dobândirea cunoștințelor cu dobândirea unei abilități. Cunoașterea este utilă, dar nu este un substitut pentru încercarea de fapt a ceva.

Cunoașterea, în multe feluri, îți oferă un fals sentiment de progres. Puteți urmări 100 de tutoriale de codare și vă simțiți capabili să vă codificați propriul site web. Cu toate acestea, odată ce ieși și încerci să-ți construiești unul, ai putea ajunge să cazi pe față.

Este ca diferența dintre a viziona baseball și a juca baseball. Vizionarea te ajută să joci, dar nu poți deveni un jucător de baseball bun doar urmărind echipa ta de baseball profesionistă preferată.

Dobândirea abilităților necesită să ieșiți în lume și să vă testați cunoștințele împotriva realității.

Nu este întotdeauna ușor. Practicarea a ceva nou îți va ataca ego-ul și te va face să te simți incompetent. Veți dori să renunțați sau să vă întoarceți la ceva care se simte mai confortabil.

Din păcate, este imposibil să înveți ceva nou fără să arăți incompetent (cel puțin la început). S-ar putea la fel de bine să te obișnuiești cu el.

După cum am vorbit mai sus, învățarea nu se întâmplă în zona ta de confort. Nu vă mirați dacă începeți să vă simțiți inconfortabil în timp ce codificați. Disconfortul este de obicei un semn că te îndrepți în direcția corectă.

Asigurați-vă că vă testați în mod constant cunoștințele împotriva lumii reale. Nu vă mulțumiți să citiți tutoriale sau să vizionați videoclipuri. Puneți degetele pe tastatură și scrieți un cod pe care îl puteți rula.

Părere

Este imposibil să te îmbunătățești la orice fără feedback.

Imaginați-vă că încercați să vă îmbunătățiți jocul de golf, dar nu puteți vedea unde aterizează mingea. Nu ar exista nicio modalitate de a ști dacă vă îmbunătățiți.

Feedback-ul este modul în care realitatea comunică cu tine. Vă permite să vedeți decalajul dintre ceea ce credeți că știți și ceea ce știți de fapt.

Există două modalități de a obține feedback. O puteți obține prin auto-studiu sau altcineva o poate furniza.

Auto-studiu necesită să comparați ceea ce ați încercat cu soluția corectă postată de altcineva.

Acest lucru se întâmplă în mod natural atunci când accesați site-uri web precum Stack Overflow sau GitHub pentru a găsi un răspuns la o problemă. Feedback-ul se întâmplă atunci când descoperiți decalajul dintre răspunsul dvs. și răspunsul corect.

Când accesați site-uri web precum Stack Overflow, asigurați-vă că petreceți timp înțelegând de ce funcționează o bucată de cod și cum este diferit. Copierea și lipirea fără a înțelege diferența vă vor pierde feedback-ul important care vă va ajuta să vă îmbunătățiți și să vă actualizați abilitățile.

Puteți, de asemenea, să citiți codul cuiva de pe Github și să-l comparați cu propriul cod (sau să-l comparați cu înțelegerea dvs. actuală despre cum să codificați).

Ben Franklin a folosit o strategie similară când își îmbunătățea abilitățile de scriere.

Ar citi de câteva ori un articol din ziarul său preferat. Apoi, el ar deconstrui tehnicile pe care autorul le-a folosit. Ar pune articolul deoparte și va încerca să-l reproducă într-un mod similar. După ce și-a scris versiunea, va compara rezultatele și își va analiza execuția.

Cealaltă modalitate de a obține feedback este lăsând un dezvoltator mai experimentat să vadă și să comenteze codul dvs.

A avea o pereche nouă de ochi vă poate ajuta să rezolvați problemele individuale și, de asemenea, vă poate ajuta să reveniți pe drumul cel bun dacă vă îndreptați în direcția greșită.

Ar putea fi înfricoșător ca altcineva să se uite la codul dvs. (sau chiar să purtați o conversație cu un dezvoltator experimentat). Niciunul dintre noi nu vrea să pară prost. Dacă îți poți depăși frica, obținerea de feedback de la alții poate avea un impact mare.

Unul dintre cele mai mari regrete ale mele când mă învățam să codez a fost că nu am primit suficient feedback. Codul meu era o mizerie și pierdeam mult timp pe lucruri neimportante.

Obținerea de feedback de la un dezvoltator mai experimentat m-ar fi economisit mult timp și luptă. Ar fi văzut instantaneu ce făceam greșit și m-ar fi pus pe o cale mai dreaptă.

Gândiți-vă la feedback-ul unui dezvoltator experimentat ca la o busolă. Nu vă vor duce fizic la destinație, dar se vor asigura că mergeți în direcția corectă.

Regla

Feedback-ul nu are valoare dacă nu îl utilizați de fapt.

A învăța să codezi este ca și cum ai muta printr-o cameră întunecată. Începi să mergi, te dai cu niște mobilier, îți reglezi traseul și încerci din nou.

Pe baza feedback-ului pe care îl primiți, este important să vă luați ceva timp să vă gândiți la decalajul dintre ceea ce ați vrut să faceți și ceea ce s-a întâmplat de fapt. Pe baza acestui decalaj, efectuați ajustări pe măsură ce avansați.

Dacă nu faceți ajustări, nu vă veți îmbunătăți.

Va trebui să ajustați anumite linii la cod pentru ca programul dvs. să funcționeze. De asemenea, uneori va trebui să vă ajustați abordarea la un nivel macro.

Instinctul nostru inițial atunci când nu progresăm este să încercăm mai mult. Acest lucru este eficient până la un punct.

Dacă nu obțineți rezultatele dorite, încercați să atacați lucrurile din unghiuri diferite. S-ar putea să fie nevoie de unele experimentări pentru a o face corect.

Repeta

Efectuarea unei sarcini o dată nu este suficientă.

Mintea noastră nu stochează informații precum computerele. Avem tendința de a uita informații noi la fel de repede pe cât le învățăm.

Învățarea a ceva nou necesită repetarea unei sarcini de mai multe ori înainte ca aceasta să rămână.

Repetarea este un semnal către creierul nostru că o nouă informație sau un nou comportament este valoroasă și nu trebuie uitată.

Etapa de repetare a dobândirii abilităților nu este ușoară. Nu ar trebui să fie. Încercați în mod conștient să vă reprogramați creierul și corpul vostru va dori în mod natural să facă ceea ce este familiar.

Va trebui să aplicați în mod constant eforturi pentru a învăța să deveniți competenți.

Singurul mod sigur de a eșua la învățarea codării este renunțarea. Dacă nu renunțați și păstrați consistența, veți putea repeta materialul de codare important și totul va începe în cele din urmă să aibă sens.

Indiferent cât de dur se simte, asigurați-vă că dezvoltați un obicei de studiu consistent. Este aproape imposibil să înveți codificarea fără una.

Pentru o scufundare profundă în modul în care poți fi mai consecvent, am scris un articol despre tehnicile specifice pe care le poți folosi.

Concluzie

Procesul de dobândire a abilităților este simplu, dar nu este ușor. Ești cel mai mare dușman al tău în acest proces.

Obiceiurile vechi sunt greu de rupt. Fiecare nouă abilitate este propria luptă de câștigat.

Rămâneți concentrat, asigurați-vă că vă împingeți, ajustați în funcție de feedback, clătiți și repetați.

Dacă urmați cadrul Deliberate Practice, cred că vă veți surprinde cu viteza pe care o veți prelua de programare.

Mult noroc.

Dacă vrei să afli despre alte informații pe care le-am învățat pe parcurs, urmează-mi contul Zero la Programator pe Twitter. Scopul contului este de a vă ajuta să învățați programarea mai eficient.