Annons
Programmering är hård. De enda som säger något annat är de som har många års erfarenhet av kodning bakom sig. Det är okej att bli överväldigad! Det finns en massa att lära dig och du kommer förmodligen att glömma saker lika snabbt som du lär dig dem. Tro mig: det är normalt.
Men bara för att det är normalt betyder det inte att det inte är frustrerande. Sanningen att säga, lära sig koda Hur man lär sig programmering utan all stressKanske har du bestämt dig för att satsa på programmering, vare sig det är för en karriär eller bara som en hobby. Bra! Men du kanske börjar känna dig överväldigad. Inte så bra. Här är hjälp för att underlätta din resa. Läs mer kan vara extremt stressande om du inte närmar dig det med rätt tänkesätt och attityd.
Du vill lära dig det nya språket eller biblioteket eller ramverket så snart som möjligt, eller hur? Det är förståeligt. Lyckligtvis finns det en handfull tips som kan hjälpa dig att bättre behålla all den där tunga programmeringsinformationen som fortsätter att flyga in i ena örat och rakt ut genom det andra.
Inga fler Cram-sessioner
Ingen vill höra det, men att proppa är det sämsta sättet att lära sig programmera. Om du är något som jag, var cramming din modus operandi allt i hela skolan och universitetet. Det är det enda sättet du vet hur du studerar.
Men lär av mina misstag: ju mer du försöker proppa, desto mindre kommer du att komma ihåg. Det är i stort sett sant för alla kunskapsbaserade ämnen, men det är särskilt sant när det kommer till programmering.
Grunden för detta påstående kommer från en studie från 2008 av University of California, San Diego:
"Elever presterar bättre när de placerar sina studietillfällen i stället för när de försöker stoppa in allt i sina noggins under en sittning."
Varför? Mest troligt på grund av seriell positionseffekt:
"Seriell positionseffekt är en persons tendens att minnas de första och sista objekten i en serie bäst, och de mittersta objekten sämst."
Med andra ord: i en given studiesession är det mer sannolikt att du behåller informationen du lärt dig nära början och slutet av sessionen och mer sannolikt att glömma informationen från mitten av session.
Du vill maximera antalet början och slut. Det är därför det är bättre att ha flera korta sessioner istället för några långa sessioner när det gäller att lära sig och ta till sig nytt material.
Nästa gång du sätter dig ner för att lära dig kod, ta det ett ämne i taget och ta en kort paus mellan varje ämne. (Se bara till att förhindra att dina pauser förvandlas till förhalning!)
Granska, granska, granska
En annan anledning till varför propp är motsatsen till långsiktig kunskapsretention är att minnet bleknar med tiden. Detta är inte alltid sant - jag är säker på att vi alla har några barndomsminnen som aldrig kommer att försvinna - men det verkar vara det allmänna fallet för minnen som inte är bundna till känslor.
Det finns en debatt om huruvida själva minnet förfaller på grund av tid (förfallsteori) eller helt enkelt trycks ut och ersätts av nya minnen med tiden (interferens teori). Vilken teori du än prenumererar på är resultatet att äldre minnen är mer benägna att blekna bort.
Det är här recensionen kommer in i bilden.
Tänk på det som att gå genom en skog av minnen. Varje gång du vill komma åt ett minne måste du spåra nervbanan för att hitta den. Varje gång du spårar det minnet, etsas vägen in lite mer - precis som hur en smutsgång naturligt bildas när människor går samma väg om och om igen. Om du slutar gå vägen kan den blekna bort och minnet hamnar förlorat någonstans i skogen.
Bortsett från all poppsykologi, här är takeaway: när det kommer till programmering räcker det inte att lära sig ett ämne bara en eller två gånger. Du måste återbesöka det dussintals eller till och med hundratals gånger. Varje recension etsar in det ämnet i din hjärna lite djupare.
Jag vet hur svårt det här kan vara om du är en naturlig crammer, men du kommer att bli förvånad över hur snabbt du börjar behålla material när du anstränger dig för att granska det regelbundet.
Använd flera olika resurser
Den tuffaste aspekten av programmering - åtminstone för helt nya kodare - är den stora bredden av detaljer och nyanser som måste internaliseras. Tills den internaliseringen inträffar kommer du att vara i ett evigt tillstånd av huvudet.
Beroende på språket måste du memorera hundratals syntaxregler (t.ex. nyckelord, semikolon, blanksteg). Vissa språk är strängare, andra är mindre, och ytterligare andra har sina egna unika syntaxmetoder som inte används någon annanstans. Allt detta kan vara förvirrande om du inte har någon tidigare erfarenhet av kodning.
För att inte tala om all begreppsinformation som överskrider enskilda språk. Ämnen som objektorienterad programmering, enhetskomponentsystem och observatörsmönster kan verkligen få huvudet att snurra första gången du försöker lära dig dem.
Jag har delat den här illustrationen tidigare, men den är så punktlig att den tål att upprepas:
"Anta att någon visade dig ett fotografi av en staty. Det kanske ger tillräckligt med en bild för att du ska få en adekvat känsla av statyn, men du skulle inte få hela bilden. Ett utzoomat foto skulle förlora intrikata detaljer medan ett inzoomat foto skulle förlora perspektivet. Men med ytterligare fotografier tagna från andra vinklar kan du verkligen börja se statyns fullhet i textur, i storlek, i detalj, från framsidan till baksidan, från sida till sida och topp till tå."
Att lära sig programmera kan vara förvånansvärt godtyckligt. Alla kanske berömmer Resurs A som det bästa sättet att lära sig Språk X, men det kanske inte är meningsfullt för dig. Alla kanske hatar Resurs B men du tar en blick och det är helt vettigt! När det gäller någon annan, kanske de zonar ut när de studerar Resurs A och B men drar stor nytta av Resurs C.
Det är därför det är så viktigt för dig att vara villig att konsumera alla typer av resurser där ute. Alla lär sig på ett annat sätt. Om du har problem med ett visst ämne, sök runt efter en annan resurs. Kanske den passar dig bättre. Kanske inte.
Även om du tror att du förstår vissa ämnen, är det möjligt att det finns mer att lära sig om det. Det är också möjligt för någon annans förklaring att befästa konceptet i ditt sinne för gott. Man vet aldrig, så varför inte konsumera så mycket resurser som möjligt?
Observera att spel kan vara en mycket användbar resurs! Kolla in dessa roliga och lärorika kodningsspel De 9 bästa kodningsspelen för att bygga dina programmeringsfärdigheterKodningsspel hjälper dig att lära dig snabbare med praktisk övning och erfarenhet. Dessutom är de ett roligt sätt att testa dina programmeringsfärdigheter! Läs mer .
Lär ut begrepp när du lär dig dem
Det finns ett vackert koncept inom programmering som heter gummianka felsökning De konstigaste programmeringsprinciperna du aldrig har hört talas omFöljande principer kommer att lära dig att vara klok med din kod. Vissa är konstiga och många är humoristiska, men de är alla lika praktiska och viktiga. Akta dig! Läs mer , som beskriver tekniken att förklara sin kod, rad för rad, för en livlös gummianka. Det används när ett visst segment av kod är trasigt, men det finns ingen uppenbar anledning till det.
Konstigt nog har de flesta programmerare en "Eureka!" ögonblick mitt i att förklara koden när de plötsligt ser var felet i kodningslogiken uppstår. Verbalisering utlöser ett annat område i hjärnan, vilket tvingar dig att se problemet från en ny vinkel.
Detta koncept kan också användas för att hjälpa dig att lära dig nytt material. Du kanske har stött på detta populära citat som ofta tillskrivs Albert Einstein:
"Om du inte kan förklara det enkelt, förstår du det inte tillräckligt bra."
Med undantag för vissa områden som handlar om avancerad teoretisk kunskap, stämmer detta talesätt. Ju mer du förstår ett ämne, desto bättre rustad är du att förklara det på ett sådant sätt att någon som inte har någon kunskap om ämnet fortfarande kan förstå det.
Motsatsen till detta är också sant. När du försöker lära ut ett ämne kommer du att stöta på vissa begrepp som du inte verkar kunna förklara på ett tydligt sätt. Detta är inte bara ett fantastiskt sätt att diagnostisera svagheter i din kunskap, den faktiska processen att hitta den rätta förklaringen kan hjälpa dig att befästa konceptet i ditt sinne.
Det kallas learning-by-teaching och det är i grunden en twist på gummianka-felsökning.
Nu säger jag inte att du borde faktiskt lära andra; istället, varje nytt programmeringsämne som du lär dig, försök att lära ut det till en gummianka (eller en osynlig vän). Det kan kännas dumt i början, men du kan tycka att det är otroligt fruktbart när det kommer till minnesbevarande.
Avsiktlig övning ger färdighet
Begreppet talang är fullständigt struntprat. Ingen lämnar livmodern som violinist, brottare eller programmerare i världsklass. Visst, vissa människor kan vara mer benägna till vissa discipliner, men talang utan erfarenhet är värdelös Låt inte dina dolda talanger dö: 7 vägar att gå och hitta dem igenDen dåliga nyheten är att du måste arbeta hårt med avsikt att polera dina dolda talanger. Den goda nyheten är att det finns fler möjligheter än någonsin att spotta dina talanger. Läs mer . På samma sätt är hårt arbete alltid mer värdefullt än talang.
Med det sagt, alla former av hårt arbete är inte lika. Malcolm Gladwell myntade den ökända 10 000-timmarsregeln, som säger att du måste investera minst 10 000 timmar i ett ämne för att bli en mästare på det. Även om känslan kan vara sann, misstolkar många det han försökte säga.
Lång historia kort, ett åtagande på 10 000 timmar garanterar faktiskt inte behärskning. Du vet ordspråket: "Övning ger inte färdighet. Perfekt övning ger färdighet." För att det ska vara meningsfullt, praktiken måste vara avsiktlig Vill du bli expert på något? Prova medveten övningDet är alldeles för lätt att känna sig förkyld när du mödosamt försöker förbättra en viss färdighet. Använd kraften i "avsiktlig övning" för att få dig över dessa irriterande platåer. Läs mer . Behärskning kan endast uppnås genom 10 000 timmars avsiktlig övning.
Hur du tränar är mycket viktigare än hur mycket tid du lägger ner på att träna.
Läsning är passiv. Att titta på YouTube-lektioner är passivt. Att lyssna på poddar är passivt. Som nybörjarkodare kan du bli frestad att fladdra från handledning till handledning, ta itu med ämne efter ämne utan att faktiskt tillämpa någon av den kunskapen på ett praktiskt sätt. Motstå denna frestelse.
Det är en sak att förstå ett exempel före dig, men det är en annan att syntetisera en lösning från grunden. Om du vill påskynda inlärningsprocessen måste du vara villig att vara aktiv istället för passiv. Aktiv träning är den enda sorten som betyder något i slutändan.
Experimentera med personliga projekt
För mig var läxor den värsta delen av skolan. Det verkade bara som ett komplicerat knep för att döda roligt och hålla eleverna sysselsatta - vilket, för att vara rättvis, ibland var sant. Men nu när jag ser tillbaka, är vikten av läxor äntligen meningsfull. Det tvingade mig att tillämpa nyvunnen kunskap på ett aktivt sätt.
Om du är inskriven programmeringskurser och klasser De 11 bästa webbplatserna för gratis onlinekurser i datorprogrammeringGenom att använda dessa gratis onlinekurser i datorprogrammering kan du bli en bra kodare utan en datavetenskaplig examen. Läs mer , underskatta inte effektiviteten av läxor. Ta det på allvar, se det alltid som en chans att ytterligare cementera det du har lärt dig till långtidsminnet.
Men många gånger räcker det fortfarande inte med läxor. (Och om du lär dig hur du programmerar på egen hand utan en verklig instruktör, har du förmodligen inga läxor till att börja med.)
Vad är lösningen? Skapa ett par engångsprojekt!
Tänk på en få projektidéer 5 projektidéer som hjälper dig att lära dig programmering snabbareDet finns några sätt att förenkla inlärningskurvan för programmering. Smutsa ner händerna och lär dig snabbare med sidoprojekt som du kan starta när som helst. Lek med dessa fem. Läs mer som du vill implementera. För absolut nybörjare kan du överväga ett spel Tic-Tac-Toe eller Hangman. För erfarna programmerare som försöker lära sig ett nytt ramverk, prova att koda en enkel mobilapp eller webbspel. Så länge det intresserar dig på ett personligt plan, kör på det!
Det fina med detta tillvägagångssätt är dubbelt.
För det första är det mer sannolikt att det håller din uppmärksamhet. Studier har visat att elever lär sig bättre när de kan ägna sig åt ämnen som intresserar dem. Det är precis vad ett personligt projekt erbjuder. Du har ett slutmål som du faktiskt vill uppnå, så det är mer sannolikt att du behåller informationen som tar dig dit.
För det andra, det finns ingen press för att du ska lyckas. Även om framgång skulle vara trevligt, tillåter bristen på formalitet dig att vara experimentell och kreativ. Du kommer oundvikligen att stöta på problem, men det är mer som att leka med Lego än att det är läxor. Det är roligare och inte lika stressigt.
Slappna av och bokmärk allt
Sanningen är att ingen programmerare kommer ihåg allt de har lärt sig. Även efter att du har arbetat med ett visst bibliotek eller ramverk ett tag, är det inte ovanligt om du inte kan komma ihåg varje funktion eller variabel från toppen av ditt huvud.
I själva verket kan det sluta som ett enormt slöseri med tid och ansträngning att försöka memorera allt. Referensblad finns av en anledning. Varför lägga ett helt uppslagsverk i minnet när du bara kan öppna det när du behöver det?
Så när ska man memorera och när ska man referera?
När det kommer till konceptuellt material, internalisera det alltid efter bästa förmåga. Med det menar jag att förstå teorin även om du inte kan konvertera den till faktisk kod (och teorin borde vara tillräckligt tydlig för dig för att du ska kunna lära ut den tydligt).
För allt annat - som specifika funktionsnamn, parameterlistor eller till och med språkkunskaper - Jag skulle inte oroa mig för att binda mig till minnet. Vänta gärna till ett referensblad. Ibland hänvisar du till något så ofta att du kommer att memorera det. Om det händer, okej. Om inte så är det också bra.
Personligen har jag hundratals internetbokmärken till olika API: er, guider och handledningar. Om jag behöver implementera någon form av sökvägsalgoritm kan jag referera till en guide som hjälper mig att få den kodad innan jag glömmer det igen. Det hjälper till att förstå de underliggande koncepten, men jag försöker att inte bry mig om implementeringsdetaljer.
Slutgiltiga tankar
Jag kommer att upprepa det en miljon gånger om jag måste: programmering är svårt och det är okej om du kämpar med det. Jag har programmerat som en hobby i över ett decennium och jag blir fortfarande skrämd när jag har nya koncept att lära mig.
Slå inte upp dig själv om du inte kommer ihåg allt direkt. Ovanstående tips kommer förhoppningsvis att vara till hjälp för dig, och även om de inte gör det kan du alltid lita på bokmärkta referenser som en sista utväg.
Tycker du att programmering är svårt? Vilken typ av knep och tips känner du till som kan vara till hjälp för nybörjarkodare? Dela din visdom med oss i kommentarerna nedan!
Bildkrediter: Binär programmerare via Shutterstock, Memory Eraser via Shutterstock, Obfuskerad kod via Shutterstock, Gummi Ducky Via Shutterstock, Tangentbordsskrivare via Shutterstock, PHP-källkod via Shutterstock, Filmappar via Shutterstock
Joel Lee har en B.S. i datavetenskap och över sex års yrkeserfarenhet av skrivande. Han är chefredaktör för MakeUseOf.