Как тогда применить? Этот вопрос не давал мне покоя с первой главы Peak: Secrets from the New Science of Expertise. В течение прошлого года я искал ответ, экспериментируя с техникой преднамеренной практики, описанной в книге, в разных областях, от письма и программирования до публичных выступлений.

Повторение задач на удобном для вас уровне не развивает ваши навыки. Отсутствие обратной связи никуда не приведет. Это общепринятая практика.

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

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

  1. Нет наставника для обратной связи.
  2. Программирование (технологии в целом) — это детская сфера.
  3. Нет учебной программы, поэтому сложно ставить SMART-цели.
  4. Нечеткое определение "практики".

Ниже приведены анекдотические решения для каждого пункта.

  1. Нет наставника для обратной связи. Обратитесь к более опытным программистам-самоучкам. Следите за их следами: проектами, над которыми они работали, их достижениями. Для обратной связи выпишите код из памяти и сравните его с исходным кодом. Это может быть проект с открытым исходным кодом, который вы стремитесь создать, или идеальное решение вопроса программирования. Если ваша логика отличается от авторской, отметьте ее неправильно и проверьте свое понимание, объяснив ее письменно. (Опять же, больше письма). Именно через такое сравнение и повторение вы замечаете свою слабость и укрепляете ее.
  2. Программирование – это новая область, которой всего несколько десятков лет. Несмотря на то, что в ближайшее время мы не добавим новую клавишу на пианино (классическое пианино — одна из немногих областей, на которых основаны исследования), технологии — это постоянно развивающаяся область. Но это то, что движет инновациями. И лучший путь к инновациям — это учиться, закреплять и применять множество тем в реальной жизни. Вот где сияет преднамеренная практика — она выходит за рамки обычной практики и может помочь вам достичь того, чего не может большинство людей.
  3. Никаких crucciulun, никаких SMART-целей. «Понять ООП» — это НЕ SMART-цель. Измените его на: «Применить ООП в этом x проекте». Создавая проект, вам предлагается искать ресурсы, которые освещают необходимые концепции. Расширьте его с помощью: «… следуя этим y и z проектам/руководствам. Однако будьте осторожны: распространенная ошибка новичков состоит в том, что они полностью следуют ускоренному курсу или учебнику, в котором вводятся одна новая концепция за другой. Более экономичный подход: изучите и отработайте концепции, необходимые для целевого проекта; игнорировать все остальное. Последнее расширение: «… после чего я объединим концепции, переписав и применив».
  4. Что вообще такое «практика» в программировании?Возьмите эти два сценария. Кодирование вместе с учебным пособием против написания проекта и сравнения его с исходным кодом. Человек изучает что-то новое; другой - практика/закрепление. Что нам нужно, так это баланс обоих — с приправой для экспериментов. Первый случай может привести к учебному аду. Второй следует принципу консолидации, а не новизне. Лучшая альтернатива тому, чтобы гоняться за одним учебником за другим, — это оттачивание основных концепций нескольких хороших проектов. Закрепите эти концепции, переписав. Применяйте их в личных проектах для дальнейшего закрепления.

Итак, как именно вы консолидируете код из проекта?

Простой. Запишите код по памяти. Я предпочитаю ручку и бумагу печатать. (Конечно, есть и другие способы вывода кода.)

Подражайте тому, что делал Бенджамин Франклин в своей писательской практике.

  1. Создавайте псевдокод с подсказками из наиболее значимых фрагментов кода.
  2. После написания сравните свой код с авторским. Наблюдайте за своими ошибками и исправляйте их.
  3. Пишите чаще фрагменты, с которыми у вас больше всего проблем.

Это обратная связь.

Это недостающая часть головоломки для многих начинающих программистов-самоучек.

Это очень важно.

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

Но я считаю, что преднамеренная практика в сочетании с другими принципами и привычками — это правильный путь.