Вы, наверное, слышали о преднамеренной практике: преднамеренной и осознанной практике, которая используется для повышения производительности. [1] Это означает, что вы входите в практику с целью, а не бездумно выполняете движения. Постановка конкретных целей, получение обратной связи и выход из зоны комфорта - вот некоторые из основных частей осознанной практики.

Популярность сознательной практики заслужена: исследования в самых разных областях показали ее эффективность [1].

Но чего-то не хватает в сознательной беседе о практике: как применить осознанную практику к программированию?

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

Практика против осознанной практики

Не все практики одинаковы.

Когда большинство людей думают о «практике», они думают о бессмысленных повторениях. Баскетболист делает бросок в прыжке за ударом в прыжке. Пианист снова и снова играет песню «x». В конце концов они станут «достаточно хорошими», и им не придется об этом думать. [1]

Но за такую ​​практику приходится платить: в конечном итоге они выйдут на плато и перестанут поправляться [1]. Это потому, что одно лишь повторение не дает опыта.

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

Этот пример подчеркивает суть.

Программист А:

  • Начинаем программировать сегодня
  • Выбирает задачу, которую легко решить
  • Периодически останавливается, чтобы проверить телефон и ответить на текстовые сообщения

Программист Б:

  • Устанавливает рекурсивное решение проблемы «града» (рекурсия сложна для программиста B)
  • Запрограммирую на один час
  • Записывает места для рефакторинга при решении проблемы
  • Когда проблема решена, Программист Б изучает код других людей, решавших ту же проблему; делает записи о том, что было изучено; сравнивает решения и определяет, что могло бы быть лучше

Как вы думаете, кому станет лучше после месяца практики?

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

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

1. Установите цель.

Ставьте цель каждый раз, когда вы программируете. Примеры включают:

  • Найдите ошибку в программе «x»
  • Рефакторинг класса «y»

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

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

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

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

  • Вы достигли своей цели?
  • Как далеко ты ушел?
  • Где вам нужно забрать в следующий раз?

Ответы на эти вопросы помогут вам в следующем практическом занятии по программированию.

2. Выйдите из зоны комфорта.

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

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

Я отчетливо помню, как впервые пробежал восемь миль. Был очень холодный февральский день, и меня переполнял страх, потому что я никогда не убегал так далеко. Но я сделал это и в результате сбросил планку своих лимитов. Это придало мне уверенности, что я смогу достичь следующего рубежа: 13 миль. Потом 15 миль. Потом 18 миль и так далее. Я постепенно увеличивал свой пробег, каждый раз подталкивая себя еще немного за пределы своей зоны комфорта.

И в этом суть. Если вы не умеете плавать, выход за пределы зоны комфорта не означает прыжка в глубокую пропасть. Это не означает, что от «легких» задач на LeetCode переходят к «сложным» за один день.

Скорее это означает постановку цели, которая вызовет у вас достаточно трудностей. Допустим, вы написали проект на React, используя функции. Повторите проект с помощью классов, если классы для вас трудны или новы.

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

Поначалу это тоже неудобно. Но в конце концов в вашем уме загорится свет. Вы устанавливаете связи. Вы замечаете закономерности. Вы заново определили, что возможно.

3. Найдите тренера, даже если вам придется импровизировать.

Неудивительно, что личный учитель или тренер предлагает множество преимуществ. Они могут предоставить отзывы и рекомендации, над которыми вы можете поработать. [1] Они также могут сказать вам, на каких областях следует сосредоточиться.

Но что делать, если у вас нет личного учителя или тренера по программированию?

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

Привычки эксперта-исследователя

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

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

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

Кодекс эксперта по изучению

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

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

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

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

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

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

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

Научитесь самооценке

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

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

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

Сделайте ваши часы программирования на счету

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

В этом контексте это означает получение максимальной отдачи от времени, потраченного на программирование, которое сводится к одной фразе: осознанная практика. «Каждый может стать лучше, - пишет психолог Андерс Эрикссон, - но это требует правильного подхода» [1]. Поэтому, если вы собираетесь потратить время на практику, сделайте это осознанно.

Ссылка:

[1] Эрикссон, Андерс и Роберт Пул. Пик. Нью-Йорк, Нью-Йорк, Houghton Mifflin Harcourt Publishing Company, 2016.

Программист и писатель: amymhaddad.com | Programmerspyramid.com | Я пишу в Твиттере о программировании, обучении и продуктивности @amymhaddad

Первоначально опубликовано на amymhaddad.com.