Основные основы обучения программированию - и почему новички должны освоить их
Coding
Научиться программировать сложно. Я часто нахожу, что в университетских курсах и буткемпингах пропускаются важные аспекты программирования и используются плохие подходы к обучению новичков.
Я хочу поделиться пятью основными принципами, которые, по моему мнению, должны основываться на успешном курсе программирования. Как всегда, я обращаюсь к контексту основных веб-приложений.
Цель новичка - овладеть основами программирования и понять важность библиотек и фреймворков.
Дополнительные темы, такие как облако, операции в целом или инструменты сборки, не должны быть частью учебной программы. Я также скептически отношусь к шаблонам проектирования. Они предполагают опыт, которого у новичков никогда не было.
Итак, давайте посмотрим, с чего начинать начинающим программистам.
Разработка через тестирование
Разработка через тестирование приносит много преимуществ. К сожалению, это сложная тема, к которой новички не совсем готовы.
Начинающие не должны писать тесты. Это было бы слишком для их базовых навыков. Вместо этого им следует научиться пользоваться тестами и работать с ними.
Каждый курс программирования должен быть сосредоточен вокруг упражнений. Я расширяю свои упражнения модульными тестами и предоставляю учащимся среду, уже настроенную для выполнения этих тестов.
Все, что нужно сделать студентам, - это написать свой код, а затем наблюдать, как огни тестирующего переключаются с красного на зеленый. В результате геймификации является хорошим побочным эффектом.
Например: если выбрана технология Spring, я предоставляю упражнения и тесты в рамках проекта Spring. Студентам не нужно ничего знать о Spring. Все, что им нужно знать, - это расположение упражнений и кнопка для запуска тестов.
Кроме того, студенты должны знать, как использовать отладчик, и иметь под рукой цикл чтения-проверки-печати (Read-Eval-Print Loop). Способность анализировать код во время выполнения и иметь площадку для небольших экспериментов имеет важное значение в разработки через тестирование.
Суть в том, чтобы студентам не приходилось изучать базовое поведение разработки через тестирование после того, как они приобрели основные навыки программирования.
Изменить привычки позже в карьере студентов будет гораздо сложнее, чем выучить эти привычки сейчас. Вот почему они должны жить и дышать юнит-тестами с самого начала.
Позже в своей профессиональной жизни у них должна быть антипатия к проектам без юнит-тестов. Они должны интуитивно видеть отсутствие модульных тестов как анти-шаблон.
Сначала основы
Я часто слышу, что новички должны немедленно начать с каркаса. Это все равно что учить людей вождению, сажая их в автомобиль и прося не устраивать дтп. Это просто игнорирует тот факт, что они все еще принимают тормоз за педаль газа.
То же самое относится и к тому, когда мы начинаем студентов с такими основами, как Angular. Новички должны сначала понять основы программирования.
Они должны быть знакомы с основными элементами и что значит писать код, прежде чем они смогут использовать чужие.
Понятие функции, переменной, условия и цикла совершенно чуждо новичкам. Эти четыре элемента закладывают основы программирования. Все, из чего состоит программа, зависит от них.
Студенты слышат эти понятия впервые, но крайне важно, чтобы студенты овладели ими. Если ученики не овладеют основами, все, что следует, выглядит как волшебство и приводит к замешательству и разочарованию.
Учителя должны уделять больше времени этим основам. Но, к сожалению, многие продвигаются слишком быстро. Проблема в том, что некоторые учителя пытаются поставить себя в роли ученика. Они программировали целую вечность и забыли, с какими проблемами сталкивается новичок.
Это очень похоже на профессионального водителя автомобиля. Он не может представить, что кому-то нужно подумать, прежде чем тормозить. Он просто делает это автоматически.
Я разрабатываю свои упражнения так, чтобы они были сложными, но решаемыми в разумные сроки, используя комбинацию из четырех основных элементов.
Хорошим примером является конвертер римских и арабских чисел. Эта задача требует терпения от студентов. Как только они успешно применят четыре элемента для решения задачи, они также получат большой импульс в мотивации.
Основы важны. Не двигайтесь, пока они не уладятся.
Библиотеки и фреймворки
После того, как студенты потратят много времени на программирование, они должны узнать, что большая часть кода уже существует в форме библиотеки или фреймворка. Это больше мышление, чем шаблон.
Современные разработчики знают и подбирают нужную библиотеку. Они не тратят часы на написание версии с ошибками самостоятельно.
Чтобы этот переход был успешным, примеры из «фундаментальной фазы» должны быть решены с помощью известных библиотек, таких как Moment.js, Jackson, Lodash или Apache Commons.
Таким образом, студенты сразу поймут ценность библиотек. Они ломали головы вокруг этих сложных проблем. Теперь они обнаруживают, что библиотека решает упражнение в кратчайшие сроки.
Подобно разработки через тестирование, студенты должны испытывать подозрения, когда коллеги хвастаются своей собственной библиотекой, которая делает Redux ненужным.
Когда дело доходит до фреймворка, у студентов не возникнет проблем с пониманием важности, как только они поймут полезность библиотек.
В зависимости от сроков курса может быть трудно посвятить время фреймворку. Но, как я уже указывал, наиболее важным аспектом является смещение мышления студента от программирования всего с нуля до изучения и использования библиотек.
Я не добавил инструменты, поскольку они полезны только опытным разработчикам. На этом раннем этапе учащимся не нужно учиться интегрировать и настраивать инструменты.
Мастер и ученик
В свои 20 лет я хотел научиться играть на пианино. Я не хотел учителя и думал, что смогу выучить его сам. Пять лет спустя я обратился к профессиональному репетитору. Ну что я могу сказать? Я узнал больше за 1 месяц, чем за пять лет до этого.
Мой учитель игры на фортепиано указал на ошибки в моей игре, которые я не слышал, и заставил меня осознать то, что я никогда не мог себе представить. В конце концов, она привила мне мышление и искусство, оба из которых были недоступны для меня как технического человека.
То же самое в программировании. Если у кого-то нет опыта в программировании, самообучение может быть плохой идеей. Хотя есть много историй успеха, я ставлю под сомнение эффективность делать это в одиночку.
То же самое в программировании. Если у кого-то нет опыта в программировании, самообучение может быть плохой идеей. Хотя есть много историй успеха, я ставлю под сомнение эффективность делать это в одиночку.
Вместо этого должны быть отношения «мастер и ученик». Сначала мастер дает правила, которым ученик должен следовать - вслепую! Мастер может объяснить правила, но обычно рассуждения находятся за пределами понимания ученика.
Эти усвоенные правила образуют своего рода сеть безопасности. Если кто-то теряется, у него всегда есть надежная почва для возвращения.
Обучение не должно быть монологом. Мастеру приходится иметь дело с каждым учеником индивидуально. Он должен проверить, как работают студенты, дать совет и адаптировать скорость курса к своему прогрессу.
Как только ученики достигают определенного уровня мастерства, их следует поощрять исследовать новую территорию. Мастер превращается в наставника, который разделяет «мудрость» и открыт для дискуссий.
Вызовы и мотивация
«Давайте создадим клон Facebook!» Это не от генерального директора, поддерживаемого ордой старших разработчиков программного обеспечения и многомиллионным бюджетом в евро. Это упражнение из вводного курса для программистов. Такое начинание практически невозможно. Хуже того, ученики попадают в страну чудес и обманываются, полагая, что у них есть навыки, которые действительно недоступны.
Без сомнения, учитель знает об этом, но создает такие упражнения по мотивационным причинам.
Основная цель упражнения - не развлекать. Он должен быть создан вокруг определенной техники и должен помочь студентам понять эту технику.
Мотивация хороша, но не в ущерб содержанию. Программирование не легкое. Если у студентов нет внутренней мотивации, кодирование может быть не лучшим способом.
Новички должны испытать, что значит быть профессиональным разработчиком. Они должны знать, что их ждет, прежде чем тратить много часов.
Например, многие бизнес-приложения сосредоточены вокруг сложных форм и сеток. Создание их - важный навык, который могут придать упражнения. Создание приложения, похожего на Facebook, может быть не лучшим уроком для студентов, чтобы учиться сразу.
Аналогичным образом, непрограммист может быть удивлен тем, как мало строк кода пишет разработчик в день. Есть даже моменты, когда мы удаляем код или ничего не достигаем.
Зачем? Потому что все идет не так, как надо. Мы проводим бесконечные часы, исправляя некоторые очень странные ошибки, которые оказываются простой опечаткой. Некоторые инструменты могут не работать только потому, что библиотека получила незначительное обновление версии. Или система падает, потому что кто-то забыл добавить файл в git. Список можно продолжать и продолжать.
Студенты должны наслаждаться этим опытом. Упражнение, нацеленное на неизвестную библиотеку под давлением времени, может быть совершенно правильным.
Солнце не всегда светит в реальной жизни. Новички должны быть хорошо подготовлены к реальности программирования.
Заключительный совет
Последнее, но не менее важное: стать профессиональным программистом нельзя за две недели, два месяца или даже год. Это требует времени и терпения.
Тренеры не должны спешить или давать ложные обещания. Им следует сосредоточиться на том, понимают ли учащиеся концепции и не слишком ли быстро двигаться дальше.

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