Лучший способ изучения языка программирования

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

Краткая справка: в 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

Источник

Как учить языки программирования самостоятельно

Если вы ищете своё призвание и вам интересно программирование, вы наверняка задавались вопросом, с чего начать погружение в эту сферу. Один из возможных путей в IT — изучение языков программирования. Так вы освоите первый инструмент будущей профессии: HTML и CSS для вёрстки страниц, Java и Swift для мобильной разработки, SQL для работы с базами данных, а JavaScript и Python — для веб-разработки и не только.

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

Подводные камни самостоятельного обучения

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

  • медленный прогресс — обучение может занять больше времени, чем вы предполагали, и проходить с переменным успехом, но это не значит, что всё зря — просто наберитесь терпения и труды принесут результат;
  • перфекционизм — идеала не существует ни в жизни, ни в коде. Невозможно создать одновременно компактный, легко расширяемый, производительный и быстрый код. Каким-то критерием придётся пожертвовать — не делайте идеально, делайте хорошо, чтобы код соответствовал поставленной задаче;
  • неуверенность — страх может подстерегать на любом этапе обучения: не слишком ли поздно менять профессию, тот ли язык вы выбрали и получится ли дорасти хотя бы до специалиста среднего звена. Пусть уверенность вам придаёт тот факт, что вы уже решились изучить что-то новое и сделали первые шаги — а каждый новый приближает вас к заветной цели.
Читайте также:  Подвесная тумба способ крепления

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

Способы изучения языков программирования

Чтобы изучать программирование самостоятельно с нуля, вам потребуется система, которая не даст запутаться и свернуть с маршрута. Мы подробно рассмотрим способа освоения языков программирования: книги, тренажёры, метод Франклина и онлайн-курсы.

Если начали с основ, изучайте всю полезную информацию

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

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

Учебники и книги

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

Мы выбрали несколько самых востребованных языков программирования и вот какие книги по ним можем посоветовать:

Название О чём книга
С++. Базовый курс , Герберт Шилдт Вы с нуля изучите основные средства языка С++ от простых элементов и функций до расширений. Язык постоянно развивается и совершенствуется, поэтому новые издания регулярно дополняются актуальной информацией
C# 7 и .NET Core. Кросс-платформенная разработка для профессионалов , Марка Дж. Прайс Пусть вас не смущает формулировка «для профессионалов», эта книга включают всю необходимую базу C# для новичков
Изучаем программирование на JavaScript , Эрик Фримен и Элизабет Робсон Авторы доступным языком и с множеством примеров рассказывают, как написать универсальный код на JavaScript для любого браузера
Простой Python. Современный стиль программирования , Билл Любанович Вы изучите основы Python, освоите современные библиотеки и научитесь отлаживать и тестировать код. Автор приводит много примеров, чтобы наглядно продемонстрировать теорию начинающим программистам
Java. Полное руководство , Герберт Шилдт Вы поймёте, как разрабатывать и отлаживать код на Java и оптимизировать написание кода через универсальные шаблоны и научитесь создавать графические элементы для интерфейсов в библиотеках Swing и JavaFX

При выборе книг отталкивайтесь от своего уровня знаний — нет ничего зазорного, чтобы начать изучать программирование с книг для детей. Взрослым тоже будут полезны книги вроде «Python для детей» Д. Бриггса или «Minecraft. Программируй свой мир на Python» Д. Вэйла и М. О`Хэнлона, поэтому не сбрасывайте их со счетов.

Тренажёры

Продолжая тему детства: учебный процесс не обязательно скучный и серьёзный. Учить программирование можно в игровой форме — для этого разработаны специальные тренажёры.

  • Code Combat — изначально Code Combat позиционировали себя как платформа для детей и подростков, но со временем она привлекала всё больше взрослых учеников. Вы сможете с нуля освоить Python, JavaScript и C++, а играть можно индивидуально и в командах. Вы сами выбираете, какой язык изучать, и проходите игру уровень за уровнем с нарастающей сложностью;
  • CodingGame — это игровая платформа для программистов, где вы научитесь писать код во время игры и можете добавить его себе в портфолио. Сайт поддерживает 25 языков программирования, можно играть самостоятельно или в команде, участвовать в международных соревнованиях и конкурсах и оттачивать навыки на практике;
  • CheckIO — ресурс для обучения и практики программирования на Python и TypeScript, где можно прокачать навыки кодирования — для перехода на каждый следующий уровень игры необходимо написать новый код. В скором времени CheckIO обещают запустить тренажёр для JavaScript и других языков программирования.

Не все тренажёры доступны на русском языке, но в CheckIO есть отдельные игры на русском. Так или иначе в будущей IT-карьере вам придётся часто сталкиваться с английским языком — базовые команды и термины вы сможете различать и без продвинутого владения иностранными языками. Программистам полезно владеть не только языками программирования, но и английским — это даст возможность участвовать в международных проектах и работать на иностранные компании. Если вам нравятся такие перспективы, начинайте прокачивать язык уже сейчас.

Метод Франклина

В основе метода Франклина — память и практика. Чтобы научиться программировать, нужно выполнить 4 действия:

  1. Прочитать пример — предположим, вы хотите запомнить код.
  2. Прочитать его ещё несколько раз — при этом делайте пометки в самых интересных на ваш взгляд местах, это поможет лучше запомнить.
  3. Попробовать повторить — закройте книгу и делайте всё по памяти, это важно. Даже если не получается, не открывайте книгу сразу — боритесь с проблемой и решайте самостоятельно. Постарайтесь сделать дубликат кода, который вы прочитали.
  4. Сравнить и повторить снова — сравните свой код с представленным в примере, исправьте ошибки и допишите то, что не смогли вспомнить. Прочитайте полученный код несколько раз, удалите его, и повторите всё сначала.
Читайте также:  Засолка горбуши холодным способом

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

Онлайн-курсы

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

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

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

Как изучать языки программирования на онлайн-курсах

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

Онлайн-курсы по языкам программирования

Мы заглянули на github.com и узнали, какие языки программирования сегодня наиболее востребованы:

Рейтинг языков программирования github.com

Так как TypeScript — это не столько язык программирования, сколько расширение для JavaScript, остановимся на следующих языках: JavaScript, Python, Java, C# и PHP.

JavaScript — подходит для мобильных платформ iOS и Android и операционных систем Windows, macOS и Linux. На нём разрабатывают пользовательские интерфейсы сайтов и приложений.

Освоить JavaScript можно на курсах из подборки ТОП-8 курсов по обучению JavaScript

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

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

C# — на нём создают мобильные и веб-приложения, игры и ПО для компьютеров и мобильных устройств. Так, большинство продуктов Microsoft Office были разработаны именно на этом языке.

Пройдите онлайн-курсы из нашей подборки курсов по С#

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

Онлайн-курсы по IT-направлениям

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

Фронтенд-разработка — создание внешней стороны сайтов и пользовательского интерфейса: кнопок, плашек, баннеров и др. Помимо адаптивной вёрстки, тестирования веб-приложений, графических редакторов и конструкторов сайтов фронтенд-разработчик должен освоить языки HTML, CSS, JavaScript и TypeScript.

Если вам интересно это направление, пройдите курсы по фронтенд-разработке

Бэкенд-разработка — создание «начинки» сайта и приложений и контроль за их корректной работой. Бэкенд-разработчик знаком с принципами объектно-ориентированного программирования и владеет минимум одним из языков программирования — PHP, C#, Java, Python или JavaScript.

Мобильная разработка — создание приложений и игр для мобильных устройств на iOS и Android. Специалистам необходимо освоить минимум один из языков программирования: Swift и Objective-C для iOS или Kotlin и Java для Android.

Становитесь мобильным разработчиком на курсах мобильной разработки

Data Science — это комплексная работа с данными: сбор, обработка, анализ и автоматизация анализа данных. В работе дата-сайентиста не обойтись без навыков статистики и анализа и языков SQL, R и Python.

Машинное обучение включает создание искусственного интеллекта и обучение компьютерных программ обработке данных. Яндекс и Google.Карты, стриминговые сервисы и сайты прогноза погоды работают на базе искусственного интеллекта. В машинном обучении не обойтись без Python и его библиотек.

Осваивайте это направление на курсах по машинному обучению

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

Источник

Оцените статью
Разные способы