Обучение программированию с помощью конспектирования

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

Предыстория

На вопросы «как правильно самостоятельно изучать программирование» я обычно встречал два основных варианта ответа:
1. Штудировать теорию, решая примеры по пройденной теме;
2. Постараться реализовать какой-то проект, попутно изучая выбранный язык программирования.

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

Если точнее, я начал изучать PHP, просматривая переводы ведоуроков с Lynda.com. Я был в восторге. Кэвин Скогланд очень быстро вводит в курс дела. Я увлеченно повторял всё увиденное, а в голове очень легко складывался пазл «искусства веб-программирования», пусть и на самом примитивном уровне.

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

Помню тот долгожданный момент, когда я наконец решил организовать себе «боевое крещение» и проверить свой навык PHP/MySQL, сделав админку для управления базами данных, которая давала возможность производить элементарные манипуляции (создать\удалить базу, наполнить, отредактировать и т.п.). И именно в тот момент я был шокирован. Я практически полностью забыл PHP. Как же так? Теперь все заново? По второму кругу смотреть все лекции по PHP? Ну, допустим. А что же будет, когда это сделаю? Я забуду MySQL?

Чем хорош метод конспектирования

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

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

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

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

Конспектировать — не значит просто копировать

Конспект в данном случае подразумевает не принцип «Ctrl+C -> Ctrl+V», а соблюдение следующего порядка действий:
1. Прочитать материал (абзац, главу, описание чего-либо);
2. Если нужно, очень кратко выписать суть, которую вы сами потом сможете понять (именно это не оставит вам выбора, кроме как разобраться в вопросе);
3. Записать примеры кода (если нужно).

Плюсы и минусы

Используя этот метод некоторое время, однозначно могу сказать, что огромным минусом является необходимость структурировать информацию по разделам, а также оформлять её. Но в то же время это является и плюсом, ведь в итоге очень хорошо запоминается, какую информацию и куда ты вносил. А после прочтения одного предложения, записанного своими словами, сразу же открывается вся картина. Нет необходимости искать, в каком месте книги или, не дай Бог, видеоурока, затрагивался нужный вопрос.

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

Я вспомнил, как просматривая лекции по MySQL фирмы «Специалист», решил законспектировать этот момент, потому что он показался мне достаточно запутанным. На конспектирование я потратил время. Но при необходимости сделать это задача была решена за 30 секунд. А столько же времени будет необходимо каждый раз, когда я буду спустя долгое время возвращаться к этой задаче?

Заключение

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

1102