Как побыстрее научиться программировать

0
1977
views

Перевод статьи «How to Use Deliberate Practice to Learn Programming More Efficiently».

Photo by manny PANTOJA on Unsplash

Я искренне верю, что научиться программировать может каждый. В конечном итоге, умение писать код — это навык, а приобретение навыков доступно всем.

Порой кажется, что становление специалиста это какая-то магия, но на самом деле нужно просто четко следовать определенному пути.

Андерс Эрикссон, профессор университета штата Флорида, является одним из признанных авторитетов в сфере исследования экспертизы. Он изучает, как люди приобретают навыки и как они становятся экспертами.

За годы исследований профессор Эрикссон пришел к выводу, что в выработке навыков ключевое значение имеет количество времени, потраченное на продуманную практику (англ. Deliberate Practice).

Он считает, что «к совершенствованию ведет не что иное, как правильная практика в течение достаточно долгого периода времени».

Я уверен, что этот подход полностью применим и к изучению программирования.

Продуманная практика помогла мне лично, и я уверен, что вам она тоже поможет изучать кодинг более эффективно.

Ниже я объясню каждый аспект этого подхода и расскажу, как использовать его применительно к освоению программирования.

Деконструкция

Первый шаг продуманной практики — деконструкция и анализ навыка, который вы хотите приобрести.

Деконструкция предполагает, что вы смотрите на свою цель с высоты птичьего полета и разбиваете путь к ней на маленькие кусочки. При этом вам нужно найти кратчайший путь от той точки, на которой вы находитесь, до той, к которой стремитесь.

Разобрать желаемый навык на составные части можно двумя способами. Вы можете сделать это самостоятельно или же воспользоваться опытом людей, которые уже делали это до вас и успешно приобрели нужный навык.

Если речь идет об изучении программирования, я советую полагаться на знания и опыт других разработчиков, а не изобретать велосипед самостоятельно.

Большая часть материала на учебных сайтах (вроде freeCodeCamp) создана людьми, которые уже приложили усилия, чтобы разобрать учебный процесс на составные части. Вы можете воспользоваться их опытом при планировании собственного пути.

Просмотрите несколько сайтов, посвященных программированию, почитайте содержание разных книг по этой теме (для этого не надо книги покупать, в содержание можно заглянуть бесплатно даже на сайтах по продаже книг). Почитайте статьи в блогах или спросите мнение друзей.

Спустя некоторое время у вас появится понимание того, каким будет наилучший путь к вашей цели, и вы сможете составить собственный учебный план.

Не сбрасывайте со счетов свой интерес к темам, которые нужно будет изучить (или отсутствие такого интереса). Когда материал вам не интересен, очень сложно добиться хорошей скорости в учебе.

Если же материал и вам интересен, и эксперты его рекомендуют, то его изучение будет наиболее эффективным.

Не старайтесь продумать свой учебный путь до мельчайших подробностей и спланировать его идеально. Штука в том, что идеальный путь найти невозможно.

Лучше немного осмотреться, начать хоть с чего-нибудь, а затем по ходу дела корректировать направление.

Photo by Wes Hicks on Unsplash

Растяжимые цели

Следующий важный компонент продуманной практики это создание растяжимых целей.

Растяжимая цель (англ. stretch goal) это маленькая задача, для выполнения которой вам нужно лишь немного больше знаний и умений, чем у вас уже есть.

Создание растяжимых целей это не просто составление списка задач, которые необходимо выполнить. Куда важнее структурировать учебу таким образом, чтобы постоянно растягивать границы своих знаний.

Люди по природе своей предпочитают заниматься легкими задачами, чем-то, что могут делать автоматически.

Но если систематически и в течение достаточно долгого времени выталкивать себя из зоны привычного, наше тело привыкает к такому поведению и оно становится привычкой.

А растяжимые цели для того и нужны, чтобы для их достижения приходилось покидать зону привычного и заставлять тело адаптироваться.

Ключевой момент в создании растяжимой цели — задача должна быть сложной, но при этом выполнимой.

Если цель слишком сложна, вы растеряетесь и не будете знать, куда двигаться дальше. А если вам будет легко, вы не будете развиваться так быстро, как могли бы (или совсем перестанете продвигаться вперед).

Поиск золотой середины требует времени.

Поначалу растяжимой целью может быть даже отдельный урок на freeCodeCamp. Со временем ею может стать создание кнопки на сайте-портфолио без помощи Google.

Главное не забывать, что если задача кажется легкой, то вы, вероятно, недостаточно сильно себя подталкиваете.

Концентрация и внимание

Концентрация имеет большое значение для запоминания информации и выработки навыков.

Когда вы пытаетесь запечатлеть что-то новое в своем мозгу, сила «впечатывания» напрямую зависит от интенсивности концентрации.

Если концентрация слабая, новые знания будут менее стойкими, и в результате учеба замедлится.

У людей, которым удалось быстро научиться программировать, есть нечто общее: они способны в течение долгого времени фокусироваться на задаче, которой заняты.

Подумайте о том, как практикуются лучшие программисты. Вероятно, они не проверяют свой телефон каждые пять минут. Скорее всего, они полностью погружаются в свою задачу.

Чтобы иметь хорошую концентрацию внимания, нужно устранить все нежелательные отвлекающие факторы.

«Отвлечения» делятся на два вида: внешние и внутренние. Чтобы уменьшить влияние внешних, можно перевести телефон в беззвучный режим, заниматься в тихой комнате, пользоваться блокировщиками сайтов.

Что касается внутренних отвлечений, — вы должны не позволять вашим мыслям поглощать ваше время. Это достигается, например, путем медитаций или ведением записной книжки, где можно записывать все, что приходит в голову.

В общем, вам нужно создать для себя неотвлекающую среду и иметь план действий на случай, когда вас все же что-то отвлечет.

Вы вероятно, хорошо знаете, что именно вас отвлекает от учебы. Но если хотите получить независимую оценку того, на что тратите свое время, попробуйте использовать что-то вроде RescueTime.

Улучшение концентрации не происходит моментально: это процесс. Сначала старайтесь достигнуть полной концентрации хоть на несколько минут. Со временем увеличивайте продолжительность фокусировки.

Когда вы продуманно практикуетесь в своих навыках программирования, лучше быть на 100% сосредоточенным, пускай даже меньшее количество времени, чем сохранять фокус дольше, но на уровне 70%.

Мы живем в мире, в котором все вокруг пытается привлечь наше внимание. Кажется, что сохранять концентрацию в таких условиях невозможно, но вы должны найти способ сделать это.

Photo by Ioana Tabarcea on Unsplash

Собственно практика

Единственный способ начать делать что-то лучше — делать это.

Люди часто путают приобретение знаний и выработку навыков. Знания полезны, но они не заменяют умения что-то делать.

Знания зачастую дают вам фальшивое ощущение прогресса. Вы можете просмотреть сотню обучающих роликов и думать, что уже способны создать собственный сайт. Но когда вы попробуете сделать это самостоятельно, может оказаться, что вам это не по силам.

Это подобно разнице между просмотром футбольных матчей и умением играть в футбол. Просмотры помогают играть, но нельзя стать хорошим футболистом, просто болея за любимую команду.

Чтобы выработать нужные навыки, нужно применять знания на практике.

Это не всегда просто. Когда вы практикуетесь в чем-то новом, вы часто ошибаетесь, а это ранит ваше самолюбие и заставляет чувствовать себя некомпетентным. В результате возникает желание сдаться или откатиться в зону привычного, где у вас все получается.

К сожалению, изучить что-то новое, не ощущая себя некомпетентным (по крайней мере поначалу), невозможно. К этому просто нужно привыкнуть.

Как уже отмечалось, в зоне комфорта вы не развиваетесь. Поэтому, начав изучать программирование, не удивляйтесь, что чувствуете себя некомфортно. Дискомфорт это верный признак того, что вы движетесь в верном направлении.

Обязательно тестируйте полученные знания на практике. Не увлекайтесь просмотром видео и чтением руководств. Садитесь за клавиатуру и пишите какой-нибудь код, который сможете запустить.

Обратная связь

Стать лучше в чем бы то ни было, не имея обратной связи, совершенно невозможно.

Представьте, что вы пытаетесь научиться играть в гольф, но не видите, куда падает мячик. В таких условиях у вас не будет ни единого шанса понять, становится ли ваша игра лучше.

Фидбэк это способ коммуникации с реальностью. Он позволяет вам увидеть расстояние между тем, что, как вам кажется, вы знаете, и тем, что вы знаете на самом деле.

Есть два способа получения обратной связи. Вы можете получить ее в ходе самопроверки или от кого-то еще.

При самопроверке вы можете сверить собственный вариант решения с вариантами, опубликованными другими людьми.

Когда вы пытаетесь решить свою проблему и заходите на сайты вроде Stack Overflow или GitHub, такая самопроверка происходит естественным образом. То есть, обнаруживая разницу между собственным решением и правильным ответом, вы получаете фидбэк.

Посещая сайты вроде Stack Overflow, старайтесь уделить время осмыслению правильного решения. Постарайтесь понять, почему этот кусок кода работает и чем он отличается от вашего. Бездумный копипаст лишает вас полезной обратной связи, благодаря которой вы могли бы улучшить свои навыки.

Также можно читать чужой код на GitHub и сравнивать его со своим (своим кодом или своим текущим пониманием того, как следует писать код).

Похожей стратегией пользовался Бенджамин Франклин, когда работал над улучшением своих навыков письма. Он читал и пару раз перечитывал какую-нибудь статью в своей любимой газете, а затем пытался разобраться, какими приемами пользовался автор. Затем он откладывал газету и пытался самостоятельно написать статью подобным образом. После написания своей версии он сравнивал результат с оригиналом и анализировал свою работу.

Второй способ получить обратную связь — отдать свой код на проверку более опытному разработчику.

Когда ваш код просматривает другой человек, это может помочь в решении отдельных проблем, а также помочь вернуться на верный путь, если окажется, что вы двигаетесь не в том направлении.

Дать кому-то заглянуть в свой код может быть страшно (порой страшно даже заговорить с более опытным разработчиком). Никому из нас не нравится выглядеть дураком. Но если вы сумеете побороть свой страх, полученный фидбэк может принести вам много пользы.

Вспоминая о том, как учился программированию (я самоучка), я сожалею, что недостаточно заботился о получении обратной связи. Мой код был ужасно беспорядочным, а я зря тратил много времени на совершенно неважные вещи.

Фидбэк от более опытного разработчика сэкономил бы мне много времени и сил. Старший товарищ мог бы быстрее увидеть, что я делаю не так, и наставить меня на верный путь.

Считайте фидбэк опытного разработчика своеобразным компасом. Он не будет подталкивать вас в нужном направлении, но само направление точно покажет.

Photo by Jamie Street on Unsplash

Реакция на обратную связь

Фидбэк бесполезен, если вы никак не применяете его.

Изучение программирования похоже на проход через темную комнату. Вы начинаете идти, натыкаетесь на мебель, корректируете свой маршрут и делаете новую попытку.

Получив обратную связь, обдумайте разницу между тем, что вы хотели сделать, и тем, что у вас в итоге получилось. Учтите эту разницу и внесите коррективы в свои действия, чтобы продвинуться вперед.

Не корректируя свои действия, вы не совершенствуетесь.

Чтобы неправильно написанная программа заработала, нужно внести изменения в код. Аналогично на макроуровне нужно вносить изменения в свои подходы.

Когда у нас что-то не получается, мы инстинктивно начинаем больше стараться. Но это эффективно только до определенного предела.

Если вам не удается достичь нужного результата, попробуйте посмотреть на вещи под другим углом. Возможно, придется поэкспериментировать, чтобы сделать, наконец, правильно.

Повторение

Проделать что-либо единожды недостаточно. Наш мозг — не компьютер. Изучив что-то новое, мы забываем изученное довольно быстро. Повторение позволяет закрепить информацию в памяти.

Когда мы что-то повторяем, мы подаем мозгу сигнал, что новая информация или новое поведение имеют значение, а значит, забывать их не надо.

Стадия повторения при наработке навыков непроста. А никто и не обещал, что будет просто! Вы настойчиво пытаетесь перепрограммировать мозг, а ваше тело стремится заниматься привычными вещами.

Поэтому, чтобы добиться прогресса в учебе, приходится постоянно прилагать усилия.

Но при этом вы потерпите неудачу только если сдадитесь. А если проявите настойчивость и будете повторять важный материал, то в конечном итоге начнете хорошо разбираться в нем.

Это может быть очень трудно, однако вам непременно нужно выработать у себя привычку к постоянной учебе. Без нее научиться программировать практически нереально.

Заключение

Процесс выработки новых навыков простой, но не легкий. В этом процессе ваш злейший враг — вы сами.

Старые привычки тяжело ломать, а каждая новая дается с огромным трудом.

Сохраняйте концентрацию, подталкивайте себя вперед, корректируйте направление на основе фидбэка. Повторяйте все это в цикле, пока не достигнете желаемого результата.

И если вы будете придерживаться приведенных здесь советов, вы удивитесь, насколько быстро вам удастся приобрести навыки программирования.

Удачи!

ОСТАВЬТЕ ОТВЕТ

Please enter your comment!
Please enter your name here