Почему люди, которые обучаются программированию на современных курсах, в итоге не находят работу или даже не проходят курс до конца? Часть моих учеников приходит ко мне с профессиональных курсов закрывать пробелы, и я вижу одни и те же вещи. Кроме того, и многие онлайн-курсы я просматривал.
Поэтому сегодня расскажу о некоторых проблемах — тех, которые системно заложены в сами курсы программирования.
1. Демонстрация вместо обучения
Во многих курсах какие-то важные вещи даются именно в демонстрационном виде. Ученик смотрит, слушает, вроде как понимает, но сам воспроизвести не может, потому что переход от наблюдения к активному применению не предусмотрен. Почему? Разные причины, в том числе отсутствие ресурсов на выстраивание этого перехода — это большая и серьёзная работа.
Не обязательно весь курс такой, в нём многое может быть сделано иначе, но, повторю — ряд ключевых вещей может даваться именно так.
2. Отсутствие ментальных моделей
Курсы часто не учат думать — они учат запоминать и применять какие-то шаблоны. А вот если человеку дать чёткие модели, по которой он сможет разбирать эти шаблоны на отдельные части, понимать, зачем эти отдельные части нужны, убирать их из шаблона, заменять на другие, когда надо — тогда уже можно сказать, что человек думает.
И вот такое умение работать с шаблонами и переделывать их и ведёт к умению работать — применять то, чему научился, на реальных задачах, адаптируя натренированные шаблоны.
3. Слишком быстрый темп
Маркетинг — злая штука. Люди падки на идеи вроде «обучиться за 3/5/10/12 месяцев и получить работу», и часто курсы выстраиваются вокруг этого — просто чтобы набрать учеников, а вернее — клиентов.
Но проблема в том, что большинству учеников многие концепции нужно повторить несколько десятков раз, и в разных контекстах, разных условиях. А получает он 4-5 повторений.
Ещё одна причина этого — дороговизна ресурса. Если мы берём программу, идея которой с нуля подготовить до профессионального уровня «под ключ» — это очень долго и дорого. И пока такое будешь делать, профессиональная часть уже устареет. А курс надо запускать побыстрее, чтобы деньги отбить.
4. Нет диагностики пробелов
Из-за причин, о которых я говорил выше, у человека накапливаются пробелы. А в программировании это очень легко приводит к остановке — к ситуации «я вообще перестал что-то понимать».
Например, у многих учеников проблемы с такой темой, как рекурсия. Но на деле, если мы с ними закрываем все пробелы на двух предыдущих темах — циклы и функции — то трудности у большинства учеников уходят.
Но часто пробелы начинают накапливаться с самого начала, с самой первой темы вместо понимания — шаблоны. И меня, как правило, даже удивляет, насколько многие мои ученики успели продвинуться на подобном курсе. Очень способные люди.
Но всё равно мы с ними возвращаемся к началу и закрываем пробелы. И с закрытием этих пробелов ученик обнаруживает, что абсолютно непонятные раньше темы или вообще лёгкие, или за пару занятий получается понять их на базовом практическом уровне.
В курсах же такая остановка — «погоди, ты не готов идти дальше, давай вернёмся назад» — отсутствует
5. Искусственные учебные задачи
С одной стороны, никуда от них не деться, когда начинаешь изучать программирование вообще, как и когда начинаешь изучать какую-то сложную тему. Профессиональные задачи слишком объёмны и ресурса всё охватить и понять с ходу не хватит у большинства.
С другой стороны, многие курсы не обеспечивают перехода к реальным задачам совсем или делают это так, что толку не будет никакого. Хотя обещают многие.
6. Отсутствие обратной связи
Многие курсы используют автоматические проверки, которые могут выдать лишь «правильно»/«не правильно». Но ученику важно понимать проблемы с кодом на более глубоком уровне. Почему этот код плохой? Какие шаблоны мышления привели его к этой ошибке? В каком именно месте логика работы ломается? А чем этот код плох, всё же работает?
На некоторых курсах есть люди, которые дают подобную обратную связь, но не всегда они достаточно компетентны как программисты или как преподаватели и дают обратную связь не очень эффективно.
7. Иллюзия понимания
Часто ученику кажется, что он понял. И какого-то уровня понимание у него действительно есть, но часто поверхностное, неполное или даже ошибочное. Заметно это становится только, когда ученик не может применить изученное на практике.
Я уже давно не верю этим «понял» от учеников и всегда тестирую на ряд типичных ошибок в понимании именно на практических задачах. И даже если ученик успешно с ними справился, всегда остаётся шанс на то, что через какое-то время непонимание вылезет дальше. Ошибки, в том числе ошибки понимания материала, очень креативны. Регулярно узнаю новые способы понять что-то неправильно
8. Неправильная последовательность
Многие курсы строятся не по логике усваивания концепций человеческим мозгом, а по логике языка программирования. Например, многим людям лучше сначала хотя бы чуть-чуть позаниматься чисто алгоритмическим мышлением, а потом уже переходить к синтаксису.
9. Не развиваются метанавыки
Во многих курсах не обучают дебажить — искать и исправлять ошибки в коде программы, не учат разбивать большую задачу на маленькие, формулировать вопросы и т.д. и т.п.
По идее, конечно, такому должны в школе учить. И даже во многих школах учат! Ну, пытаются. Но научить при этом большинство школьников им не удаётся. И без этого всё опять же скатывается к запоминанию шаблонов без понимания, что там внутри, под капотом.
10. Отсутствие персонализации
А это уже общая проблема коллективного обучения — у каждого человека могут проявиться какие-то его индивидуальные трудности в обучении. И при этом учеником он может быть очень одарённым, он может выдавать мощные результаты, если найти способ помочь ему эти трудности преодолеть.
Но в коллективном обучении такое, как правило, не предусмотрено. Например, многие курсы жёстко ограничивают время прохождения курса, что для людей, кто изучает медленнее, но вдумчивее и глубже, не подходит.
Что в итоге?
Курс пройден, получена бумажка, с простейшей задачей без подсказки справиться новоиспечённый программист не может. Или же курс заброшен, так как ничего непонятно.
Поэтому на самом деле многие курсы, которые готовят к профессиональному уровню, имеет смысл проходить уже после того, как поизучал программирование по этому направлению где-то ещё. Некоторые люди их проходят, уже работая разработчиком в этом направлении — просто чтобы закрыть пробелы и получить документ о том, что он умеет программировать.
И среди курсов есть такие, которые при таком подходе действительно могут дать многое, если там даются современные профессиональные подходы и технологии. Да, такие есть и у меня есть знакомые разработчики, которые через такие курсы работу получили.
И где же, вы спросите, подготовиться к тому, чтобы на такой курс пойти? И конечно же, скажете на мой ответ, что статья рекламная, так как подготовиться можно у меня 🙂. Но что поделать, если всё это правда.
Но не только у меня вы можете подготовиться. Материалов много в интернете бесплатно, в том числе разных курсов, и много преподавателей.