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

Предыстория


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

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

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

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

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

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


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

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

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

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

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


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

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


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

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

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

Заключение


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

Комментарии (9)


  1. NightmareZ
    05.06.2015 14:05

    Как по мне, лучше три раза прочитать одну информацию в разных источниках (изложенную по-разному), чем потратить то же время и записать её в конспект. В первом случае и в мозгу отложится не хуже и информация получится рассмотренной с разных точек зрения.

    Кстати, читать стоит не три раза подряд, а с некоторым перерывом. Повторённая через некоторое время информация — лучше усваивается.

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


    1. hisbvdis Автор
      05.06.2015 14:25
      +1

      Я хотел затронуть в статье плюсы «школьных» принципов обучения нового материала, но как-то не получилось по контексту уместить.
      Уточняю, что статья для тех, кто самостоятельно пытается обучаться.
      В этом случае экзаменов, к сожалению, нет. Максимум — то, что сам себе придумаешь. И это минус самостоятельного обучения по сравнению с обучением в ВУЗе.


      1. NightmareZ
        05.06.2015 14:47

        Ну я тоже, впринципе, о тех, кто самостоятельно обучается… хотя, пофигу… Про билеты я сказал чисто в плане многократного повторения.

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


        1. Klaster
          05.06.2015 14:59

          Слушал, записывал, оформил вот это(не реклама, не может wiki1c на хабре быть рекламой) wiki-1c.ru как раз результат конспектирования базового курса.


        1. Danov
          06.06.2015 12:55

          Положительный конечный результат — источник силы воли. Если конспектируете и безрезультатно, «сила воли» не позволит вам заниматься «тупой» работой.


  1. vedenin1980
    05.06.2015 15:06

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

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

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

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

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

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


    1. hisbvdis Автор
      05.06.2015 15:45

      не писать, а печатать

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

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

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


  1. newcommer
    06.06.2015 18:52
    +1

    С нетерпением жду постов о том, что небо синее а трава зелёная.


  1. olegkrasnov
    06.06.2015 22:25

    Лет 20 назад, по совету умных людей, открыл чудесный способ изучить что-либо. Называется RTFM (read the fucking manual).

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

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