Скрытая правда: кодирование не для всех

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

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

1. В поисках идеальной учебной программы

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

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

2. Незнание методики обучения.

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

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

3. Попытка достичь продвинутого уровня с первого дня.

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

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

4. Разочарование от настройки среды.

Эта причина может быть забавной, но она есть! Раньше я читал курс Ruby On Rails, и самым сложным для студентов было создание среды, необходимой для запуска ROR на их машинах. На этом этапе многие студенты бросили курс или перестали интересоваться RoR. Это не только мой курс, в моем курсе это было просто контролировать, но многие студенты говорят мне, что они отказались от прохождения онлайн-курса или изучения чего-то нового, потому что они не могли настроить среду.

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

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

5. Не очень хорошо гуглил.

Google - лучший друг разработчика. Мы ежедневно гуглим, чтобы получать результаты с помощью StackOverflow, Medium или любых других доступных решений и статей. Как старый разработчик, иногда я разрабатывал на новом языке то, что мне нужно, просто гуглил, не изучая язык. Так что поиск в Google очень важен.

Я заметил, что некоторые студенты зацикливаются на том, что им делать, когда у них возникают вопросы. Они чувствуют, что должен быть наставник, и не ищут того, чего хотят. Им не удается грамотно описать свои ошибки в Google, они не могут сканировать длинные статьи и не знают, что делать, если что-то не работает. Это печально, потому что поиск в Google кажется легким навыком, но я часто это замечал.

6. Не иметь более широкой картины

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

Я написал ранее план из 7 блоков, чтобы помочь студентам с этой проблемой:



7. Отсутствие портфолио

Портфолио может звучать как что-то для дизайнера, но для начинающих программистов оно просто необходимо. Позвольте мне рассказать вам, почему. Стал бы дизайнер дизайнером, просто просмотрев 20 курсов, связанных с дизайном, и пустое портфолио? невозможно. Лично я бы не доверился дизайнеру, если бы не увидел его портфолио, сколько бы курсов он ни прошел. То же самое с программистами.

Я мог бы много учеников, которые сказали бы, что они прошли много курсов и прочитали много книг, но никто их не нанимает, даже если их резюме полно сертификатов. Мой совет - просто спросите их портфолио. У большинства из них ничего нет, и они считают, что до первой работы у них не может быть ничего в портфолио.

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

8. Непоследовательность

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

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

9. Плохие навыки решения проблем.

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



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

10. Прокрастинатор.

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

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