Метод обучения программированию: «конспектирование»
Эта статья для тех, кто задумался или только начал изучать программирование. В ней я бы хотел поделиться выбранным мною способом изучения программирования, который заключается в конспектировании базовых принципов. Способ имеет один существенный недостаток — существенные затраты времени. Однако, у него есть и плюсы.
Предыстория
На вопросы «как правильно самостоятельно изучать программирование» я обычно встречал два основных варианта ответа:
1. Штудировать теорию, решая примеры по пройденной теме;
2. Постараться реализовать какой-то проект, попутно изучая выбранный язык программирования.
Второй метод меня не привлёк, поэтому я, как, наверное, и многие, изначально пытался «учиться» по первому.
Если точнее, я начал изучать PHP, просматривая переводы ведоуроков с Lynda.com. Я был в восторге. Кэвин Скогланд очень быстро вводит в курс дела. Я увлеченно повторял всё увиденное, а в голове очень легко складывался пазл «искусства веб-программирования», пусть и на самом примитивном уровне.
Дальше по понятным причинам решил погрузиться в MySQL. На этот раз это был хороший самоучитель (книга в электронном виде). Принцип тот же: прочитал -> повторил увиденное сам (либо придумал свой простой пример). По окончанию его изучения примитивные приемы в консоли MySQL я мог писать «с закрытыми глазами».
Помню тот долгожданный момент, когда я наконец решил организовать себе «боевое крещение» и проверить свой навык PHP/MySQL, сделав админку для управления базами данных, которая давала возможность производить элементарные манипуляции (создать\удалить базу, наполнить, отредактировать и т.п.). И именно в тот момент я был шокирован. Я практически полностью забыл PHP. Как же так? Теперь все заново? По второму кругу смотреть все лекции по PHP? Ну, допустим. А что же будет, когда это сделаю? Я забуду MySQL?
Чем хорош метод конспектирования
Это был очевидный факт. Выполнив один, пять, десять раз какое-то действие в программировании, но потом долгое время не возвращаясь к нему из-за изучения других языков или углубляясь в текущий, новичок скорее всего не сможет его раз и навсегда запомнить.
Тогда что выгоднее? Тратить время на конспектирование по ходу изучения или на поиски информации каждый раз, когда ты что-либо при необходимости?
Я пришел к следующему выводу, который, как мне кажется, в большей степени касается новичков: лучше писать конспекты, если изучаются какие-то базовые принципы (например, из самоучителя), которые доступно разжевываются именно в этом источнике. Ведь если потом они забудутся, нужно будет вспомнить источник, найти страницу (в книге), время (в видеоуроке) и заново ознакомиться с материалом.
Также хочу сразу оговориться, что данное правило не распространяется, например, на встроенные функции, коих огромное количество и которые гораздо разумнее искать в документации к языку, где, как правило, есть и описание и примеры. Можно записать разве что основные, которыми будешь регулярно пользоваться во время обучения.
Конспектировать — не значит просто копировать
Конспект в данном случае подразумевает не принцип «Ctrl+C -> Ctrl+V», а соблюдение следующего порядка действий:
1. Прочитать материал (абзац, главу, описание чего-либо);
2. Если нужно, очень кратко выписать суть, которую вы сами потом сможете понять (именно это не оставит вам выбора, кроме как разобраться в вопросе);
3. Записать примеры кода (если нужно).
Плюсы и минусы
Используя этот метод некоторое время, однозначно могу сказать, что огромным минусом является необходимость структурировать информацию по разделам, а также оформлять её. Но в то же время это является и плюсом, ведь в итоге очень хорошо запоминается, какую информацию и куда ты вносил. А после прочтения одного предложения, записанного своими словами, сразу же открывается вся картина. Нет необходимости искать, в каком месте книги или, не дай Бог, видеоурока, затрагивался нужный вопрос.
В подтверждение сказанному могу привести банальный пример, когда мне пригодились данные о восстановлении дампа базы данных MySQL с информацией о городах на работе (должность не связана с программированием).
Я вспомнил, как просматривая лекции по MySQL фирмы «Специалист», решил законспектировать этот момент, потому что он показался мне достаточно запутанным. На конспектирование я потратил время. Но при необходимости сделать это задача была решена за 30 секунд. А столько же времени будет необходимо каждый раз, когда я буду спустя долгое время возвращаться к этой задаче?
Заключение
В наше время многие пытаются изучить программирование. Небольшой части удается начать работать в этой сфере, еще меньше людей становятся специалистами. Я в данный момент только пытаюсь. И надеюсь, что мои небольшие наработки помогут другим новичкам улучшить качество обучения.
Нужно ли вкратце конспектировать материал из книги по програмированию?
Желательно ли вкратце конспектировать пройденный материал из книги, или лучше просто читать книгу и подкреплять это практикой?
Ответ абсолютно индивидуален. Все зависит от того, как у вас устроена память — у кого-то лучше всего работает визуальная память, у кого-то аудио. Я знаю, что у меня лучше всего работает моторная — еще учась и институте я на каждый экзамен писал шпору (шпаргалку), но за все время учебы использовал эту технология только один раз и то, на абсолютно непрофильном экзамене. Но вот при написании, вернее — в его процессе — материал закреплялся в голове на долго. И именно писал, от руки — во-первых, компьютеров тогда еще не было, а во вторых уже потом заметил, что набор на клавиатуре не дает того-же эффекта.
Поэтому я и сейчас иногда, когда что-то новое читаю или изучаю, делаю небольшой конспект в блокноте (физическом, а не MS Notepad 🙂 ). И пусть потом я его никогда и не открою, но запомню точно лучше. К сожалению, замечаю, что современные студенты даже конспект на лекции вести не умеют — кто на диктофон записывает, кто фотографирует с доски, но очень мало кто именно самостоятельно пишет. По моему мнению тут дело не в технике — а именно в отсутствии навыков. И в частности и в этом — неумении самостоятельно делать «выжимки» из увиденного или прочитанного — есть одна из причин снижения качества образования.
В общем — я бы рекомендовал делать такие записи, но в кто-бы что-бы тут не насоветовал — вам надо «прислушаться» к собственному мозгу и понять, как ему легче работать с материалом.
Многое зависит от удобного лично Вам способа изучать информацию. Мне, например, конспектирование помогает быстрее и лучше запомнить, структурировать материал. И да, если под практикой Вы понимаете задания из книги, то это не совсем полноценная практика, потому что, столкнувшись с реальной задачей, поймете, что применить полученные знания может быть не так просто.
В общем, если ищете совет у постороннего человека из интернетов — конспектируйте. Хуже точно не будет.
Знания в памяти закрепляются путём повторения. Причём, эффект имеет именно воспроизведение знаний, а не повторное их усвоение. Пересказать материал своими словами — лучше, чем ещё раз прослушать/перечитать. И с обратной стороны также: можно разобраться в очень сложной штуке, добиться полного её понимания в деталях, но через неделю или месяц (без повторений) окажется, что получается лишь в двух словах сказать, про что вообще это было.
Повторять знания лучше на следующий день после получения. Потом ещё через 3 дня. Потом ещё через неделю, потом через месяц. Такой подход позволяет очень прочно закреплять знания. Если в процессе повторения обнаружились пробелы, то увы, их придётся заполнять повторным чтением, и их можно считать свежими. Годы без повторений и без практики способны стереть почти любые знания: попробуйте-ка вспомнить школьные предметы, которыми вы давно не пользовались, но были отличником. Навыки языка, игры на музыкальном инструменте — что угодно забудется без повторений.
А вот стиль повторения — это уже дело вкуса. Конспект — это тоже как бы повторение, но повторение в тот же день, что и получение, имеет наименьший эффект. Гораздо более полезно попытаться воспроизвести без подсказок свой конспект на следующий день, а потом и позже. То есть устроить себе маленький экзамен, а потом и большой.
Практика — это тоже повторение. И если теоретические знания можно повторять разными способами, можно даже в уме, когда едешь в метро, то навыки приходится закреплять только практикой. Так что практика тоже важна, ведь знания так или иначе нужно будет применять.
Так делай конспекты в виде работающих программ. Храни прямо исходники с простыми комментариями.
И поиск по ним будет быстро идти, и код рабочий, и код который ты сам написал и запустил лучше в памяти лежит.
Конспекты в виде конспектов можно делать, можно не делать.