Эта статья для тех, кто задумался или только начал изучать программирование. В ней я бы хотел поделиться выбранным мною способом изучения программирования, который заключается в конспектировании базовых принципов. Способ имеет один существенный недостаток — существенные затраты времени. Однако, у него есть и плюсы.
На вопросы «как правильно самостоятельно изучать программирование» я обычно встречал два основных варианта ответа:
1. Штудировать теорию, решая примеры по пройденной теме;
2. Постараться реализовать какой-то проект, попутно изучая выбранный язык программирования.
Второй метод меня не привлёк, поэтому я, как, наверное, и многие, изначально пытался «учиться» по первому.
Если точнее, я начал изучать PHP, просматривая переводы ведоуроков с Lynda.com. Я был в восторге. Кэвин Скогланд очень быстро вводит в курс дела. Я увлеченно повторял всё увиденное, а в голове очень легко складывался пазл «искусства веб-программирования», пусть и на самом примитивном уровне.
Дальше по понятным причинам решил погрузиться в MySQL. На этот раз это был хороший самоучитель (книга в электронном виде). Принцип тот же: прочитал -> повторил увиденное сам (либо придумал свой простой пример). По окончанию его изучения примитивные приемы в консоли MySQL я мог писать «с закрытыми глазами».
Помню тот долгожданный момент, когда я наконец решил организовать себе «боевое крещение» и проверить свой навык PHP/MySQL, сделав админку для управления базами данных, которая давала возможность производить элементарные манипуляции (создать\удалить базу, наполнить, отредактировать и т.п.). И именно в тот момент я был шокирован. Я практически полностью забыл PHP. Как же так? Теперь все заново? По второму кругу смотреть все лекции по PHP? Ну, допустим. А что же будет, когда это сделаю? Я забуду MySQL?
Это был очевидный факт. Выполнив один, пять, десять раз какое-то действие в программировании, но потом долгое время не возвращаясь к нему из-за изучения других языков или углубляясь в текущий, новичок скорее всего не сможет его раз и навсегда запомнить.
Тогда что выгоднее? Тратить время на конспектирование по ходу изучения или на поиски информации каждый раз, когда ты что-либо при необходимости?
Я пришел к следующему выводу, который, как мне кажется, в большей степени касается новичков: лучше писать конспекты, если изучаются какие-то базовые принципы (например, из самоучителя), которые доступно разжевываются именно в этом источнике. Ведь если потом они забудутся, нужно будет вспомнить источник, найти страницу (в книге), время (в видеоуроке) и заново ознакомиться с материалом.
Также хочу сразу оговориться, что данное правило не распространяется, например, на встроенные функции, коих огромное количество и которые гораздо разумнее искать в документации к языку, где, как правило, есть и описание и примеры. Можно записать разве что основные, которыми будешь регулярно пользоваться во время обучения.
Конспект в данном случае подразумевает не принцип «Ctrl+C -> Ctrl+V», а соблюдение следующего порядка действий:
1. Прочитать материал (абзац, главу, описание чего-либо);
2. Если нужно, очень кратко выписать суть, которую вы сами потом сможете понять (именно это не оставит вам выбора, кроме как разобраться в вопросе);
3. Записать примеры кода (если нужно).
Используя этот метод некоторое время, однозначно могу сказать, что огромным минусом является необходимость структурировать информацию по разделам, а также оформлять её. Но в то же время это является и плюсом, ведь в итоге очень хорошо запоминается, какую информацию и куда ты вносил. А после прочтения одного предложения, записанного своими словами, сразу же открывается вся картина. Нет необходимости искать, в каком месте книги или, не дай Бог, видеоурока, затрагивался нужный вопрос.
В подтверждение сказанному могу привести банальный пример, когда мне пригодились данные о восстановлении дампа базы данных MySQL с информацией о городах на работе (должность не связана с программированием).
Я вспомнил, как просматривая лекции по MySQL фирмы «Специалист», решил законспектировать этот момент, потому что он показался мне достаточно запутанным. На конспектирование я потратил время. Но при необходимости сделать это задача была решена за 30 секунд. А столько же времени будет необходимо каждый раз, когда я буду спустя долгое время возвращаться к этой задаче?
В наше время многие пытаются изучить программирование. Небольшой части удается начать работать в этой сфере, еще меньше людей становятся специалистами. Я в данный момент только пытаюсь. И надеюсь, что мои небольшие наработки помогут другим новичкам улучшить качество обучения.
Предыстория
На вопросы «как правильно самостоятельно изучать программирование» я обычно встречал два основных варианта ответа:
1. Штудировать теорию, решая примеры по пройденной теме;
2. Постараться реализовать какой-то проект, попутно изучая выбранный язык программирования.
Второй метод меня не привлёк, поэтому я, как, наверное, и многие, изначально пытался «учиться» по первому.
Если точнее, я начал изучать PHP, просматривая переводы ведоуроков с Lynda.com. Я был в восторге. Кэвин Скогланд очень быстро вводит в курс дела. Я увлеченно повторял всё увиденное, а в голове очень легко складывался пазл «искусства веб-программирования», пусть и на самом примитивном уровне.
Дальше по понятным причинам решил погрузиться в MySQL. На этот раз это был хороший самоучитель (книга в электронном виде). Принцип тот же: прочитал -> повторил увиденное сам (либо придумал свой простой пример). По окончанию его изучения примитивные приемы в консоли MySQL я мог писать «с закрытыми глазами».
Помню тот долгожданный момент, когда я наконец решил организовать себе «боевое крещение» и проверить свой навык PHP/MySQL, сделав админку для управления базами данных, которая давала возможность производить элементарные манипуляции (создать\удалить базу, наполнить, отредактировать и т.п.). И именно в тот момент я был шокирован. Я практически полностью забыл PHP. Как же так? Теперь все заново? По второму кругу смотреть все лекции по PHP? Ну, допустим. А что же будет, когда это сделаю? Я забуду MySQL?
Чем хорош метод конспектирования
Это был очевидный факт. Выполнив один, пять, десять раз какое-то действие в программировании, но потом долгое время не возвращаясь к нему из-за изучения других языков или углубляясь в текущий, новичок скорее всего не сможет его раз и навсегда запомнить.
Тогда что выгоднее? Тратить время на конспектирование по ходу изучения или на поиски информации каждый раз, когда ты что-либо при необходимости?
Я пришел к следующему выводу, который, как мне кажется, в большей степени касается новичков: лучше писать конспекты, если изучаются какие-то базовые принципы (например, из самоучителя), которые доступно разжевываются именно в этом источнике. Ведь если потом они забудутся, нужно будет вспомнить источник, найти страницу (в книге), время (в видеоуроке) и заново ознакомиться с материалом.
Также хочу сразу оговориться, что данное правило не распространяется, например, на встроенные функции, коих огромное количество и которые гораздо разумнее искать в документации к языку, где, как правило, есть и описание и примеры. Можно записать разве что основные, которыми будешь регулярно пользоваться во время обучения.
Конспектировать — не значит просто копировать
Конспект в данном случае подразумевает не принцип «Ctrl+C -> Ctrl+V», а соблюдение следующего порядка действий:
1. Прочитать материал (абзац, главу, описание чего-либо);
2. Если нужно, очень кратко выписать суть, которую вы сами потом сможете понять (именно это не оставит вам выбора, кроме как разобраться в вопросе);
3. Записать примеры кода (если нужно).
Плюсы и минусы
Используя этот метод некоторое время, однозначно могу сказать, что огромным минусом является необходимость структурировать информацию по разделам, а также оформлять её. Но в то же время это является и плюсом, ведь в итоге очень хорошо запоминается, какую информацию и куда ты вносил. А после прочтения одного предложения, записанного своими словами, сразу же открывается вся картина. Нет необходимости искать, в каком месте книги или, не дай Бог, видеоурока, затрагивался нужный вопрос.
В подтверждение сказанному могу привести банальный пример, когда мне пригодились данные о восстановлении дампа базы данных MySQL с информацией о городах на работе (должность не связана с программированием).
Я вспомнил, как просматривая лекции по MySQL фирмы «Специалист», решил законспектировать этот момент, потому что он показался мне достаточно запутанным. На конспектирование я потратил время. Но при необходимости сделать это задача была решена за 30 секунд. А столько же времени будет необходимо каждый раз, когда я буду спустя долгое время возвращаться к этой задаче?
Заключение
В наше время многие пытаются изучить программирование. Небольшой части удается начать работать в этой сфере, еще меньше людей становятся специалистами. Я в данный момент только пытаюсь. И надеюсь, что мои небольшие наработки помогут другим новичкам улучшить качество обучения.
Комментарии (9)
vedenin1980
05.06.2015 15:06тридцать повторений однотипных задач по массивам и циклам, например, и у меня в жизни уже никогда не будет с ними проблем.
Не знаю, насчет никогда в жизни, если не будите использовать в реальной практике. Я за более чем десяток лет промышленного программирования уже забыл все что использовал в универе, хотя решал не меньше.
Конспектирование — это скучное и тупое занятие.
На мой взгляд лучше не писать, а печатать и не конспекты, а шпаргалки из разряда:
Set< — Collection(уник.значения,contains,containsAll,add,addAll)
Прочитав эту строчку я всегда вспомню, что Set наследник от Collection, в нем хранятся только уникальные значения и основными функциями будут contains(объект),containsAll(коллекция),add(объект),addAll(коллекция).
Например, моя шпаргалка по Hadoop и Hive занимает всего пол.листа A4. А конспект… слишком много информации, пока что-то найдешь в бумажном конспекте, проще будет в инете найти.hisbvdis Автор
05.06.2015 15:45не писать, а печатать
Речь, естественно, шла об «электронном» конспектировании :)
Я за более чем десяток лет промышленного программирования уже забыл все что использовал в универе, хотя решал не меньше
В этом основная проблема. Даже базовые знания через долгий промежуток времени можно забыть, если не использовать.
И так, наверное, в любой сфере
olegkrasnov
06.06.2015 22:25Лет 20 назад, по совету умных людей, открыл чудесный способ изучить что-либо. Называется RTFM (read the fucking manual).
С тех пор, когда изучаю новый софт или язык, тупо читаю документацию и пробую нужные вещи. Периодически (раз в год) перечитываю. Большинство вещей документируется достаточно хорошо, чтобы въехать в предмет без посторонней помощи. Почему-то многие не любят читать доки, а ищут другие каналы информации.
И да, конспект конечно нужен. У меня это файл с хотками и интересными фичами.
NightmareZ
Как по мне, лучше три раза прочитать одну информацию в разных источниках (изложенную по-разному), чем потратить то же время и записать её в конспект. В первом случае и в мозгу отложится не хуже и информация получится рассмотренной с разных точек зрения.
Кстати, читать стоит не три раза подряд, а с некоторым перерывом. Повторённая через некоторое время информация — лучше усваивается.
А ещё лучше — не просто несколько раз прочитать, а использовать в практике, чтобы информация запоминалась механически «на кончиках пальцев». Я, учась в вузе, прорешивал все билеты из экзаментов по программированию — тридцать повторений однотипных задач по массивам и циклам, например, и у меня в жизни уже никогда не будет с ними проблем.
hisbvdis Автор
Я хотел затронуть в статье плюсы «школьных» принципов обучения нового материала, но как-то не получилось по контексту уместить.
Уточняю, что статья для тех, кто самостоятельно пытается обучаться.
В этом случае экзаменов, к сожалению, нет. Максимум — то, что сам себе придумаешь. И это минус самостоятельного обучения по сравнению с обучением в ВУЗе.
NightmareZ
Ну я тоже, впринципе, о тех, кто самостоятельно обучается… хотя, пофигу… Про билеты я сказал чисто в плане многократного повторения.
Конспектирование — это скучное и тупое занятие. Вряд ли у кого-то найдётся столько силы воли, чтобы сидеть дома и самому что-то конспектировать.
Klaster
Слушал, записывал, оформил вот это(не реклама, не может wiki1c на хабре быть рекламой) wiki-1c.ru как раз результат конспектирования базового курса.
Danov
Положительный конечный результат — источник силы воли. Если конспектируете и безрезультатно, «сила воли» не позволит вам заниматься «тупой» работой.