Автор заметки имеет большой стаж обучения программированию. Он рассказывает про 5 столпов программирования, которые помогут освоить азы.
Автор выделил 5 столпов программирования, на которые должна опираться эффективная программа обучения. Эти азы помогут новичку освоить необходимую для успешного развития базу.
Столп № 1: разработка через тестирование
Разработка через тестирование или TDD (от англ. test driven development) – эффективная технология, к которой большинство новичков не готово.
Речь не о том, чтобы начинающие разработчики писали тесты. Это слишком много для тех, кто только осваивает типы данных, функции и объекты. Но новичкам нужно обязательно учиться работать с тестами.
Все курсы программирования нужно строить на практических упражнениях. Автор статьи всегда идет дальше и кроме упражнений предлагает своим студентам тесты. Он самостоятельно настраивает окружение так, чтобы ученики могли тестировать программы и изучать фундаментальные основы программирования.
Студенту нужно просто написать код и оценить результаты тестирования. Условно говоря, если загорается зеленая лампочка, все в порядке. Если горит красная, курсант должен вернуться к коду. Кстати, так работают многие популярные платформы для обучения программированию, например, FreeCodeCamp.
Если студенты изучают Spring Web Flow, автор делает упражнения и тестирует результаты на платформе Spring. При этом студентам не нужно разбираться в Spring. Для эффективного обучения программированию им достаточно выполнить упражнение и нажать кнопку «Запустить проверку».
Конечно, учащимся нужно уметь пользоваться отладчиком и работать в REPL-среде. Умение анализировать код во время запуска и пользоваться средой для экспериментов – важные условия эффективного использования TDD.
Начинающим программистам важно сначала научиться азам TDD, а потом писать код. Менять сформировавшиеся привычки сложнее, чем нарабатывать новые. При правильном подходе к обучению программисты будут ненавидеть проекты без TDD, так как разработка через тестирование защищает от ошибок.
Столп № 2: базовые знания и умения первичны
Автор статьи неоднократно слышал, как новичкам рекомендуют начинать сразу с фреймворков, пропуская азы программирования. Это как посадить нового водителя за штурвал болида «Формулы-1» и предложить особо не беспокоиться. Советчики забывают, что начинающий водитель не всегда отличает тормоз от газа.
В ту же ситуацию попадает новичок, если начинает учиться с фреймворка типа Angular. Чтобы стать хорошим специалистом, студент должен сначала разобраться с базовыми вещами. Ему надо понять, как самостоятельно писать код. Тогда он сможет работать с чужим кодом, в том числе с фреймворками.
Переменные, циклы, условия и функции вводят новичков в ступор. А ведь на этих четырех понятиях базируется любая программа. Поэтому начинать надо с базовых вещей, а не с фреймворков.
Новичкам очень важно освоить базовые понятия и инструменты программирования. Если это условие не соблюдается, код всегда будет казаться студенту китайской грамотой.
К сожалению, на популярных курсах базовая информация часто рассматривается поверхностно. Проблема в том, что преподаватели забывают, что когда-то тоже осваивали эти несколько столпов программирования. Базовые вещи теперь кажутся им элементарными и не заслуживающими внимания. В похожую ситуацию попадают профессиональные водители. Им сложно понять, что новичкам приходится думать, как тормозить или поворачивать.
Автор заметки старается давать студентам упражнения, в которых нужно задействовать переменные, циклы, условия и функции одновременно. Например, он просит курсантов написать конвертер римских и арабских цифр. Студентам приходится подумать и найти дополнительную информацию. Но выполненное упражнение гарантирует, что курсант освоил циклы, условия, переменные и функции.
Столп № 3: библиотеки и фреймворки
Когда студент освоил базовую теорию и достаточно попрактиковался, самое время понять: большая часть кода уже написана. Речь о библиотеках и фреймворках.
Важно запомнить: хороший разработчик знает, какую библиотеку использовать в той или иной ситуации. Это экономит уйму времени и защищает от огромного количества ошибок.
Чтобы научиться работать с библиотеками, нужно попробовать решить простые задачи из базовых курсов с помощью популярных инструментов типа Moment.js или Apache Commons. Это поможет начинающему разработчику понять важность библиотек.
Разработчик должен напрячься, если коллеги предлагают писать код руками, а Redux называют ненужной тратой времени. Фреймворки экономят время кодера, если использовать их с умом.
Столп № 4: наставник(и)
Автор заметки в школьном возрасте учился играть на фортепиано. Он делал это самостоятельно в течение пяти лет. Однажды он обратился к профессиональному преподавателю и месяц брал уроки игры. За этот месяц автор научился большему, чем за предыдущие пять лет.
Преподаватель быстро исправил ошибки, которые автор просто не замечал. Также учитель привил автору мышление, которое позволило развиваться самостоятельно.
В данном случае программирование не отличается от музыки. Если кто-то решит учиться разработке с нуля самостоятельно, он столкнется с проблемами. Конечно, научиться программировать самостоятельно можно. Но учиться с наставником намного эффективнее и быстрее.
Новичку нужен наставник или учитель. Более того, между новичком и учителем должны быть доверительные отношения. Наставник устанавливает правила, а ученик должен слепо и без раздумий их соблюдать. Конечно, учитель может объяснить установленные правила. Но в начале обучения это не имеет смысла, так как новичок просто не может их понять. Сначала он должен изучить несколько столпов программирования.
Интериоризация или впитывание правил на генетическом уровне создает определенные флажки безопасности. Они защищают новичка от риска заблудиться и допустить фундаментальные ошибки в процессе обучения.
Наставничество не должно превращаться в односторонний монолог. Учитель должен искать ключи к каждому студенту, следить за прогрессом, проверять упражнения. Только наставник может определить, когда новичок готов перейти на следующий уровень и осваивать новые темы.
Столп № 5: вызовы и мотивация
«Давайте сделаем свой Фейсбук с музыкой и видео». Это не план огромной корпорации с миллиардным бюджетом. Это реальный рекламный слоган, который должен привлечь учеников на курсы программирования. Если принять это всерьез, можно попасть в мир иллюзий. Курсанты без чувства юмора могут решить, что через несколько месяцев они действительно смогут сделать второй «Фейсбук».
Преподаватели и организаторы курсов должны ставить амбициозные цели, чтобы мотивировать студентов. Но лучше выбирать что-то более реалистичное, сфокусированное на решении конкретных и достижимых результатов.
Если студент не сможет сделать новый «Фейсбук» после окончания курсов, наступит разочарование. Демотивированный новичок практически не имеет шансов на успех, так как программированию невозможно научиться без внутренней мотивации и страсти.
Поэтому начинающим разработчикам нужно объяснять, что стать профессионалом можно. Но для этого надо иметь крепкую задницу. Только так получится часами сидеть за монитором и делать упражнения.
Также новички должны быть готовы к тому, что разработчики не только пишут код. Программистам приходится еще и планировать, рисовать блок-схемы, искать ошибки и даже удалять плохой код. Из-за этого с точки зрения новичка в какие-то дни разработчики не приближаются к решению задачи.
Новички должны быть подготовлены к реальной работе программиста. Поэтому они должны уметь получать удовольствие от скучных упражнений. Более того, объясните им, что программисту приходится ошибаться, исправлять ошибки, переписывать код заново. Это часть разработки.
Финальный совет поможет освоить 5 столпов программирования
Помните, никто не может стать профессиональным программистом за две недели, два месяца и даже за год. Чтобы стать разработчиком, нужно постоянно практиковаться и сохранять терпение.
Преподаватели не должны давать нереальные обещания. А новичкам не стоит верить в рекламные слоганы. Программистом стать можно. Но для этого придется буквально пахать и осваивать азы программирования.
Читайте также:
- Почему вы никогда не научитесь фронтенд-разработке.
- Книги для изучения программирования.
- Тесты для оценки своего уровня знаний.
Ссылка на оригинальную публикацию.
Комментарии