Метод обучения программированию: «конспектирование»

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

Предыстория


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

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

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

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

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

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


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

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

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

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

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


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

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


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

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

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

Заключение


В наше время многие пытаются изучить программирование. Небольшой части удается начать работать в этой сфере, еще меньше людей становятся специалистами. Я в данный момент только пытаюсь. И надеюсь, что мои небольшие наработки помогут другим новичкам улучшить качество обучения.
Метки:
  • +1
  • 13,6k
  • 9
Поделиться публикацией
Комментарии 9
  • НЛО прилетело и опубликовало эту надпись здесь
    • +1
      Я хотел затронуть в статье плюсы «школьных» принципов обучения нового материала, но как-то не получилось по контексту уместить.
      Уточняю, что статья для тех, кто самостоятельно пытается обучаться.
      В этом случае экзаменов, к сожалению, нет. Максимум — то, что сам себе придумаешь. И это минус самостоятельного обучения по сравнению с обучением в ВУЗе.
      • НЛО прилетело и опубликовало эту надпись здесь
        • 0
          Слушал, записывал, оформил вот это(не реклама, не может wiki1c на хабре быть рекламой) wiki-1c.ru как раз результат конспектирования базового курса.
          • 0
            Положительный конечный результат — источник силы воли. Если конспектируете и безрезультатно, «сила воли» не позволит вам заниматься «тупой» работой.
      • 0
        тридцать повторений однотипных задач по массивам и циклам, например, и у меня в жизни уже никогда не будет с ними проблем.

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

        Конспектирование — это скучное и тупое занятие.

        На мой взгляд лучше не писать, а печатать и не конспекты, а шпаргалки из разряда:
        Set< — Collection(уник.значения,contains,containsAll,add,addAll)

        Прочитав эту строчку я всегда вспомню, что Set наследник от Collection, в нем хранятся только уникальные значения и основными функциями будут contains(объект),containsAll(коллекция),add(объект),addAll(коллекция).

        Например, моя шпаргалка по Hadoop и Hive занимает всего пол.листа A4. А конспект… слишком много информации, пока что-то найдешь в бумажном конспекте, проще будет в инете найти.
        • 0
          не писать, а печатать

          Речь, естественно, шла об «электронном» конспектировании :)

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

          В этом основная проблема. Даже базовые знания через долгий промежуток времени можно забыть, если не использовать.
          И так, наверное, в любой сфере
        • +1
          С нетерпением жду постов о том, что небо синее а трава зелёная.
          • 0
            Лет 20 назад, по совету умных людей, открыл чудесный способ изучить что-либо. Называется RTFM (read the fucking manual).

            С тех пор, когда изучаю новый софт или язык, тупо читаю документацию и пробую нужные вещи. Периодически (раз в год) перечитываю. Большинство вещей документируется достаточно хорошо, чтобы въехать в предмет без посторонней помощи. Почему-то многие не любят читать доки, а ищут другие каналы информации.

            И да, конспект конечно нужен. У меня это файл с хотками и интересными фичами.

            Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.