Iată de ce a învăța cum să codăm este atât de greu (și ce să faceți în acest sens)

În toamna anului 2014, am început călătoria lungă și dureroasă către învățarea dezvoltării web.

De vreme ce aveam o slujbă de zi, știam că acest proces îmi va consuma nopțile și weekendurile. Și, de vreme ce nu îmi mai învățasem niciodată abilități tehnice online, eram conștient că există o mulțime de provocări de neimaginat care le-ar spate capetele urâte pe parcurs.

Dar iată ce nu am putut anticipa: după ce am folosit sute de tutoriale scrise, video și interactive, am constatat că metodele de predare a subiectelor tehnice online erau incredibil de… primitive.

Situația tutorialelor de codare online

Există mii de tutoriale scrise pe an pe HTML, CSS și JavaScript de către dezvoltatori cu zeci de mii de ani de experiență colectivă. Ați crede că va exista un ecosistem bogat, cu o varietate de metode de predare și instrumente interactive.

Nu este cazul. În schimb, tutorialele de codare reîncumpărează pur și simplu tehnicile de predare din secolul XX cu tehnologia secolului XXI.

Tutoriale video imită o lecție de clasă cu o tablă albă. Sau un DVD de instrucțiune pe care îl puteți cumpăra de la un infomercial.

Tutoriale scrise acționează ca capitole de cărți.

Tutoriale interactive acționează ca compilatoare care au fost utilizate în colegii încă din anii 80.

După ce am petrecut noapte după noapte învățând subiecte noi și încercându-le în proiectele de testare, am crezut că trebuie să fac ceva greșit. Așa că am început să-i întreb pe prieteni ce credeau că ar trebui să fac altfel.

Maiorii de informatică educați la facultate m-au întrebat: „Ați încercat să citiți documentele de la W3 Schools sau Mozilla Developer Network?”

Alți oameni antreprenori mi-au spus: „Renunță acum. Nu am putut să-l învăț când am încercat. ”

Dezvoltatorii web autodidacte m-au întrebat: „De ce vorbești cu mine? Ai mai rămas sute de ore dacă vrei să înveți dezvoltarea web. ”

Citirea documentației. Renunță. Puneți în mai multe ore. Acestea au fost opțiunile mele.

Am continuat să pun ore în șir până am putut construi o aplicație web full-stack. A durat un an întreg (cel puțin). Aceste ore au fost petrecute pentru a revedea, a citi și a re-făcând tutoriale până am simțit că am „înțeles”, apoi încercând conceptul într-un proiect.

Mă simțeam de parcă nu progresasem cu adevărat din obiceiurile dureroase de studiu pe care trebuia să le folosesc la facultate. A fost șocant faptul că mii de alți dezvoltatori web începători ar trebui să finalizeze această călătorie.

Așadar, mi-am propus să aflu de ce aceste tutoriale tehnice au dus la ore de confuzie. Am citit cărți și lucrări în domeniul psihologiei cognitive, m-am uitat la tactici de explicații populare și am scris și propria mea serie de tutoriale de codare.

Iată cele 5 motive pentru care un Internet plin de tutoriale de codare încă nu a putut oferi lecții satisfăcătoare (și cum să procedăm mai bine).

Greșeala nr. 1: predarea prin afișarea fragmentelor de cod

Să comparăm codificarea cu gătitul. Ambele necesită să urmați cu atenție un set de instrucțiuni dacă doriți o ieșire rezonabilă. Ambele au reguli dure, fără loc de eroare.

Din anumite motive, creatorii de tutorial le place să pună rapid pe ecran un fragment de cod după ce au descris pentru prima dată un concept. Acestea vor oferi o explicație linie cu linie a codului, ca și cum ar fi suficient.

Nu există asocieri clare între linii diferite în fragmentul de cod de mai sus, cu excepția cazului în care sunteți un dezvoltator Node.js intermediar și știți să scrieți un server HTTP.

Dacă aș încerca să vă învăț cum să preparați un sos, acest lucru este echivalent cu a vă arăta o imagine a fiecărei componente a sosului în forma preparată, fără a vă arăta cum puteți ajunge. Ai putea să-ți dai seama, dar va fi nevoie de multe încercări și erori.

Este acest tofu tăiat? Ceapa taiata? Fenicul tăiat? Cât de mari sunt bucățile? Ce instrument ar trebui să folosesc pentru a le tăia?

Desigur, dacă vrei să devii un bucătar priceput, nu vrei să înveți cum să tai ceapa încă o dată. Vreau să te învăț o dată sau de două ori și să-ți permit să-ți amintești independent la fiecare pas mic de la ceapă plină la tăiat cubulețe.

Acest lucru este la fel de aproape ca ajungem la o clasă de preparare

Dacă există un proces în mai multe etape pentru a învăța cum să creezi un server HTTP (precum exemplul de mai sus), fragmentul de cod ar trebui să fie ultima parte. Nu ar trebui să fie primul (sau întregul) proces. Și întregul context trebuie învățat împreună.

Acest lucru se datorează faptului că creierul dvs. stochează amintiri pe termen lung în hipocamp prin intermediul asociațiilor. Hipocampul are nevoie de context pentru a stoca un nou concept cu concepte conexe. Context, în acest caz, nu sunt liniile de cod adiacente cu explicații individuale.

În schimb, noii dezvoltatori web ar avea o șansă mult mai bună de a stoca conceptul de server HTTP prin asocierea acestuia cu ceva ce înțeleg deja. Creierul tău trebuie să creeze o rețea bogată de conexiuni pentru a stoca cu succes noi concepte provocatoare.

Iată câteva modalități prin care creierul tău ar putea înțelege mai bine componentele unui server HTTP:

  1. O analogie care explică diferitele părți ale blocului de cod și folosește relațiile existente pentru a explica aceste noi relații.
  2. O versiune interactivă a fragmentului de cod care arată starea live a aplicației. Când schimbați o linie, veți primi un răspuns instantaneu la ceea ce s-a întâmplat cu solicitarea dvs.

Greșeala nr. 2: Nerespectarea regulii 80/20

Dacă intervievați un profesor de dezvoltare web sau 10 dezvoltatori web noi, veți auzi despre aceleași provocări de mai multe ori. Poziționare CSS Pluteste. Reapelări. Acestea au fost cele mai comune provocări din ultimii 10 ani.

Totuși, dintr-un anumit motiv, tutorialele vor învăța în continuare fiecare concept pentru aceeași perioadă de timp. Dacă o lecție de CSS introductivă este compusă din 10 lecții și este de așteptat să dureze 5 ore totale, fiecare lecție va dura aproximativ 30 de minute. Cele ușoare sunt învățate atât timp cât cele dure, chiar dacă există un consens bine documentat cu privire la cele mai dificile subiecte!

Este ca și cum ai învăța cum să rupi un ou față de cum să cauți cu atenție un piept de pui gourmet. Ambele sunt la fel de importante pentru a face o masă excelentă, dar una necesită mult mai multă practică. Dar, s-ar putea să fii înșelat să crezi că sunt la fel de dificile, deoarece gătitul unui piept de pui pare perfect din exterior pentru a fi o treabă simplă.

Noii dezvoltatori rezolvă această problemă în câteva moduri:

  1. Presupun că sunt cei mut și renunță
  2. Consultați alte tutoriale pe același subiect, care vor fi în mare măsură repetitive și, uneori, de calitate slabă. Abordarea „spray și rugăciune”.
  3. Treceți la subiectul următor cu presupunerea că „o vor descoperi mai târziu”

Profesorii din alte discipline vor folosi o analiză 80/20 pentru a-și concentra eforturile. Aceasta înseamnă că 20% din noile concepte vor consuma 80% din timpul de învățare al elevilor.

Exemple de subiecte CSS

Cele 6 subiecte CSS ar putea fi la fel de necesare pentru a construi un site web frumos. Dar NU sunt la fel de ușor de învățat. Unii creează ore de luptă.

Într-o lume ideală, un curriculum complet CSS ar include 2–3x mai multe materiale pe aceste teme comune provocatoare. Acesta ar include încurajarea pozitivă („Toată lumea se luptă cu asta!”) Și oportunități suplimentare de practică. Dar acest lucru nu s-a întâmplat încă și nu aștept să se întâmple vreodată pentru majoritatea serviciilor populare.

Știți că sunteți blocat în acest rut când încercați să învățați un concept nou timp de ore și încă nu puteți prezice ce se va întâmpla dacă modificați o linie de cod. Puteți utiliza tehnica Feynman pentru a determina subiectele pe care nu le înțelegeți complet:

  1. Alegeți un concept
  2. Învață-l unui copil mic
  3. Identificați golurile și reveniți la materialul sursă
  4. Revizuire și simplificare (opțional)

Greseala # 3: Predarea din perspectiva unui inginer cu experienta

Multe tutoriale introductive de codare sunt scrise de ingineri cu o experiență de peste 10 ani. De unde știu? Pentru că a trebuit să re-vizionez sau să citesc tutorialele încă o dată, până când mi-am dat seama: „Nu vor explica acest concept cheie! Va trebui să caut o explicație pe internet înainte de a putea continua. ”

Acesta este de fapt o prejudecată cognitivă bine documentată numită „blestemul cunoașterii” și se întâmplă în toate disciplinele tehnice.

Sursa imaginii: CommunicateHealth

Iată ce înseamnă - atunci când profesorii au ani de experiență cu un subiect tehnic, au creat deja o înțelegere profundă a subiectului. Deoarece sunt orbiți de conexiunile din propriul creier, nu pot înțelege cum un începător ar putea vedea noul material.

Dacă vă amintiți modul în care creierul dvs. stochează amintirile de sus, aceasta are de fapt o bază biologică! Hipocampul profesorului a format asociații care nu sunt prezente în creierul elevilor.

Pentru a depăși această provocare, recomand un instrument precum FreeCodeCamp, care a fost scris de dezvoltatorii web autodidact pentru alții într-o poziție similară! Are un curriculum complet, care este menit să ajute elevii autodiriguiți să depășească obstacolele.

Greșeala nr. 4: Codul didactic de parcă este un nou sistem misterios

Să revenim la comparația de gătit. Cei mai mulți oameni au gătit ZIUA toată viața lor sau au fost învățați elementele de bază de către părinți. Ei sunt deja familiarizați cu toate instrumentele de bază din anii de încercare și eroare. Deci, dacă înveți o persoană să fie bucătar profesionist, ai avea deja elementele de bază pe care să le bazezi.

Dar nu există o versiune „de bază” a învățării dezvoltării web! Chiar dacă ați învățat R sau Java în trecut, nu vor fi totuși multe lecții care să continue.

Deci, cum țin cont de cele mai multe tutoriale online? Acestea includ lecții care învață codul, precum este o lume fantastică nouă, plină de servere HTTP, browsere finicky și evenimente asincrone. Ei acționează ca aceste piese complicate să fie baza pentru învățarea avansată ulterioară.

Imaginează-ți dacă gătitul necesită o barieră atât de mare pentru intrare. Cu toții am mânca mâncare cu microunde. Gătitul angajează toate cele 5 simțuri și face ca procedura corectă și procedura greșită să se lipească rapid în creierul tău. Creierul uman învață cel mai bine atunci când se angajează mai multe simțuri. Poate înțelege sistemele când diferiți stimuli fac bine și rău evident.

Știu că acest lucru pare imposibil. Deoarece tot codul rulează într-un browser sau pe un server, cum se poate conecta la simțurile noastre? Și nu mă refer la vizionarea unui

zoom în jurul unui ecran în timp ce comutați proprietățile CSS ale acestuia. Aceasta nu încurajează învățarea.

De asemenea, aș fi crezut că numerele imaginare din matematică sunt imposibil de conectat la simțurile umane. Vă amintiți de i, i², i³ și i⁴? Pare un sistem nou pe care trebuie doar să-l memorezi pentru a putea aplica.

În schimb, Kalid Azad de la BetterExplained utilizează un grafic cu axa x și y pentru a vă ajuta să vizualizați dimensiunea „imaginară”. Acum, conceptul de numere imaginare este legat direct de un concept familiar. Nu este necesară memorarea.

Greșeala nr. 5: Lipsa de feedback imediat

La suprafață, s-ar putea părea că dezvoltarea web are deja un sistem perfect pentru feedback. La urma urmei, de îndată ce reîmprospătați browserul sau introduceți „npm start” în consolă, veți primi un răspuns imediat.

În analogia gătitului, să zicem că încercați să gătiți perfect un piept de pui pentru masa dvs. În schimb, îl arzi. Ce ar fi putut merge greșit?

  1. A feliat-o prea subțire în primul rând
  2. A transformat căldura prea mare
  3. Puneți-o în tigaie prea târziu
  4. Lăsat-o în tigaie prea mult timp

Produsul dvs. ars la sfârșit nu vă oferă niciun indiciu despre ceea ce a mers prost. Doar ani de experiență sau nenumărate încercări care folosesc încercarea și eroarea te vor ajuta să îți dai seama ce a mers prost.

Iată mesajul de eroare pe care l-ar primi dacă acest lucru s-ar întâmpla într-un prompt de comandă:

Asta nu va ajuta la depanare! Încurajează învățarea prin încercare și eroare până când, ore mai târziu, îți dai seama. În schimb, aveți nevoie de un sistem de feedback care vă avertizează asupra impactului fiecărei decizii:

Vizualul de mai sus arată că la pasul 2, „Cea mai mare temperatură”, ceva nu a mers corect, care a stricat ieșirea.

Această rețea bogată de decizii posibile este deja încorporată în creierul bucătari experți. Și chiar și dezvoltatorii web intermediari pot citi un mesaj de eroare și își pot concentra eforturile de depanare pe o parte a scriptului. Începătorii nu au însă un instinct similar și, astăzi, învață doar din ore de încercare și eroare, cu feedback intermitent.

Din nou, acest lucru poate părea imposibil de eliminat într-un editor de text sau un editor online precum CodePen. Însă, faimosul eseu al programului de învățare al lui Bret Victor a prezentat deja un cadru întreg pentru a ajuta noii programatori să obțină feedback cu privire la fiecare linie de cod din scriptul lor imediat ce sunt tastați.

Elevii învățați de sine sunt cei mai răi

Dacă sunteți la liceu sau la facultate, puteți face față unui nivel secundar de predare. Trebuie doar să vă pregătiți pentru următorul test și aveți o rețea de asistență de colegi studenți. Sunteți evaluat dacă puteți obține un scor la un test, nu dacă puteți fi plătit pentru a exersa abilitatea în viața reală.

Dar dacă sunteți un dezvoltator web autodidact, probabil vă confruntați cu diferite circumstanțe. Aveți o perioadă limitată de timp și va trebui să vă dovediți întreaga abilitate, construind o aplicație reală sau trecând un test în timpul unui interviu de muncă. Nu există niciun concept de a studia pentru un test și de a merge mai departe.

Pe măsură ce industria educației online crește și mai mulți adulți sunt nevoiți să învețe noi abilități online, prezic că puterea se va orienta către cursanți. Va fi o presiune din ce în ce mai mare asupra companiilor de educație online pentru a îmbunătăți experiența de învățare în sine. Cele mai bune strategii didactice vor fi răsplătite cu sute de mii de abonați plătitori.

-

Încerc să creez o nouă modalitate de dezvoltare web. Dacă doriți să consultați abordarea mea memorabilă despre tutoriale, accesați CodeAnalogies.com. Și dacă credeți că alți oameni s-ar bucura de această poveste, dați-i un aplaz!