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

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

Начнем с самого начала…

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

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

Правильное понимание основ

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

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

Изучение новых языков и методов

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

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

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

Расширяя горизонты

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

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

В заключение…

Мой опыт работы с Code Katas показывает, что они обучающие и веселые. Они напоминают мне о причинах, по которым я начал писать код, - о возможности исследовать концепции и проявлять творческий подход с помощью кода без каких-либо ограничений или сроков, присущих профессиональному проекту. Есть множество сайтов, на которых есть предложения для небольших кодовых каталогов. Некоторые из моих любимых включают Project Euler и Coding Dojo, но быстрый поиск в Интернете наверняка найдет много альтернатив, которые могут вас вдохновить. Вы даже можете бросить себе вызов, решив собственную проблему!

Вы пробовали Code Katas? Как осознанная практика помогла вам стать лучшим разработчиком?