Как научиться программировать? Правильный подход — ваше всё

Перевод статьи «How to Learn Coding: Approach is Everything».

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

Можно месяцами ходить в спортзал и так и не увидеть никаких результатов — просто потому, что не умеешь правильно заниматься. Большинству из нас это знакомо.

То же самое касается программирования.

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

А это больно.

Это заставляет задуматься над тем, нельзя ли учиться быстрее, лучше, эффективнее.

Почему же нельзя? Можно!

Но начнем с начала.

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

Двухминутные руководства

Если я скажу вам, что существует двухминутное руководство, которое поможет вам моментально овладеть JavaScript, вы обратите на него внимание?

По сути, не важно, ответите вы «да» или «нет».

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

Вот как вы становитесь мастером в чем-либо:

  1. Начинаете с огромного куска новой информации.
  2. Сравниваете новые знания с тем, что уже изучали раньше.
  3. Замечаете, чем новое отличается от старого.
  4. Закрепляете новые знания, создавая что-нибудь с нуля.
  5. Наконец, учите кого-то еще.

На это уходят годы.

Поэтому разные хитроумные способы срезать путь (взятые по отдельности) просто не работают.

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

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

Как быть с трудностями?

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

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

На самом деле от багов не убежать. Вы просто можете натренироваться находить их быстрее. Эффективный программист, если говорить по правде, — попросту эффективный детектив по багам.

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

Исследования в сфере нейробиологии показывают, что утверждение «практика ведет к совершенству» не совсем верно. Осознанная практика, направленная на оттачивание определенного навыка — вот что вас совершенствует.

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

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

  1. Пишете код.
  2. Дебажите.
  3. Боретесь с трудностями.
  4. Преодолеваете их.
  5. Повторяете весь процесс.

Чем раньше вы это примете, тем эффективнее станет ваша учеба.

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

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

Вы не идиот, просто учитесь не на том уровне

Давайте начнем с маленькой аналогии.

Представьте, что вы учите английский язык (язык исключений).

Вы начинаете с руководства, которое учит писать большие слова вроде ELEPHANT.

Но это не срабатывает.

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

Но вам все равно трудно.

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

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

Вернемся к программированию.

Некоторые люди набрасываются на руководства для начинающих, чтобы сразу начать изучать React или Angular (ELEPHANT).

Затем они понимают, что ничего не понимают, и переходят к изучению JavaScript (ANT) в качестве вступления в мир программирования.

Но им все равно ничего не понятно, поэтому они просто сдаются.

«С меня довольно. Программирование это не мое».

Но на самом деле они просто работали над более продвинутым материалом, чем следовало.

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

Мне кажется, это нечасто советуют, но если вводные курсы для вас сложны, начните со вводных курсов для детей.

Нет ничего постыдного в том чтобы найти себе курс попроще и начать с него.

Учитесь при помощи таких инструментов как:

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

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

Если вы сначала усвоите алфавит:

  • вы получите уверенность в себе, необходимую для написания слова ANT;
  • вашим следующим большим шагом станет написание слова ELEPHANT;
  • а когда-нибудь дойдет и до слов вроде pneumonoultramicroscopicsilicovolcanoconiosis (самое длинное искусственно созданное слово английского языка, — прим. перев.).

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

Если вы учитесь на правильном уровне, ваша учеба протекает более эффективно.

Поднимите свою учебу на новый уровень при помощи растянутых по времени повторений

Эта техника основана на исследованиях в сфере нейробиологии. Я объясню коротенько.

Как это работает:

  1. Вы учите что-то.
  2. Стараетесь это вспомнить через 48 часов.
  3. Повторяете через 72 часа.

Благодаря этому:

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

Я написал про 48 и 72 часа в качестве примера, но вы можете растянуть границы на дни и даже недели. Самое важное тут — сменить подход и не просто выучить один раз и больше не возвращаться, а целенаправленно выделить время на возвращение и повторение.

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

1 проект > 10 hello world

Следите за тем, чтобы не застрять в hello world-ах навечно. Я понимаю, что выполнять простые упражнения приятно:

print “I am awesome”
print “You’re cool”
print “Wait, are we cool?” 
print “OMG! Guys! Like I can so print all day” 

Но буду откровенен: вашему развитию это не способствует.

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

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

«Но я не знаю, как проекты может выполнить новичок!»

Не волнуйтесь. Вот вам три примера:

  • Обмен валют. Создайте программу, которая конвертирует одну валюту в другую, например, индийские рупии в доллары, фунты или евро.
  • Генератор паролей. Создайте программу, которая принимает от пользователя какие-то слова и генерирует на их основе надежный пароль.
  • Игра в угадайку. Попросите пользователя угадать число от 1 о 50. Если он введет число вне этого диапазона, выбросите сообщение об ошибке и попросите ввести другое число. При вводе неверного числа спрашивайте пользователя, хочет ли он продолжать играть или предпочтет выйти из игры. Наконец, когда пользователь угадает число, поздравьте его и выведите число предпринятых им попыток.

Если вам кажется, что это скучно, вот еще список подходящих проектов для начинающих.

Помните, речь идет не о том, чтобы потешить свое самолюбие, а об учебе и росте.

Мотивация подобна горячему душу

Горячий душ это приятно, попробуйте сами.

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

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

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

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

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

Что это может быть?

Например, специальные движения вроде 30daysofcode или 100DaysOfCode.

Что-нибудь. Что угодно, вынуждающее вас работать в скучные периоды.

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

Учеба это бесконечный процесс

Людей редко учат учиться. Обычно все фокусируются на том, что именно нужно учить. Но умение учиться имеет критически важное значение. Я советую обратить внимание на специальный курс на Coursera — «Learning How to Learn: Powerful mental tools to help you master tough subjects».

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

Но тут все сложнее.

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

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

[customscript]techrocks_custom_after_post_html[/customscript]

[customscript]techrocks_custom_script[/customscript]

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Прокрутить вверх