Реклама
Програмирање је тешко. Једини људи који кажу другачије су они који имају вишегодишње искуство кодирања испод појаса. У реду је бити преплављен! Постоји лот да учите и вероватно ћете заборавити ствари онолико брзо колико их научите. Верујте ми: то је нормално.
Али само зато што је то нормално не значи да није фрустрирајуће. У истину, учење како да кодира Како научити програмирати без стресаМожда сте одлучили да се бавите програмирањем, било због каријере или само из хобија. Сјајно! Али можда почињете да се осећате преплављено. Не тако велики. Ево помоћи да вам олакшате путовање. Опширније може бити изузетно стресно ако томе не приступите са правим начином размишљања и ставом.
Желите да научите тај нови језик или библиотеку или оквир што је пре могуће, зар не? То је разумљиво. Срећом, постоји прегршт савета који вам могу помоћи да боље задржите све те тешке информације о програмирању које стално лете на једно уво и право на друго.
Нема више Црам Сессионс
Нико то не жели да чује, али збијање је најгори начин да научите како да програмирате. Ако сте нешто попут мене, нагуравање је било ваше
модус операнди у целој школи и на универзитету. То је једини начин на који знаш да учиш.Али учите из мојих грешака: што више покушавате да нагурате, мање ћете се сећати. То је прилично тачно за било који предмет заснован на знању, али је посебно тачно када је у питању програмирање.
Основа ове тврдње долази из студије из 2008 са Универзитета Калифорније, Сан Дијего:
„Ученици раде боље када раздвоје своје сесије учења, а не када покушавају све да угурају у своје ногице током једне сесије.
Зашто? Највероватније због ефекат серијске позиције:
„Ефекат серијске позиције је склоност особе да најбоље памти прву и последњу ставку у низу, а најгоре средње ставке.
Другим речима: у било којој сесији учења, већа је вероватноћа да ћете задржати информације које сте научили у близини почетак и крај сесије и већа је вероватноћа да ћете заборавити информације из средине седница.
Желите да повећате број почетака и крајева. Зато је боље имати више кратких сесија уместо неколико дугих када је у питању учење и усвајање новог материјала.
Следећи пут када седнете да научите код, узимајте једну по једну тему и правите кратку паузу између сваке теме. (Само се побрините да спречите да се ваше паузе претворе у одлагање!)
Преглед, преглед, преглед
Други разлог зашто је збијање супротно дугорочном задржавању знања је тај што памћење бледи током времена. Ово није увек тачно - сигуран сам да сви имамо неколико успомена из детињства које никада неће нестати - али изгледа да је то општи случај за сећања која нису везана за емоције.
Постоји одређена дебата да ли се сама меморија пропада услед времена (теорија распада) или једноставно буде истиснут и замењен новим сећањима током времена (теорија интерференције). Коју год теорију да прихватите, резултат је да ће старије успомене вероватније избледети.
Овде долази до прегледа.
Замислите то као шетњу кроз шуму успомена. Сваки пут када желите да приступите меморији, морате прати нервни пут да би га пронашао. Сваки пут када уђете у траг том сећању, пут се мало више урезује - баш као што се природно формира прљава стаза када људи ходају истим путем изнова и изнова. Ако престанете да ходате стазом, она може избледети и сећање заврши изгубљено негде у шуми.
Ако оставимо по страни сву поп психологију, ево закључка: када је у питању програмирање, није довољно научити тему само једном или двапут. Морате га поново посетити десетине или чак стотине пута. Свака рецензија урезује ту тему у ваш мозак мало дубље.
Знам колико ово може да буде тешко ако сте природни гвожђе, али бићете изненађени колико брзо почињете да задржавате материјал када се потрудите да га редовно прегледате.
Користите неколико различитих ресурса
Најтежи аспект програмирања — барем за потпуно нове кодере — је чиста ширина детаља и нијанси које треба интернализовати. Док се та интернализација не догоди, бићете у сталном стању чешања по глави.
У зависности од језика, мораћете да запамтите стотине правила синтаксе (нпр. кључне речи, тачке и зарезе, размак). Неки језици су строжији, други мање, а трећи имају своје јединствене приступе синтакси који се не користе нигде другде. Све ово може бити збуњујуће ако немате претходно искуство кодирања.
Да не спомињемо све концептуалне информације које превазилазе појединачне језике. Теме као што су објектно оријентисано програмирање, системи ентитет-компонента и обрасци посматрача могу вам заиста завртети у глави када први пут покушате да их научите.
Раније сам делио ову илустрацију, али је толико тачна да је потребно поновити:
„Претпоставимо да вам је неко показао фотографију статуе. Можда вам даје довољно слике да добијете адекватан осећај статуе, али не бисте добили целу слику. Умањена фотографија би изгубила сложене детаље, док би увећана фотографија изгубила осећај перспективе. Међутим, уз додатне фотографије снимљене из других углова, заиста можете почети да видите пуноћа статуе у текстури, величини, детаљима, од напред-назад, са стране на страну, и од врха до дна."
Учење програмирања може бити изненађујуће произвољно. Сви би могли похвалити Ресурс А као најбољи начин за учење језика Кс, али можда вам то нема смисла. Можда сви мрзе ресурс Б, али баците један поглед и има савршеног смисла! Што се тиче неког другог, можда они зонирају када проучавају ресурсе А и Б, али имају велику корист од ресурса Ц.
Зато је толико важно да будете вољни да потрошите све врсте ресурса. Свако учи на другачији начин. Ако имате проблема са одређеном темом, потражите други ресурс. Можда ће вам тај више одговарати. Можда не.
Чак и ако мислите да разумете одређене теме, могуће је да се о томе може више научити. Такође је могуће да туђе објашњење заувек учврсти концепт у вашем уму. Никад се не зна, па зашто не потрошити што више ресурса?
Имајте на уму да игре могу бити критично користан ресурс! Погледајте ове забавне и образовне игре кодирања 9 најбољих игара кодирања за развијање вештина програмирањаИгре кодирања вам помажу да брже научите уз практичну праксу и искуство. Осим тога, они су забаван начин да тестирате своје вештине програмирања! Опширније .
Учите концепте док их научите
Постоји прелеп концепт у програмирању тзв отклањање грешака од гумене патке Најчуднији принципи програмирања за које никада нисте чулиСледећи принципи ће вас научити да будете мудри са својим кодом. Неки су чудни, а многи духовити, али су сви подједнако практични и важни. Пазите! Опширније , који описује технику објашњавања нечијег кода, ред по ред, неживој гуменој патки. Користи се када је одређени сегмент кода покварен, али за то нема очигледног разлога.
Зачудо, већина програмера има „Еуреку!“ тренутак усред објашњавања кода док изненада виде где се јавља грешка у логици кодирања. Вербализација покреће различите области мозга, приморавајући вас да сагледате проблем из новог угла.
Овај концепт се такође може користити да вам помогне да научите нови материјал. Можда сте наишли на овај популарни цитат који се често приписује Алберту Ајнштајну:
„Ако то не можете једноставно да објасните, не разумете довољно добро.
Са изузетком неких области које се баве напредним теоријским знањем, ова изрека важи. Што више разумете неку тему, боље сте опремљени да је објасните на такав начин да неко ко нема знања о тој теми може да је разуме.
Истина је и супротно од овога. Док покушавате да подучавате неку тему, наићи ћете на одређене концепте које не можете да објасните на јасан начин. Не само да је ово сјајан начин да се дијагностикују слабости у вашем знању, стварни процес проналажења правог објашњења може помоћи да учврстите концепт у вашем уму.
То се зове учење уз учење и у основи је преокрет у отклањању грешака у гуменој патки.
Е сад, не кажем да би требало заправо подучавати друге; радије, сваку нову тему програмирања коју научите, покушајте да је научите гуменом патку (или невидљивом пријатељу). Можда ће вам се у почетку чинити глупо, али можда ћете сматрати да је невероватно плодоносно када је у питању задржавање памћења.
Намерно вежбање чини савршеним
Појам талента је потпуно смеће. Нико не излази из материце као виолиниста, рвач или програмер светске класе. Наравно, неки људи би можда били склонији одређеним дисциплинама, али таленат без искуства је бескористан Не дозволите да ваши скривени таленти умру: 7 начина да одете и пронађете их поновоЛоша вест је да морате напорно да радите са намером да углачате своје скривене таленте. Добра вест је да постоји више могућности него икада да испљунете своје таленте. Опширније . Слично томе, напоран рад је увек вреднији од талента.
Да је речено, нису сви облици тешког рада једнаки. Малколм Гледвел је сковао злогласно правило 10.000 сати, које каже да морате уложити најмање 10 000 сати у предмет да бисте постали мајстор у њему. Иако је осећање можда истинито, многи људи погрешно тумаче оно што је покушавао да каже.
Укратко, посвећеност од 10.000 сати заправо не гарантује мајсторство. Знате изреку: „Вјежбање не чини савршеним. Савршена пракса чини савршеним.” Да би то било смислено, пракса мора бити намерна Желите да постанете стручњак за нешто? Пробајте намерну праксуПревише је лако осећати се ужаснуто када напорно покушавате да побољшате одређену вештину. Искористите моћ „намерне вежбе“ да бисте превазишли те бесне платое. Опширније . Мајсторство се може постићи само кроз 10.000 сати намерне вежбе.
Начин на који вежбате је много важнији од тога колико времена проводите вежбајући.
Читање је пасивно. Гледање лекција на Јутјубу је пасивно. Слушање подцаста је пасивно. Као почетник кодер, можда ћете бити у искушењу да летите од туторијала до туторијала, бавећи се предметом за предметом, а да не примените било шта од тог знања на практичан начин. Одуприте се овом искушењу.
Једна је ствар разумети пример пред вама, али је друга синтетизовати решење од нуле. Ако желите да убрзате процес учења, морате бити спремни да будете активни уместо пасивни. Активна пракса је једина врста која је битна на крају.
Експериментишите са личним пројектима
За мене је домаћи задатак био најгори део школе. То је само изгледало као сложен трик да се убије забава и заокупе ученици — што је, да будемо поштени, понекад било тачно. Али сада када погледам уназад, важност домаћег задатка коначно има смисла. То ме је натерало да новостечено знање применим на активан начин.
Ако сте уписани у курсеви и часови програмирања 11 најбољих сајтова за бесплатне онлајн курсеве компјутерског програмирањаКористећи ове бесплатне онлине курсеве компјутерског програмирања, можете постати одличан програмер без дипломе из рачунарства. Опширније , не потцењујте ефикасност домаћег задатка. Схватите то озбиљно и увек га третирајте као шансу да додатно учврстите оно што сте научили у дугорочном памћењу.
Али много пута домаћи задатак и даље није довољан. (А ако учите како да сами програмирате без стварног инструктора, вероватно немате никакав домаћи задатак за почетак.)
Шта је решење? Направите неколико споредних пројеката за бацање!
Замислите а неколико пројектних идеја 5 пројектних идеја које ће вам помоћи да брже научите програмирањеПостоји неколико начина да се олакша крива учења за програмирање. Прљајте руке и учите брже уз помоћне пројекте које можете започети било када. Поиграј се са ових пет. Опширније које желите да примените. За апсолутне почетнике, можете размислити о игри Тиц-Тац-Тое или Хангман. За искусне програмере који покушавају да науче нови оквир, покушајте да кодирате једноставну мобилну апликацију или веб игру. Све док вас то занима на личном нивоу, само напред!
Лепота овог приступа је двострука.
Прво, већа је вероватноћа да ће задржати вашу пажњу. Студије су показале да ученици боље уче када могу да се баве темама које их занимају. Управо то нуди лични пројекат. Имате крајњи циљ који заправо желите да постигнете, па је већа вероватноћа да ћете задржати информације које ће вас тамо довести.
Друго, нема притиска да успете. Иако би успех био добар, недостатак формалности вам омогућава да будете експериментални и креативни. Неизбежно ћете наићи на проблеме, али то је више као играње са Легом него као домаћи задатак. Забавније је и није толико стресно.
Опустите се и обележите све
Истина је да се ниједан програмер не сећа све научили су. Чак и након што неко време радите са одређеном библиотеком или оквиром, није неуобичајено ако не можете да се сетите сваке функције или променљиве са врха главе.
У ствари, покушај памћења свега може се завршити као огроман губитак времена и труда. Референтни листови постоје с разлогом. Зашто чувати целу енциклопедију у меморији када је можете једноставно отворити кад год вам затреба?
Дакле, када запамтити, а када референцирати?
Када је у питању концептуални материјал, увек га интернализујте најбоље што можете. Под тим мислим на разумевање теорије чак и ако не можете да је претворите у стварни код (а теорија треба да вам буде довољно јасна да бисте је јасно научили).
За све остало — као што су имена специфичних функција, листе параметара или чак језичке хировите — Не бих бринуо о везивању за памћење. Слободно пређите на референтни лист. Понекад ћете нешто спомињати тако често да то на крају запамтите. Ако се то деси, у реду. Ако не, и то је у реду.
Лично, имам стотине Интернет обележивача до разних АПИ-ја, водича и туторијала. Ако треба да применим неку врсту алгоритма за проналажење пута, могао бих да референцирам водич који ће ми помоћи да га кодирам пре него што поново заборавим на њега. Помаже да се разумеју основни концепти, али покушавам да не бринем о детаљима имплементације.
Последње мисли
Поновићу милион пута ако будем морао: програмирање је тешко и у реду је ако се борите са тим. Програмирам као хоби више од једне деценије и још увек се плашим када морам да научим нове концепте.
Немојте се тући ако не можете одмах да се сетите свега. Надамо се да ће вам горе наведени савети бити корисни, а чак и ако не, увек се можете ослонити на обележене референце као последње средство.
Да ли вам је програмирање тешко? Које трикове и савете знате који би могли бити од помоћи кодерима почетницима? Поделите своју мудрост са нама у коментарима испод!
Заслуге за слике: Бинарни програмер преко Схуттерстоцк-а, Гумица за брисање меморије преко Схуттерстоцк-а, Замагљени код преко Схуттерстоцк-а, Руббер Дуцки преко Схуттерстоцк-а, Дактилограф преко Схуттерстоцк-а, ПХП изворни код преко Схуттерстоцк-а, Фасцикле датотека преко Схуттерстоцк-а
Јоел Лее има Б.С. у рачунарству и преко шест година искуства у професионалном писању. Он је главни и одговорни уредник за МакеУсеОф.