Дерек Сіверс: «Метод інтервального повторення - найкращий спосіб вивчення мов програмування»

Дерек Сіверс: «Метод інтервального повторення - найкращий спосіб вивчення мов програмування»

Коротка довідка: 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 Oneulating Knowledge» Петра Возняка

Рекомендую на цю тему почитати статтю Петра Возняка «20 Rules of Oneulating Knowledge» - там ви знайдете дуже багато корисних порад. Стаття знаходиться тут: http://www.supermemo.com/articles/20rules.htm.

Займайтеся щодня

Для найбільш ефективних результатів, запускайте програму кожен день. Якщо надовго закинути її, у вас до біса зіб'ється графік, в результаті вам доведеться заново вчити речі, які ви по ідеї повинні пам'ятати.

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

Можна зробити все набагато цікавіше - змусити себе відповідати на питання якомога швидше.

Мені це нагадує воркаут для мозку. 20 хвилин «важкої атлетики» в день окупляться у вигляді моментальних і довгострокових результатів.

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

Ув'язнення

Я вже рік практикую цей метод, і можу сказати, що він ЗНАЧНО підвищив мою продуктивність. Тому я вкрай настійно його рекомендую і вам.

Ви можете використовувати цей підхід у вивченні чого завгодно. Надихнути на це може ця стаття.

Не соромтеся, пишіть мені (Ця електронна адреса захищена від спам-ботів. Вам необхідно увімкнути JavaScript, щоб побачити її.) в будь-який час, ставте питання або просто діліться успіхами.

ОНОВЛЕННЯ

Після того, як я опублікував цей пост, мені показали цю відмінну статтю, яка пояснює методику навіть краще, ніж я, тому рекомендую ознайомитися.

Також багато хто просив мене поділитися своїми колодами по Ruby і JavaScript.

Взагалі, я не думаю, що це правильно, тому що картки Anki - це не джерело знань, а механізм, який допомагає вам освіжати ці знання в пам'яті. Саме отримання знань має йти з іншого середовища. Але, раз вам так хочеться, ось мої колоди по Ruby і JavaScript станом на 7 січня 2013р.

Щоб імпортувати їх до програми, натисніть «Файл».

Колода JavaScript

Колода Ruby

Image