Pull to refresh

Дерек Сиверс: «Метод интервального повторения — лучший способ изучения языков программирования»

Reading time6 min
Views115K
Original author: Дерек Сиверс
Краткая справка: в 1998 году Дерек Сиверс основал компанию CD Baby и превратил ее в крупнейшего онлайн-продавца независимой музыки. В 2008-ом вырученные от продажи компании $22 миллиона Дерек передал в благотворительный траст на нужды музыкального образования.
Речи Дерека на TED просмотрели более 5 миллионов раз, а его собственная книга занимала первую строку в чарте книг для предпринимателей на Amazon.
Сам себя Дерек считает «вечным учеником».


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

Моя история



Признаюсь, я достаточно посредственный программист. У меня нет специального образования. Я просто учился кое-чему ввиду необходимости – я запустил небольшой сайт CD Baby, который со временем стал разрастаться, и поскольку я не мог позволить себе нанять специалиста, я просто потратил около 25$ на книги по PHP, SQL, Linux и Apache. Из них я почерпнул тот минимум знаний, который помог мне поддерживать сайт в рабочем состоянии. Годами я использовал этот скромный набор.

Однако позже, когда мне довелось работать бок о бок с НАСТОЯЩИМИ программистами, я был просто поражен объемом их знаний. Все эти команды и функции просто отскакивали от их пальцев. Мы пользовались одним и тем же языком, однако они хранили в памяти такое невероятное количество информации, что я почувствовал себя третьеклассником рядом с профессором университета. Мне захотелось добиться такой же скорости работы.

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

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

Интервальное повторение



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

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

Однако, согласно результатам исследования, самое эффективное время для повторения выученного, это момент, когда вы вот-вот готовы его забыть.



Предположим, вы выучили новое иностранное слово. Повторите его спустя несколько минут после того, как услышали его, затем – через пару часов, затем – через день, затем – через 2 дня, затем – через 5 дней, затем – через 10 дней, 3 недели, 6 недель, 3 месяца, 8 месяцев и т.д. Через некоторое время оно накрепко засядет в вашей голове – нужно будет лишь изредка его повторять.

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

По этой ссылке: ankisrs.net можно скачать программу Anki – бесплатную и самую популярную программу такого рода. Существуют версии для Mac, Windows, Linux, iPhone, Android и т.д. Написана на Python.

Ну а теперь поговорим непосредственно о программировании.

Что если бы вы могли запомнить все в изучаемом вами языке программирования? Все команды, параметры, функции. Решения для сотен самых распространенных проблем – все это практически на уровне мышечной памяти? Представьте, как читаете книгу или документ и запоминаете все в мельчайших подробностях!

Ну ладно, пора переходить от вступления к делу.

Для начала выучи!



Начну с того, что проясню одну важную вещь:

Карточки нужны для того, чтобы запомнить то, что выучил.

Прежде чем создавать карточку, посвященную чему-либо, нужно в первую очередь это что-либо понять и запомнить. Каким бы не был ваш источник – будь то книги, лекции, видеозаписи, код, онлайн-уроки, или любой другой – создавать карточку можно лишь после того, как новая информация была выучена и усвоена.

(Именно поэтому использование чужих колод не так эффективно. Это же просто напоминалки.)

Формулируйте знания в виде небольших фактов



Вам предстоит создать огромное количество карточек. Вопрос — с одной стороны. Ответ – с другой.

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






С другими дисциплинами не все так просто – от вас потребуется немного творческого мышления.

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

Я занимаюсь этим уже около года, так что могу поделиться, как максимально сэкономить время.

Заменяйте долгие описания примерами с использованием кода


Если учите JavaScript, и сталкиваетесь со следующим правилом:

«Оператор сложения (+)… если хотя бы один операнд – строковый, второй также преобразуется в строковый, таким образом, результат сложения – объединение двух строковых операндов.»


Вы проверяете эту информацию на практике, изучаете вопрос вдоль и поперек, в итоге выясняете, что 1 + '1' таки равно '11'. После чего создаете карточку, которая поможет запомнить этот факт:



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

Ставьте себе вопросы с подвохом


Вот следующая выдержка из учебника по JavaScript:

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


Проверяете на практике, пробуете разные варианты, и создаете две карточки. Попытаемся подловить себя будущего:



… и за ней – практически идентичный вопрос…



Когда программа будет вас проверять, она будет выдавать карточки с вопросами вперемешку, поэтому подвох вас ждет – как обычно – в самый неожиданный момент.

Можете попробовать более изощренные варианты, которые заставят вас надолго запомнить «интересные» карточки:



Не забывайте также задавать себе небольшие задачки:



Запоминайте интересные приемы


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



Задавайте вопросы с несколькими вариантами ответов


Если есть два и более решения той или иной задачи, и вы хотите запомнить все, формулируйте вопрос соответственно, чтобы в будущем, отвечая на вопрос, вы вспомнили все возможные варианты. (Кстати следующие ниже примеры взяты из языка Ruby.)



Учите объемные понятия посредством коротких примеров


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



Другой пример:



Прочитайте «20 Rules of Formulating Knowledge» Петра Возняка


Рекомендую на эту тему почитать статью Петра Возняка “20 Rules of Formulating Knowledge” – там вы найдете очень много полезных советов. Статья находится здесь: http://www.supermemo.com/articles/20rules.htm.

Занимайтесь каждый день



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

Вы можете запомнить тысячи фактов, тратя на них по 20 минут в день. Для меня это утренний ритуал. Наливаю чашечку горячего чая. Открываю Anki. Пью чаек.

Можно сделать все гораздо интереснее – заставить себя отвечать на вопросы как можно быстрее.

Мне это напоминает воркаут для мозга. 20 минут «тяжелой атлетики» в день окупятся в виде моментальных и долгосрочных результатов.

Добавляйте все новые и новые карточки, и вы будете удивлены, насколько свежа вся эта информация в вашей голове.

Заключение



Я уже год практикую этот метод, и могу сказать, что он ЗНАЧИТЕЛЬНО повысил мою продуктивность. Поэтому я крайне настоятельно его рекомендую и вам.

Вы можете использовать этот подход в изучении чего угодно. Вдохновить на это может эта статья.

Не стесняйтесь, пишите мне (derek@sivers.org) в любое время, задавайте вопросы или просто делитесь успехами.

ОБНОВЛЕНИЕ



После того, как я опубликовал этот пост, мне показали эту отличную статью, которая объясняет методику даже лучше, чем я, поэтому рекомендую ознакомиться.

Также многие просили меня поделиться своими колодами по Ruby и JavaScript.
Вообще, я не думаю, что это правильно, потому что карточки Anki – это не источник знаний, а механизм, который помогает вам освежать эти знания в памяти. Само получение знаний должно идти из другой среды. Но, раз вам так хочется, вот мои колоды по Ruby и JavaScript состоянием на 7 января 2013г.
Чтобы импортировать их в программу, нажмите Файл → Импортировать.
Колода JavaScript
Колода Ruby
Tags:
Hubs:
Total votes 74: ↑68 and ↓6+62
Comments45

Articles