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

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

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

В этот момент вы, вероятно, спрашиваете себя: «Это должно быть так сложно?».

И не зря.

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

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

Путь обучения программированию.

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

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

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

Ну более-менее.

Дело в том, что процесс далеко не линейный.

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

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

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

Это только усугубляется, когда вы входите в третью фазу, метко названную Пустыня отчаяния. Объем, который вам нужно знать, даже больше, чем на втором этапе, и именно здесь становятся необходимостью такие концепции, как объектно-ориентированное программирование, модульность, фреймворки и многие другие. И снова эта обратная зависимость между количеством знаний, которые вам нужно получить, и количеством доступных вам ресурсов становится еще хуже. Возможно, это даже время, когда вы начнете платить за МООК или учебные курсы в надежде найти конец пустыне.

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

Почему ты не можешь научиться программировать.

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

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

Дела пошли тяжело, и ваша мотивация вышла из-под контроля.

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

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

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

Как этого избежать:

  • Найдите время, чтобы напомнить себе, почему вы впервые заинтересовались обучением программированию. Возможно, это может означать сделать перерыв в изучении новых концепций и вместо этого сосредоточиться на отработке навыков, с которыми вы уже знакомы. Вернувшись к основам, вы можете снова сосредоточить свое внимание.
  • Сосредоточьтесь на том, чтобы не отвлекаться от трудной задачи. Вместо этого разложите доску и начните с разбивки задачи на простые шаги. Затем спросите себя, каким должен быть результат каждого шага. Напишите по-английски, чего вы пытаетесь достичь, а затем переведите это в хорошо знакомый вам код. Неважно, если это не идеальное решение. Вы можете вернуться и исправить это позже, если найдете способ лучше.
  • Ставьте измеримые цели. Несмотря на то, что аббревиатура заставляет меня съеживаться, есть некоторая логика в постановке конкретных, измеримых, достижимых, реалистичных и своевременных (SMART) целей. Разделение целей обучения на управляемые части поможет вам сосредоточить обучение и не даст вам перегружать себя огромным объемом знаний, которые вам в конечном итоге придется усвоить.

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

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

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

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

  • Если вы визуально обучаетесь: используйте блок-схемы, фрагменты кода, интеллект-карты и видео. Не бойтесь разложить доску, чтобы наметить идеи, прежде чем записывать их в свой код.
  • Если вы слушаете аудиторию: настройтесь на видеоролики Youtube, онлайн-курсы с видеороликами или лекции MOOC, чтобы послушать инструктора, который проведет вас через процесс кодирования. Кроме того, попробуйте научить кого-нибудь программировать. Это может быть ваша мама, ваша собака или ваш кактус. Обучение путем обучения полезно для слушателей, которые затем закрепляют концепции, делясь знаниями.
  • Если вы изучаете чтение / письмо: прочтите документацию по языку программирования, сообщения в блогах, статьи на веб-сайтах, фрагменты кода или репозитории кода GitHub. Кроме того, попробуйте написать свои собственные сообщения в блоге или статьи с практическими рекомендациями, чтобы попрактиковаться в том, что вы только что узнали.
  • Если вы изучаете кинестетику: во время просмотра видео или чтения сообщения в блоге следуйте инструкциям и запишите код в своей собственной среде IDE. Кроме того, создавайте свои собственные проекты на основе исходного кода, чтобы опробовать новые идеи и разобраться во всем на практике.

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

Курсы «Изучите этот язык программирования за 4 часа» на Youtube… разочаровывают. Хотя эти курсы могут быть отличным напоминанием для тех, кто уже знаком с программированием, на курсах часто одинаковое количество времени уделяется разным концепциям. Вы уже видите проблему с этим.

Проблема в том, что концепции в программировании имеют разные уровни сложности, которые часто соответствуют тому, сколько времени нужно, чтобы полностью изучить концепцию. Например, модуль о том, как написать свой первый «Hello World», должен занять всего 5 минут. Однако большая проблема, если модуль по объектно-ориентированному программированию также длится всего 5 минут. Вы не можете научить объектно-ориентированному программированию за 5 минут. Это ересь.

Как этого избежать:

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

  1. Выберите концепцию, которую хотите изучить.
  2. Обучайте концепции себя или кого-нибудь еще.
  3. Если вы застряли, вернитесь к исходному материалу.
  4. Упростите свои объяснения и создайте аналогии.

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

Чаще всего проблема не в вас, когда дело доходит до обучения программированию. Проблема в твоем инструкторе.

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

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

Как этого избежать:

  • Используйте курсы, подобные курсам FreeCodeCamp, которые преподают нынешние и бывшие профессора университетов или другие разработчики-самоучки. Это, вероятно, лучшие люди, у которых можно учиться, потому что а) у них есть опыт преподавания сложных концепций новичкам и б) они когда-то были на вашем месте.
  • Вначале постарайтесь изучить как можно больше ресурсов, пока не найдете инструктора, который заставит вас «щелкнуть».

Последние мысли.

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

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

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