Осознанная практика: почему просто «много кодить» не делает вас сильнее
Можно писать код десять лет и остаться на уровне второго года. Разбираемся, чем механическое повторение отличается от практики, которая реально прокачивает мозг программиста.
Таксист с тридцатилетним стажем не становится чемпионом «Формулы-1» — и с кодом ровно та же история.
Навык растёт не от количества часов, а от количества часов, проведённых на самом краю того, что вы умеете.
Существует красивый миф про «10 000 часов»: якобы столько нужно, чтобы стать мастером в чём угодно. Проблема в том, что исходное исследование психолога Андерса Эрикссона, на которое все ссылаются, говорило совсем не это. Эрикссон изучал скрипачей и шахматистов и обнаружил кое-что неудобное: значение имеют не любые часы, а только часы осознанной практики (deliberate practice). А это совершенно особый режим работы мозга.
Чем осознанная практика отличается от обычной работы
Когда вы в сотый раз пишете очередной CRUD-эндпоинт по знакомому шаблону, ваш мозг работает на автопилоте. Это комфортно, это даёт результат для бизнеса — но навык при этом почти не меняется. Психологи называют это зоной автоматизма: вы уже умеете это делать, и повторение лишь чуть полирует то, что есть.
Осознанная практика устроена иначе. У неё есть четыре признака:
- Конкретная цель. Не «попрактиковаться в Python», а «научиться писать рекурсию без обращения к примерам».
- Работа на пределе. Задача чуть сложнее, чем вы можете решить с лёгкостью. Не настолько, чтобы опустить руки, но достаточно, чтобы было трудно.
- Немедленная обратная связь. Вы сразу видите, получилось или нет — тесты, ревью, запуск кода.
- Рефлексия и повтор. Вы анализируете ошибку и пробуете снова, целясь именно в слабое место.
Почему «работа на пределе» так важна
Мозг укрепляет нейронные связи только тогда, когда сталкивается с трудностью. Это называется желательной сложностью (desirable difficulty): лёгкое обучение ощущается приятно, но почти ничего не закрепляет, а вот лёгкое страдание над задачей оставляет прочный след. Если вам на тренировке комфортно — скорее всего, вы не тренируетесь, а отдыхаете.
Как это выглядит у программиста
Представьте, что вы плохо понимаете асинхронность. Обычный путь — гуглить готовые сниппеты и копировать их, пока «работает». Осознанная практика выглядит так: вы берёте маленькую задачу с async/await, пытаетесь решить её по памяти, упираетесь, разбираете, что именно не понимаете, читаете ровно про это место — и решаете похожую задачу заново. На следующий день — ещё раз, уже без подсказок.
Хорошие полигоны для такого режима: разбор алгоритмических задач с последующим повторным решением «вслепую», участие в код-ревью чужого кода, переписывание собственного старого проекта с нуля. Главное — каждый раз чуть-чуть выходить за границу комфорта.
Ловушка плато
Почти каждый программист рано или поздно упирается в плато: вроде и работаешь много, а лучше не становишься. Почти всегда причина в том, что человек давно ушёл в зону автоматизма и перестал брать задачи на пределе. Лекарство простое и неприятное: найти то, что вы делаете плохо, и целенаправленно мучить именно это.
Сколько и как часто
Ещё одно открытие Эрикссона: осознанная практика страшно энергозатратна. Даже элитные музыканты выдерживали не больше трёх-четырёх часов настоящей сфокусированной работы в день, разбивая её на блоки с отдыхом. Так что не пытайтесь «осознанно практиковаться» по восемь часов — это самообман. Лучше час полной концентрации на слабом месте, чем весь день рутины на автопилоте.
Парадокс в том, что осознанная практика делает обучение медленнее и неприятнее в моменте — и именно поэтому быстрее в долгосрочной перспективе. Комфортная зубрёжка лёгкого даёт иллюзию прогресса. Дискомфортная работа на краю даёт сам прогресс.