Дерек Сиверс: «Метод интервального повторения — лучший способ изучения языков программирования»
Краткая справка: в 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
Автор: YuraYu