Если Леброн Джеймс тренируется каждый день, вы тоже должны

В культуре, основанной на продуктивности, большую часть времени практика остается в стороне. Иногда это считается пустой тратой времени, особенно для людей с большим опытом работы.
Я не говорю о том, чтобы просто играть или что-то делать. Я говорю об умышленном занятии какой-либо деятельностью. Об основах. Основы вашей профессии.
Учитесь у мастеров
Высокопроизводительные спортсмены относятся к этому серьезно. Они понимают важность отработки самых элементарных основ своего спорта, особенно тех, кто находится на вершине.
Стеф Карри, лучший стрелок в истории НБА, тренируется до 500 бросков в день. Мухаммед Али, один из лучших боксеров всех времен, посвятил прыжкам со скакалкой 20 минут. Роджер Федерер, лучший теннисист всех времен, отрабатывает балансировку волейбола на батуте.
И этот список можно продолжать и продолжать. Если вы любите спорт и видели спортсменов в любой день, вы, вероятно, были поражены тем, насколько легко они выполняют свои движения. Как будто это просто ходьба или дыхание, что-то тривиальное.

Но вы знаете, что они делают непросто, особенно если вы однажды попробовали это сделать. Они освоили свой вид спорта, потому что продолжали тренироваться. Даже когда они овладевают им и, кажется, выиграли все, что могут, они продолжают практиковаться.
Программирование
Мы, программисты, должны поступать так же. Неважно, начали ли вы изучать Python вчера или являетесь разработчиком полного цикла с опытом работы более десяти лет: практикуйтесь каждый день.
Я не говорю просто тренироваться весь день. У вас есть работа и жизнь. Отдых и уравновешенная жизнь так же важны, как и практика. Но оставьте в своем распорядке дня время для занятий.
Это может быть два часа или 30 минут. Время, которое вы потратите на это, будет зависеть от вашего опыта и того, сколько вам еще предстоит изучить.
Структуры данных, базовые алгоритмы, процессы установки, настройка среды, дизайн - существует множество концепций, которые вы видели на протяжении всей своей жизни как разработчик, от которых вы зависите при выполнении своей работы.
Я вижу, как много новых разработчиков жалуются на сложность программирования. Но знаете что? Так разговаривает. И все же говоришь каждый день. Вы, наверное, не помните, но вам было трудно научиться говорить. Вам потребовалось несколько лет, чтобы овладеть своим языком, изучить его синтаксис, его правила. И вы продолжаете практиковать это каждый день, разговаривая с друзьями, читая, сочиняя и слушая других.
Язык программирования ничем не отличается. Вы должны продолжать читать, писать и говорить. Практика самых основных правил грамматики и использования. Слушать, как говорят другие.
Упражняться! Упражняться!
В программном обеспечении мы часто практикуемся в нашей работе, в производстве. Я выучил несколько языков, потому что они требовались для проекта, и у меня не было времени, чтобы пройти курс или попрактиковаться.
Из-за этого я наделал много ошибок. Я уверен, что многие из вас тоже.
Это не то, каким должно быть тренировочное занятие. Мы должны отделить нашу практику от наших профессиональных обязанностей, тренировки от реальной игры.
Практическое занятие должно быть временем, когда вы можете пробовать что-то столько раз, сколько хотите, без давления сроков выполнения проекта и без страха потерпеть неудачу. Фактически, в большинстве случаев вы терпите неудачу. Это знак того, что вы учитесь.
Вы не можете практиковаться в проектной среде. Давление очень велико, есть сроки, функции, которые нужно сделать, и ошибки, которые нужно исправить.
И что вы можете делать на тренировке, даже имея многолетний опыт? После десяти лет опыта вот несколько вещей, которые я делаю сам, и я хотел бы поделиться с вами.

Проблемы с кодом
Как я сказал в этой статье, задачи по программированию - отличный способ попрактиковаться и улучшить свои навыки программирования.
Заниматься ими интересно, и они предлагают широкий спектр тем, от базовых до сложных.
Повторяйте ее, даже если вы ее уже решили. Даже если вы думаете, что освоили тему, вернитесь к ней позже, чтобы проверить, помните ли вы, как это делать, или можете ли вы придумать другое решение. Вы будете удивлены, узнав, сколькими способами можно решить проблему.
Есть несколько хороших сайтов, предлагающих различные задачи, например HackerRank и CodinGame.
Выучить новый язык
Если вы уже знаете язык программирования, попробуйте выучить новый. Вы многому научитесь из этого процесса.
Каждый язык программирования пытается решить проблему по-своему. У языков есть свой синтаксис и причины для существования. Они реализуют другую парадигму программирования. У них разные подходы к проблемам.
Это как говорить на иностранном языке. Вы узнаете их культуру, как думают носители языка, как они выражают свои чувства.
С языком программирования то же самое.
Вы знаете JavaScript? Выучите C. Вы знаете C? Learn Go. Вы знаете Go? Изучите Python. Есть хорошие варианты языков, которые используются в реальных системах, решающих реальные проблемы. Все они имеют свою ценность.

Тесты производительности
Вы, вероятно, видели некоторые тесты производительности, или то, что библиотека лучше других, или как языковая структура может повысить производительность вашей системы.
Но вы проверили на себе? Вы это тестировали?
Это хороший способ попрактиковаться. Вы продолжите практиковать свой любимый фреймворк или библиотеку и даже сможете научиться использовать их другими способами.
Вы можете изучить другие альтернативы для улучшения вашего кода, другие алгоритмы. Или как на самом деле работает пространственно-временная сложность.
Отладьте свой код
Начните отладку вашего кода. Я имею в виду, действительно отладка. Не с использованием printf или console, а с настоящими инструментами отладки.
У каждого основного языка есть инструмент отладки. Узнайте, как его использовать, и начните отладку кода.
Проверяйте значения переменной в каждом цикле. Проверяйте общий размер вашей программы во время выполнения. Проверьте, все ли строки выполняются, или нет.
Поступая так, вы также узнаете, как отлаживать код во время проекта или исправления ошибок. Это навык, который вам обязательно понадобится.
Учитесь у других
Точно так же, как вы читаете, чтобы узнать больше о своем языке, и слушаете других, чтобы узнать, как что-то сказать или произнести, важно учиться у других программистов.
Задавайте вопросы другим разработчикам. Прочтите уроки о том, как решить проблему или создать вещь. Пройдите несколько курсов по новой теме или структуре.
Вы будете поражены тем, как другие могут найти решения, которые никогда не приходили вам в голову, или могут научить вас новому алгоритму.
Это может быть тема, которую вы уже знаете, или язык, с которым вы уже знакомы. Тем не менее, программирование обновляется каждый день. Всегда есть место, чтобы узнать что-то новое.

Вносить изменения
Поэкспериментируйте, чтобы внести изменения в свой проект, и посмотрите, как он отреагирует.
Проверьте, улучшает ли это производительность или читаемость кода. Проверьте, что работает, а что нет, важен ли фрагмент кода или нет.
Не бойтесь нарушить свою программу. Он научит вас, как его отлаживать и как исправить, когда вам нужно. И вы поймете, что важно для бесперебойной работы вашей программы.
Однако пусть изменения должны быть небольшими. Вам нужно понять, что произошло и что привело к сбою в вашей программе.
Последние мысли
Научиться программировать может быть сложно. Освоить это еще сложнее.
Как и в случае с любым другим навыком, вы должны продолжать практиковаться, чтобы не забывать и совершенствоваться. Этим занимаются все высококлассные спортсмены и рабочие.
Не забывайте отделить практику от реальной игры. Они оба нужны вам, чтобы расти как программист. Оба они важны в вашей жизни.
Неважно, насколько вы опытны в какой-либо области: практика по-прежнему важна.
Вы тренировались сегодня?