Evo zašto je tako teško naučiti kako kodirati (i što učiniti u vezi s tim)

U jesen 2014. godine započeo sam dug, mučan put ka učenju web razvoja.

Budući da sam imao dnevni posao, znao sam da će ovaj proces trajati od mojih noći i vikenda. A, budući da se nikada prije nisam učio tehničkim vještinama na mreži, bio sam svjestan da postoji dosta nezamislivih izazova koji će usmjeriti njihove ružne glave.

Ali evo što nisam mogao predvidjeti: Nakon korištenja stotina pisanih, video i interaktivnih vodiča, ustanovio sam da su metode za poučavanje tehničkih tema na mreži nevjerojatno ... primitivne.

Stanje udžbenika za kodiranje na mreži

Godišnje pišu tisuće udžbenika na HTML, CSS i JavaScript od strane programera s desecima tisuća godina kolektivnog iskustva. Mislili biste da će postojati bogat ekosustav s raznovrsnim nastavnim metodama i interaktivnim alatima.

Nije slučaj. Umjesto toga, kodiranje udžbenika jednostavno prepakira tehnike podučavanja 20. stoljeća tehnologijom 21. stoljeća.

Video vodiči oponašaju nastavu u učionici s bijelom pločom. Ili instruktivni DVD koji možete kupiti od reklame.

Pisani udžbenici djeluju poput poglavlja iz knjiga.

Interaktivni udžbenici djeluju poput sastavljača koji se u koledžima koriste od 80-ih.

Nakon provedene noći iz noći u učenje novih tema i isprobavanje isprobavanja u testnim projektima, pomislio sam da moram raditi nešto pogrešno. Tako sam počeo pitati prijatelje što misle da bih trebao učiniti drugačije.

Na fakultetu su me obrazovale diplome informatike: "Jeste li pokušali čitati dokumente na W3 školama ili u Mozilla Developer Network-u?"

Drugi su mi poduzetnici rekli: „Odustani sada. Nisam to mogao naučiti kad sam pokušao. "

Internetski programeri samouki pitali su me: „Zašto pričaš sa mnom? Ostalo vam je stotine sati ako želite naučiti razvoj interneta. "

Čitanje dokumentacije. Odustati. Stavite više sati. To su bile moje mogućnosti.

Nastavio sam stavljati sate dok nisam mogao sagraditi web-aplikaciju s cijelim snopom. Trebalo je cijelu godinu (najmanje). Ove sate provodio sam gledajući, čitajući i ponovno radeći tutorijale sve dok nisam osjetio da sam ga "dobio", a zatim isprobao koncept u projektu.

Osjećao sam se kao da zapravo nisam napredovao od bolnih studijskih navika koje sam morao koristiti na faksu. Šokantno je bilo da će hiljadama drugih novaknih web programera trebati da završe ovo putovanje.

Dakle, krenuo sam otkriti zašto su ove tehničke upute vodile u satima zbrke. Čitao sam knjige i radove iz područja kognitivne psihologije, gledao popularne taktike objašnjavanja i napisao vlastiti niz priručnika za kodiranje.

Evo 5 razloga zbog kojih Internet prepun priručnika za kodiranje još uvijek nije mogao pružiti zadovoljavajuće lekcije (i kako to učiniti bolje).

Pogreška br. 1: Podučavanje pokazivanjem isječaka koda

Usporedimo kodiranje s kuhanjem. Oboje zahtijevaju da poslušno slijedite niz uputa ako želite razuman rezultat. Oboje imaju stroga pravila bez mjesta za pogreške.

Iz nekog razloga, tutorski tvorci vole brzo staviti isječak koda na zaslon nakon što prvi put opišu koncept. Dati će detaljno objašnjenje koda, kao da je to dovoljno.

Ne postoje jasne asocijacije između različitih redaka u isječku koda, osim ako niste posrednički programer Node.js i znate kako napisati HTTP poslužitelj.

Ako sam vas pokušavao naučiti kako napraviti umak, ovo je ekvivalentno prikazati vam sliku svake komponente umaka u pripremljenom obliku bez da vam pokažem kako do tamo. To možete shvatiti, ali bit će potrebno puno pokušaja i pogrešaka.

Je li to tofu na kockice? Luk narezan na kockice? Kuhan koromač? Koliki su komadi? Koji alat treba upotrijebiti za kockanje?

Naravno, ako želite postati iskusni kuhar, ne želite učiti kako luk luk iznova i iznova. Želim vas naučiti jednom ili dva puta i omogućiti vam da se samostalno prisjetite svakog malog koraka od punog luka do kockice.

Ovo je bliže što se približavamo kuharskom tečaju

Ako postoji postupak u više koraka za učenje kako stvoriti HTTP poslužitelj (poput primjera gore), isječak koda trebao bi biti posljednji dio. To ne bi trebao biti prvi (ili cijeli) postupak. I cijeli se kontekst mora učiti zajedno.

To je zato što vaš mozak pohranjuje dugotrajna sjećanja u hipokampusu preko udruga. Hipokampusu je potreban kontekst kako bi se mogao pohraniti novi koncept s povezanim konceptima. Kontekst, u ovom slučaju, nisu susjedni redovi koda s pojedinačnim objašnjenjima.

Umjesto toga, novi web programeri imali bi puno bolje šanse pohraniti koncept HTTP poslužitelja pridružujući ga nečemu što već razumiju. Vaš mozak treba stvoriti bogatu mrežu veza kako bi uspješno pohranio nove izazovne koncepte.

Evo nekoliko načina kako bi vaš mozak mogao bolje razumjeti komponente HTTP poslužitelja:

  1. Analogija koja objašnjava različite dijelove bloka kodova i koristi postojeće odnose za objašnjenje tih novih odnosa.
  2. Interaktivna verzija isječka koda koja prikazuje trenutno stanje aplikacije. Kad promijenite liniju, dobivate trenutni odgovor na ono što se dogodilo s vašim zahtjevom.

Pogreška br. 2: Ne razmatranje pravila 80/20

Ako intervjuujete učitelja web razvoja ili 10 novih web programera, čut ćete iste poteškoće iznova i iznova. CSS pozicioniranje. Pluta. Povratni pozivi. Ovo su najčešći izazovi u posljednjih 10 godina.

Iz nekog razloga, međutim, udžbenici će i dalje podučavati svaki koncept za isto vrijeme. Ako se lekcija o uvodnom CSS sastoji od 10 lekcija i očekuje se da traje 5 sati, svaka lekcija bit će dugačka otprilike 30 minuta. Jednostavni se uče tako dugo kao i oni teški, iako postoji dobro dokumentiran konsenzus o najtežim temama!

To je poput učenja kako razbiti jaje nasuprot tome kako pažljivo pretraživati ​​gurmanske pileće dojke. Oboje je podjednako važno kako biste napravili sjajan obrok, ali za jedno je potrebno mnogo više prakse. Ali, možda ćete biti zavedeni kada vjerujete da su podjednako teški jer kuhanje pilećih prsa savršeno izgleda izvana kao jednostavan posao.

Novi programeri rješavaju ovo pitanje na nekoliko načina:

  1. Pretpostavimo da su oni glupi i odustajte
  2. Posavjetujte se s drugim udžbenicima na istu temu, koji će biti uglavnom ponavljani i povremeno nekvalitetni. Pristup "sprejom i molitvom".
  3. Pređite na sljedeću temu uz pretpostavku da će vam to "shvatiti kasnije"

Učitelji iz drugih disciplina upotrijebit će analizu 80/20 da preusmjere napore. To znači da će 20% novih koncepata zauzeti 80% vremena za učenje učenika.

Uzorak CSS tema

6 CSS tema mogu biti podjednako potrebne za izgradnju prekrasne web stranice. Ali NIJE ih jednako lako naučiti. Neki stvaraju sate borbe.

U idealnom svijetu, cjelokupni CSS nastavni plan i program uključivao bi 2–3 puta više materijala o ovim uobičajenim zahtjevnim temama. To bi uključivalo pozitivno ohrabrivanje ("svi se bore s tim!") I dodatne mogućnosti vježbanja. Ali, to se još nije dogodilo i ne očekujem da će se to ikada dogoditi za većinu popularnih usluga.

Znate da ste zaglavili u ovoj kolotečini kada satima pokušavate naučiti novi koncept, i još uvijek ne možete predvidjeti što će se dogoditi ako prebacite jedan red koda. Pomoću Feynmanove tehnike možete odrediti teme koje ne razumijete u potpunosti:

  1. Odaberite koncept
  2. Nauči to maloj djeci
  3. Identificirajte praznine i vratite se na izvorni materijal
  4. Pregled i pojednostavljenje (izborno)

Pogreška # 3: Podučavanje iz perspektive iskusnog inženjera

Mnogo uvodnih vodiča za kodiranje napisali su inženjeri s više od 10 godina iskustva. Kako ja znam? Budući da sam morao ponovno i ponovno čitati udžbenike dok nisam shvatio, „Neće objasniti ovaj ključni koncept! Trebat ću potražiti objašnjenje putem Interneta prije nego što nastavim. "

To je zapravo dobro dokumentirana kognitivna pristranost nazvana "prokletstvo znanja", i događa se u svim tehničkim disciplinama.

Izvor slike: CommunicateHealth

Evo što to znači - kad učitelji imaju dugogodišnje iskustvo tehničkog predmeta, oni su već stvorili duboko razumijevanje predmeta. Budući da su zaslijepljeni vezama u vlastitom mozgu, ne mogu razumjeti kako početnik može gledati novi materijal.

Ako se sjećate načina na koji vaš mozak pohranjuje uspomene odozgo, to zapravo ima biološku osnovu! Hipokampus učitelja stvorio je asocijacije koje nisu prisutne u mozgu učenika.

Da biste prevladali ovaj izazov, preporučujem vam alat poput FreeCodeCampa koji su napisali samoučni web programeri za druge osobe na sličnom položaju! Ima cjelovit nastavni plan i program koji je posebno namijenjen pomaganju učenicima koji su usmjereni prema učenicima u savladavanju prepreka.

Pogreška br. 4: nastavni kôd kao da je tajanstveni novi sustav

Vratimo se usporedbi s kuhanjem. Većina je ljudi čitav život kuhala NEŠTO ili su ih roditelji učili osnovama. Već su upoznati sa svim osnovnim alatima iz godina pokušaja i pogrešaka. Dakle, ako biste osobu učili da bude profesionalni kuhar, već biste imali osnove za nadogradnju.

Ali ne postoji "osnovna" verzija učenja web razvoja! Čak i ako ste u prošlosti naučili R ili Java, još uvijek neće biti puno lekcija koje prenose.

Pa, kako većina mrežnih udžbenika to uzima u obzir? Oni uključuju lekcije koje podučavaju kôd kao da je to fantastičan novi svijet, pun HTTP poslužitelja, sitni preglednici i asinhroni događaji. Djeluju kao da su ovi komplicirani dijelovi temelj za kasnije napredno učenje.

Zamislite da li je za kuhanje potrebna tako velika prepreka ulasku. Svi bismo jeli mikrovalnu hranu. Kuhanje uključuje svih 5 osjetila i pravi postupak i pogrešan postupak brzo vam se zabijaju u mozak. Ljudski mozak najbolje uči kada uključuje više osjetila. Može razumjeti sustave kada različiti podražaji čine dobro nasuprot lošim.

Sada znam da se ovo čini nemogućim. Budući da se sav kod radi u pregledniku ili na poslužitelju, kako se može povezati s našim osjetilima? I ne mislim gledati

zoom oko zaslona dok mijenjate njegova CSS svojstva. To ne potiče učenje.

Također bih pomislio da je imaginarne brojeve iz matematike nemoguće povezati s ljudskim osjetilima. Sjećate se i, i², i³, i⁴? Čini se kao novi sustav koji samo trebate upamtiti da biste se prijavili.

Umjesto toga, Kalid Azad iz tvrtke BetterExplained koristi grafikon s osi x i y koji će vam pomoći da vizualizirate „imaginarnu“ dimenziju. Sada je pojam imaginarnih brojeva izravno vezan za poznati koncept. Nije potrebno memoriranje.

Pogreška br. 5: nedostatak trenutnih povratnih informacija

Na površini, može se činiti da web razvoj već ima savršen sustav za povratne informacije. Napokon, čim osvježite preglednik ili upišete "npm start" u konzolu, odmah dobivate odgovor.

U analogiji s kuhanjem, recimo da pokušavate savršeno skuhati pileća prsa za svoj obrok. Umjesto toga, spališ ga. Što je moglo poći po zlu?

  1. Prvo ga prerezati tanko
  2. Pretjerano okrenula toplinu
  3. Stavite u tavu prekasno
  4. Ostavite ga u tavi predugo

Vaš spaljeni proizvod na kraju vam ne daje pojma što je pošlo po zlu. Samo godine iskustva ili bezbroj pokušaja korištenja pokušaja i pogreške pomoći će vam da shvatite što je pošlo po zlu.

Evo poruke o pogrešci koju biste dobili ako se to dogodilo u naredbenom retku:

To neće pomoći u uklanjanju pogrešaka! To potiče učenje pokušajem i pogreškama sve dok, satima kasnije, to ne shvatite. Umjesto toga, potreban vam je sustav povratnih informacija koji vas upozorava na utjecaj svake odluke:

Gornji vizualni prikaz pokazuje da je u koraku 2, "Najviša temperatura", nešto pođe po zlu što je upropastilo izlaz.

Ova bogata mreža mogućih odluka već je ugrađena u mozak stručnih kuhara. Pa čak i posrednički web programeri mogu pročitati poruku o pogrešci i usredotočiti svoje napore za uklanjanje pogrešaka na jedan dio skripte. No početnici nemaju sličan instinkt, a danas uče samo satima pokušaja i pogrešaka s povremenim povratnim informacijama.

Ponovno, ovo se može činiti nemogućim ukloniti u uređivaču teksta ili mrežnom uređivaču kao što je CodePen. No, poznati esej Bret Victor eseja „Programi za učenje“ već je zacrtao čitav okvir pomaganja novim programerima da dobiju povratne informacije o svakoj liniji koda čim ih upišu.

Samostalni učenici najviše boli

Ako ste u srednjoj školi ili na faksu, možete se nositi s nižim nivoom nastave. Samo se trebate pripremiti za sljedeći test i imat ćete mrežu za podršku kolega učenika. Procjenjujete se možete li dobiti test na testu, a ne možete li biti plaćeni za primjenu vještine u stvarnom životu.

Ali ako ste samoučni web programer, vjerojatno se suočavate s različitim okolnostima. Imate ograničeno vrijeme, a morat ćete dokazati cijeli svoj set vještina izradom stvarne aplikacije ili položenim testom tijekom razgovora za posao. Ne postoji koncept studiranja na testu i nastaviti dalje.

Kako industrija internetskog obrazovanja raste i sve je više odraslih osoba prisiljeno učiti nove vještine na mreži, predviđam da će se snaga preusmjeriti prema učenicima. Bit će sve veći pritisak na internetske obrazovne tvrtke kako bi poboljšale samo iskustvo učenja. Najbolje strategije poučavanja bit će nagrađene sa stotinama tisuća pretplatnika koji plaćaju.

-

Pokušavam stvoriti novi način za web razvoj. Ako želite provjeriti moj nezaboravan pristup udžbenicima, idite na CodeAnalogies.com. A ako mislite da bi i drugi ljudi uživali u ovoj priči, udaljite je!