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