Система обучения на основе интервального повторения



Малкольм Гладуелл в «Гениях и аутсайдерах» писал, что на освоение чего-либо уходит порядка 10 000 часов. Тренируйтесь по три часа в день – и через каких-то десять лет вы будете мастером. Миллионы читателей воспарили к небесам, – ведь всего-то стоит вложить n-ное количество часов, а на выходе получить нового Билла Гейтса. Дни перетекали в месяцы, а мы тем временем начали понимать, что 10 000 часов – намного дольше, чем мы ожидали. Безграничные возможности превратились в очередную фантазию на тему «а ведь можно было…».

Метод Janki – попытка сократить время, необходимое на обучение программированию. Он стал плодом моего навязчивого стремления создать автоматизированный интернет-бизнес, который дал бы мне финансовую свободу, избавил бы от географических и временных ограничений. И мне не хотелось ждать 10 000 часов. Думаю, вам тоже.

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

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

Метод Janki основан на предположении, что 10 000 по Гладуэллу можно сократить при помощи сосредоточенного подхода к обучению. Метод построен на использовании системы карточек для интервального повторения в приложении Anki, создателем которого является великолепный Дэмиен Элмс.

Уверен, что следуя моему подходу, любой смышленый и дисциплинированный человек может достичь мастерства* в выбранной области программирования (например, веб-приложения, приложения для iPhone) менее, чем за год. Я назвал это Janki Challenge и приглашаю вас принять участие.

Что мешает нам учиться

Проблема 1: Мы слишком быстро забываем то, что выучили

Скажите, вам знакома ситуация, когда вы неделю упорно готовитесь к экзамену с тем, чтобы спустя два месяца быть едва ли в состоянии вспомнить хотя бы 10% от выученного, а через год полностью забыть материал?

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

Первое правило Janki улучшает память:

"Каждый раз, когда вы узнаете что-то новое, создайте в Anki карточку формата «вопрос-ответ»."

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

Для начала, создайте колоду под названием, скажем, «Информатика». В колоде множество карточек, каждая из которых содержит вопрос и ответ на него. Помечайте карточки тегами, которые наилучшим образом отражают их содержание. Например, карточку можно пометить тегом «Rails» или «SQL». Одной карточке можно присваивать по несколько тегов, ведь технологии зачастую пересекаются.

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

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



Все происходит следующим образом: программа выдает карточку с вопросом, область с ответом скрыта. Вам нужно про себя ответить на вопрос, после этого нажимаете «Показать ответ» и проверяете, справились ли вы с задачей. Внизу окна есть несколько кнопок: «Не помню», «Трудно», «В самый раз», и «Очень легко». Насколько легко вы вспомнили ответ – ту кнопку и нажимайте. Основываясь на вашем выборе, Anki назначит время, когда в следующий раз показать вам данную карточку, поэтому отвечайте честно, и тогда система будет работать должным образом.



Выполняйте каждый день – и вы не забудете.

Проблема 2: Мы слишком быстро сдаемся

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

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

Второе правило Janki призывает к ежедневной практике:

«Занимайтесь по Anki каждый божий день, включая все выходные и праздники – вы должны обязать себя заниматься постоянно.»

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

Правило №2 не такое страшное, как может показаться. Через пару месяцев занятий, вам будет достаточно уделять программе не более 5-8 минут в день. Найти время для занятия – тоже не проблема, ведь также доступна версия Anki для смартфонов. Вы можете повторять карточки по пути на работу, в автобусе, в свободную минутку на работе. Программа также предоставляет функцию синхронизации состояния колод, поэтому изменения будут отображаться на всех устройствах привязанных к одной учетной записи.

Проблема 3: Мы учимся вне контекста

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

Третье правило Janki заставляет сконцентрироваться на том, что важно в данный момент:

«Учитесь в контексте. Беретесь за проект – изучайте лишь то, что поможет вам успешно его завершить.»

Когда я писал этот пост, я не знал, как добавлять изображение на языке Textile.



Шаг 1: Я нашел ответ в Google



Шаг 2: Я попытался написать код, добавляющий изображение в пост.



Шаг 3: Убедившись, что все работает как следует, я добавил новую операцию в колоду Anki.

Проблема 4: Нам кажется, что научиться можно не прибегая к практике

«Я выбрал самый худший способ познавать секс – по книге»
Эдди Иззард


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

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

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

Четвертое правило Janki подкрепляет теорию практикой:

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

Скажем, вы работаете над приложением на базе SQL. В ходе работы вы будете обращаться к литературе по разработке баз данных и SQL (язык структурированных запросов). Время от времени вам будут попадаться новые понятия. Пробуйте применять каждую новую крупицу знаний, прежде чем добавлять ее в колоду Anki. Если, к примеру, вы прочли о том, как удалить ряд из таблицы базы данных, для начала попробуйте воспользоваться этим методом и удалить ряд из собственной базы, и только потом добавляйте карточку, посвященную данной операции.

Проблема 5: Мы ошибаемся чаще, чем следовало бы

/*Допущенные нами в прошлом ошибки – отличное средство для развития памяти. Именно по этой причине мы учимся на практике. Но не все ошибки преподают нам уроки одинаково эффективно; есть некая зависимость между эмоциональным воздействием, оказанным ошибкой и временем хранения полученного урока в памяти.*/

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

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

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

Пятое правило метода Janki снижает повторяемость ошибки:

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

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

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



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

Проблема 6: Мы не мыслим масштабно

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

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

Шестое правило метода Janki призывает к критическим рассуждениям:

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

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

- Сколько времени я потратил, пытаясь выбраться из всевозможных тупиков? Что я могу сделать для того, чтобы в будущем прогнозировать и избегать их?
- Действительно ли я использовал правильный подход? Могу ли я придумать схему, которая поможет мне в будущем делать правильный выбор?
- Оправдало ли время выполнения работы мои ожидания?
- Мог бы я составить более простую архитектуру? А раньше я мог до этого додуматься?
- Могу ли я составить чек-лист, который упростил бы работу над подобными проектами в будущем?

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

Проблема 7: Мы не следим за порядком в своих хранилищах знаний

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

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

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

Седьмое правило Janki помогает следить за порядком в ваших колодах:

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

Следующий пример иллюстрирует слабое понимание Git, позднее замененное более подробным и полным видением.





Проблема 8: Мы не обращаемся к первичным источникам

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

Для вас, как программиста, источником вдохновения должен служить чужой код. Качайте проекты с открытых источников (Github) и просматривайте код. Натолкнулись на ту часть, которую не понимаете, создавайте новую карточку, если нужно. Возьмите ручку и бумагу и набросайте путь, по которому «движется» программа. Каковы входные данные, что по-вашему получится в результате? Что происходит с данными по мере того, как они движутся через программу? Почему программа была сделана именно такой? Какие приемы использовались при ее создании?

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

Восьмое правило Janki призывает использовать чужой код в качестве обучающего материала:

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

Метод Janki: Нечто большее, чем просто тренировка памяти

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

Преимущество 1: Скорость написания кода увеличивается

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

Большую часть времени при написании программ я трачу на дебаггинг – исправление своих или чужих ошибок в коде. Хорошие знания платформы могут значительно ускорить процесс. В значительной мере отладка подразумевает сбор информации. Какова задача системы? Какие данные находились в системе в момент сбоя? Что могло пойти не так? Зачастую ошибочка в одной-единственной строке может вызвать баг, который может привести к падению целого сайта. Однако не так просто среди тысяч строк программного кода найти ту самую.

Рассмотрим следующий пример. Допустим, ваша программа использует 100 функций, из них 70 – встроенные, т.е. стандартные для используемого языка. Остальные 30 – пользовательские. Если вы четко знаете данные ввода и вывода встроенных функций, дебаггинг значительно упрощается, ведь вам остается выяснить, как работают те 30 пользовательских функций. Учитывая то, что пользовательские функции во многом определяются функциями стандартными, это задание также не должно забрать слишком много времени. Прочные знания в области синтаксиса, ввода-вывода, и использования стандартных функций позволят вам сузить круг поиска и, в конце концов, определить ошибку.

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

Вы, возможно, хотите возразить, – мол, таких улучшений скорости можно добиться и с опытом. Это верно, но мы с вами идем совершенно другим путем. Janki позволяет приобрести те же знания, но быстрее, и хранить их вы сможете дольше. Если вы сделали что-то, но затем, спустя пару месяцев не можете повторить вновь — запомнить, как и что делать вам поможет Anki.

Преимущество 2: Разбивка

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

Это можно продемонстрировать следующим примером. Давайте умножим 130 на 30 двумя способами.

Способ 1: Вам известно, что умножение – это многократное сложение, то есть наш пример можно представить в виде 130 + 130 + 130… и т.д. Таким образом, используя правило сложения, вы рано или поздно получите ответ – 3900. Давайте назовем уровнем интеллекта способность быстро выполнять отдельные вычисления.

Способ 2: Возможно, из школьной таблицы вы помните, что 13х3 будет 39. Вы также можете помнить, что при умножении круглых чисел, нули просто складываются и дописываются в конце результата. Таким образом, наш пример упрощается до следующего вида 13х3+два нуля в конце. В итоге получаем те же 3900. Уровень интеллекта, или скорость сложения, в данном случае неактуальна, поскольку знание позволяет вам значительно упростить задачу.

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

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

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

Преимущество 3: Удобный архив, заключающий в себе все ваши знания в области программирования.

Случалось с вами такое: ваш компьютер выдает ошибку, вы помните, что когда-то уже с ней встречались, но, как на зло, не помните, как ее решить? До того, как я создал этот метод, со мной такое происходило очень часто.

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

Мне это дико не нравилось. Не люблю решать одну и ту же проблему дважды. Метод Janki поможет избежать этой ситуации.

В Anki есть функция поиска карточек. Можно также задействовать фильтр даты и тега. К примеру, вам нужно найти карточки, содержащие слово “ssh”, созданные полгода назад, и содержащие тег «внедрение».



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

Преимущество 4: Не нужно изобретать колесо

Современные языки программирования имеют множество встроенных алгоритмов, или же эти алгоритмы хранятся в корневой библиотеке. Это в первую очередь касается таких продвинутых языков, как Ruby и Python. Нужно упорядочить массив? Array#sort, и задача решена.

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

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

Дополнение

Стоит ли скачивать чужие колоды?

На сайте Anki есть база, содержащая колоды пользователей, которыми те решили поделиться. Хотя в этой базе не так много колод, посвященных программированию, кое-что можно найти, объединить и использовать в качестве фундамента для вашей собственной базы знаний.

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

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

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

Моя колода содержит около 6000 карточек и посвящена в основном Ruby on Rails, включая карточки по таким темам, как Ruby и Rails 3.1, HTTP-потокол, командная строка Unix, Git, CSS, JavaScript, VIM, Rspec, Capybara, TDD, Coffeescript, jQuery, coffeescript, sass, внедрение, шаблоны дизайна, часто встречающиеся выражения, SQL, рефакторинг, и алгоритмы. Все помечено тегами, аккуратно оформлено и соответствует сегодняшнему положению дел. Эти знания – все, что мне потребовалось для того, чтобы разработать, скоординировать, и внедрить целый ряд веб-приложений. Вы можете скачать мои карточки по веб-разработке здесь.

Какие знания стоит добавлять в колоды, а какие – нет?

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

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

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

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

б) Факт касается одной из крупнейших технологий, которые актуальны уже на протяжении долгого времени, и с большой долей вероятности в ближайшее время никуда не денутся (Linux, Ruby, Javascript, VIM, git, HTML, CSS, SQL)

в) Факт (пусть даже относится к библиотеке, которая возможно изменится в ближайшее время) используется мной каждый день, и предполагается, что и впредь будет входить в мой инструментарий. Еще лучше, если технология востребована, ведь высокий спрос приятно отражается на вашем кармане (Rails, jQuery ).

Какие основные комбинации клавиш мне нужно знать?

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

Нажмите Enter чтобы программа выдала ответ на вопрос карточки, оценивайте свой ответ клавишами 0, 1, 2, или 3.

Command + Backspace – удалить карточку. Используйте эту комбинацию, если карточка содержит сложную для понимания / неправильную / устаревшую информацию.
Command + E – редактировать. Tab перемещает курсор между полями вопроса в поле ответа.

Janki-вызов

Хотите научиться программировать и создавать мощные приложения? Тогда предлагаю пройти Janki challenge. Скачайте программу Anki (ссылка ниже), выберите проект, и заявите друзьям, что берете на себя обязанность научиться программированию.

Зачем нужно публично брать на себя обязанность? Дело в том, что таким образом вы создаете вокруг себя давление, которое заставит вас держать слово. Оно также поможет вам преодолеть первые, самые сложные этапы, на которых большинство сыпется.

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

Скачивайте программу Anki для различных ОС и устройств бесплатно
5500 карточек по веб-разработке от Джека Кинселлы
Скачать другие карточки по различным областям знаний

Джек Кинселл

Источник перевода

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

Алексей Горький

Файлы

Возвращение времени. От античной космогонии к космологии будущего

Закат и падение Римской империи

Getting Things Done - Контроль над жизнью

Загадки электричества