Реклама
Програмирането е трудно. Единствените хора, които казват обратното, са тези, които имат години опит в кодирането под колана си. Добре е да бъдете претоварени! Има много да научите и вероятно ще забравите нещата толкова бързо, колкото ги научите. Повярвайте ми: това е нормално.
Но това, че е нормално, не означава, че не е разочароващо. Истината е казана, научаване как да кодирате Как да се научите да програмирате без целия стресМоже би сте решили да се занимавате с програмиране, независимо дали за кариера или просто като хоби. Страхотен! Но може би започвате да се чувствате претоварени. Не толкова страхотно. Ето помощ, за да улесните вашето пътуване. Прочетете още може да бъде изключително стресиращо, ако не подходите към него с правилното мислене и отношение.
Искате да научите този нов език, библиотека или рамка възможно най-скоро, нали? Това е разбираемо. За щастие, има няколко съвета, които могат да ви помогнат да запазите по-добре цялата тази тежка програмна информация, която продължава да лети в едното ухо и направо в другото.
Без повече Cram Sessions
Никой не иска да го чуе, но тъпченето е най-лошият начин да се научите да програмирате. Ако си нещо като мен, тъпченето беше твое начин на действие навсякъде в училище и университет. Това е единственият начин да знаете как да учите.
Но се поучи от грешките си: колкото повече се опитвате да натъпчете, толкова по-малко ще запомните. Това до голяма степен важи за всеки предмет, основан на знания, но е особено вярно, когато става въпрос за програмиране.
Основата на това твърдение идва от проучване от 2008 г от Калифорнийския университет, Сан Диего:
„Студентите се представят по-добре, когато разпределят учебните си сесии, а не когато се опитват да натъпчат всичко в своите ноги по време на едно заседание.“
Защо? Най-вероятно поради ефект на серийната позиция:
„Ефектът на серийната позиция е склонността на човек да си спомня най-добре първия и последния елемент от поредицата, а средните елементи – най-зле.
С други думи: във всяка учебна сесия е по-вероятно да запазите информацията, която сте научили наблизо началото и края на сесията и е по-вероятно да забравите информацията от средата на сесия.
Искате да увеличите максимално броя на началото и края. Ето защо е по-добре да имате няколко кратки сесии вместо няколко дълги, когато става въпрос за учене и усвояване на нов материал.
Следващия път, когато седнете да научите код, разглеждайте тема по тема и правете кратка почивка между всяка тема. (Просто се уверете, че почивките ви да не се превърнат в отлагане!)
Преглед, преглед, преглед
Друга причина, поради която тъпченето е противоположно на дългосрочното задържане на знания, е, че паметта избледнява с времето. Това не винаги е вярно – сигурен съм, че всички имаме няколко спомени от детството, които никога няма да изчезнат – но изглежда е общият случай за спомени, които не са обвързани с емоции.
Има известен дебат дали самата памет се разпада поради времето (теория на разпада) или просто се изтласква и заменя с нови спомени с течение на времето (теория на интерференцията). За коя и теория да се абонирате, резултатът е, че по-старите спомени е по-вероятно да изчезнат.
Това е мястото, където прегледът влиза в игра.
Мислете за това като за разходка през гора от спомени. Всеки път, когато искате да получите достъп до памет, трябва да го направите проследяване на невронния път за да го намеря. Всеки път, когато проследите този спомен, пътят се гравира малко повече - точно както естествено се образува мръсна пътека, когато хората вървят по същия път отново и отново. Ако спрете да вървите по пътеката, тя може да изчезне и споменът се изгубва някъде в гората.
Като оставим настрана цялата поп психология, ето изводът: когато става въпрос за програмиране, не е достатъчно да научите тема само веднъж или два пъти. Трябва да го преразгледате десетки или дори стотици пъти. Всеки преглед врязва тази тема в мозъка ви малко по-дълбоко.
Знам колко трудно може да бъде това, ако сте естествено тъпчене, но ще се изненадате колко бързо започвате да задържате материала, след като положите усилия да го преглеждате редовно.
Използвайте няколко различни ресурса
Най-трудният аспект на програмирането - поне за чисто новите кодери - е чистата широта от детайли и нюанси, които трябва да бъдат интернализирани. Докато това интернализация не се случи, вие ще бъдете в постоянно състояние на чешене по главата.
В зависимост от езика ще трябва да запомните стотици синтактични правила (например ключови думи, точки и запетая, интервали). Някои езици са по-строги, други по-малко, а трети имат свои собствени уникални подходи към синтаксиса, които не се използват никъде другаде. Всичко това може да бъде объркващо, ако нямате предишен опит в кодирането.
Да не говорим за цялата концептуална информация, която надхвърля отделните езици. Теми като обектно-ориентирано програмиране, системи на обект-компоненти и модели на наблюдатели наистина могат да накарат главата ви да се завърти, когато се опитате да ги научите.
Споделял съм тази илюстрация и преди, но тя е толкова актуална, че си струва да повторя:
„Да предположим, че някой ви е показал снимка на статуя. Може да ви предостави достатъчно изображение, за да получите адекватно усещане за статуята, но няма да получите цялата картина. Увеличена снимка ще загуби сложни детайли, докато увеличена снимка ще загуби усещането за перспектива. Въпреки това, с допълнителни снимки, направени от други ъгли, наистина можете да започнете да виждате пълнота на статуята в текстура, по размер, в детайли, отпред назад, отстрани и отстрани и отгоре до долу.”
Да се научиш да програмираш може да бъде изненадващо произволно. Всеки може да похвали ресурс А като най-добрия начин да научите език X, но може би няма смисъл за вас. Може би всички мразят Ресурс Б, но хвърляте един поглед и става напълно логично! Що се отнася до някой друг, може би те се разделят, когато изучават ресурси А и Б, но се възползват много от ресурс C.
Ето защо е толкова важно да сте готови да консумирате всякакви ресурси. Всеки се учи по различен начин. Ако имате проблеми с определена тема, потърсете друг ресурс. Може би този ще е по-подходящ за вас. Може би не.
Дори ако смятате, че разбирате определени теми, е възможно да има още какво да научите за това. Възможно е също обяснението на някой друг да затвърди концепцията в ума ви завинаги. Никога не се знае, така че защо да не консумирате толкова ресурси, колкото можете?
Имайте предвид, че игрите могат да бъдат критично полезен ресурс! Вижте тези забавни и образователни игри за кодиране 9-те най-добри игри за кодиране за изграждане на умения за програмиранеИгрите за кодиране ви помагат да учите по-бързо с практическа практика и опит. Освен това те са забавен начин да тествате уменията си за програмиране! Прочетете още .
Учете понятия, докато ги научавате
Има красива концепция в програмирането, наречена отстраняване на грешки в гумена патица Най-странните принципи на програмиране, за които никога не сте чувалиСледните принципи ще ви научат да бъдете мъдри с кода си. Някои са странни, а много от тях са хумористични, но всички са еднакво практични и важни. Внимавайте! Прочетете още , който описва техниката за обясняване на нечий код, ред по ред, на неодушевено гумено пате. Използва се, когато определен сегмент от кода е счупен, но няма очевидна причина за това.
Колкото и да е странно, повечето програмисти имат "Еврика!" момент в средата на обяснението на кода, когато изведнъж виждат къде възниква грешката в логиката на кодиране. Вербализацията задейства различна област на мозъка, принуждавайки ви да видите проблема от нов ъгъл.
Тази концепция може да се използва и за да ви помогне да научите нов материал. Може да сте попаднали на този популярен цитат, който често се приписва на Алберт Айнщайн:
„Ако не можете да го обясните просто, значи не го разбирате достатъчно добре.
С изключение на някои области, които се занимават с напреднали теоретични знания, тази поговорка е вярна. Колкото повече разбирате дадена тема, толкова по-добре сте подготвени да я обясните по такъв начин, че някой, който не знае посочената тема, все още може да я разбере.
Обратното на това също е вярно. Докато се опитвате да преподавате дадена тема, ще срещнете определени понятия, които не можете да обясните по ясен начин. Това не само е страхотен начин за диагностициране на слабости в знанията ви, но и действителният процес на намиране на правилното обяснение може да помогне за укрепване на концепцията в ума ви.
Нарича се учене чрез преподаване и по същество е обрат в отстраняването на грешки с гумено пате.
Сега не казвам, че трябва всъщност учи другите; по-скоро всяка нова тема за програмиране, която научите, опитайте да я научите на гумено пате (или невидим приятел). В началото може да ви се стори глупаво, но може да ви се стори невероятно плодотворно, когато става въпрос за запазване на паметта.
Умишлената практика прави перфектни
Представата за талант е пълна глупост. Никой не излиза от утробата като цигулар от световна класа, борец или програмист. Разбира се, някои хора може да са по-склонни към определени дисциплини, но талант без опит е безполезен Не позволявайте на вашите скрити таланти да умрат: 7 начина да отидете и да ги намерите отновоЛошата новина е, че трябва да работите усилено с намерението да излъскате скритите си таланти. Добрата новина е, че има повече възможности от всякога да изплюете талантите си. Прочетете още . По същия начин упоритата работа винаги е по-ценна от таланта.
като се казва, не всички форми на упорита работа са равни. Малкълм Гладуел измисли прословутото правило за 10 000 часа, което казва, че трябва да инвестирате поне 10 000 часа в даден предмет, за да станете майстор в него. Въпреки че чувството може да е вярно, много хора тълкуват погрешно това, което се опитва да каже.
Накратко, ангажиментът от 10 000 часа всъщност не гарантира майсторство. Знаете поговорката: „Практиката не прави съвършенство. Перфектната практика прави съвършенство." За да има смисъл, практиката трябва да е умишлена Искате ли да станете експерт в нещо? Опитайте преднамерена практикаТвърде лесно е да се почувстваш унил, когато упорито се опитваш да подобриш определено умение. Използвайте силата на „преднамерената практика“, за да преодолеете тези вбесяващи плата. Прочетете още . Майсторството може да се постигне само чрез 10 000 часа умишлена практика.
Начинът, по който практикувате, е много по-важен от това колко време прекарвате в практикуване.
Четенето е пасивно. Гледането на уроци в YouTube е пасивно. Слушането на подкасти е пасивно. Като начинаещ кодер може да се изкушите да пърхате от урок на урок, справяйки се с тема след тема, без всъщност да прилагате някое от тези знания по практически начин. Устоявайте на това изкушение.
Едно е да разбереш пример пред теб, но друго е да синтезираш решение от нулата. Ако искате да ускорите процеса на обучение, трябва да сте готови да бъдете активни вместо пасивни. Активната практика е единственият вид, който има значение в крайна сметка.
Експериментирайте с лични проекти
За мен домашните бяха най-лошата част от училището. Просто изглеждаше като сложен трик за убиване на забавлението и задържане на учениците - което, за да бъдем честни, понякога беше вярно. Но сега, когато погледна назад, важността на домашните най-накрая придобива смисъл. Принуди ме активно да прилагам новопридобитите знания.
Ако сте записани в курсове и уроци по програмиране 11-те най-добри сайта за безплатни онлайн курсове по компютърно програмиранеИзползвайки тези безплатни онлайн курсове по компютърно програмиране, можете да станете страхотен кодер без диплома по компютърни науки. Прочетете още , не подценявайте ефикасността на домашната работа. Вземете го сериозно, като винаги го третирайте като шанс да закрепите допълнително наученото в дългосрочната памет.
Но много пъти домашните все още не са достатъчни. (И ако се учите как да програмирате сами без действителен инструктор, вероятно нямате никаква домашна работа за начало.)
Какво е решението? Създайте няколко странични проекта за еднократни!
Помислете за а малко идеи за проекти 5 идеи за проекти, които да ви помогнат да научите по-бързо програмиранеИма няколко начина да облекчите кривата на обучение за програмиране. Изцапайте ръцете си и се учете по-бързо със странични проекти, които можете да започнете по всяко време. Играйте си с тези пет. Прочетете още които искате да приложите. За абсолютни начинаещи може да помислите за игра на Tic-Tac-Toe или Hangman. За опитни програмисти, които се опитват да научат нова рамка, опитайте да кодирате просто мобилно приложение или уеб игра. Стига да ви интересува в личен план, направете го!
Красотата на този подход е двойна.
Първо, по-вероятно е да задържи вниманието ви. Проучванията показват, че учениците учат по-добре, когато могат да преследват теми, които ги интересуват. Точно това предлага личен проект. Имате крайна цел, която всъщност искате да постигнете, така че е по-вероятно да запазите информацията, която ще ви отведе до там.
Второ, няма натиск да успеете. Въпреки че успехът би бил хубав, липсата на формалност ви позволява да бъдете експериментални и креативни. Неизбежно ще се сблъскате с проблеми, но това е по-скоро като да играете с Lego, отколкото като домашна работа. По-забавно е и не е толкова стресиращо.
Отпуснете се и маркирайте всичко
Истината е, че никой програмист не помни всичко те са научили. Дори след като сте работили с определена библиотека или рамка известно време, не е необичайно, ако не можете да си спомните всяка функция или променлива от върха на главата си.
Всъщност опитът да запомните всичко може да се окаже огромна загуба на време и усилия. Референтните листове съществуват с причина. Защо да запомните цяла енциклопедия, когато можете просто да я отворите, когато имате нужда?
И така, кога да запомняте и кога да препращате?
Когато става въпрос за концептуален материал, винаги го интернализирайте доколкото е възможно. Под това имам предвид разбирането на теорията, дори ако не можете да я конвертирате в действителен код (а теорията трябва да ви е достатъчно ясна, за да я преподавате ясно).
За всичко останало - като имена на специфични функции, списъци с параметри или дори езикови странности - Не бих се притеснявал да се ангажирам с паметта. Чувствайте се свободни да отложите на справочния лист. Понякога ще споменавате нещо толкова често, че в крайна сметка го запомняте. Ако това се случи, добре. Ако не, това също е добре.
Лично аз имам стотици интернет отметки към различни API, ръководства и уроци. Ако трябва да внедря някакъв алгоритъм за намиране на път, мога да се позова на ръководство, което да ми помогне да го кодирам, преди да забравя отново за него. Помага да се разберат основните концепции, но се опитвам да не се тревожа за подробности за изпълнението.
Последни мисли
Ще го повторя милион пъти, ако трябва: програмирането е трудно и е добре, ако се борите с него. Програмирам като хоби от повече от десетилетие и все още се страхувам, когато имам нови концепции за научаване.
Не се самонабивайте, ако не можете да си спомните всичко веднага. Надяваме се, че горните съвети ще се окажат полезни за вас и дори да не го направят, винаги можете да разчитате на отбелязани препратки като последна мярка.
Смятате ли, че програмирането е трудно? Какви трикове и съвети знаете, които могат да бъдат полезни за начинаещи кодери? Споделете вашата мъдрост с нас в коментарите по-долу!
Кредити за изображения: Двоичен програмист чрез Shutterstock, Eraser Memory Eraser чрез Shutterstock, Замъглен код чрез Shutterstock, Rubber Ducky чрез Shutterstock, Keyboard Typist чрез Shutterstock, Изходен код на PHP чрез Shutterstock, Файлови папки чрез Shutterstock
Джоел Лий има бакалавърска степен по компютърни науки и над шест години професионален опит в писането. Той е главен редактор на MakeUseOf.