Развивайте навыки через проекты

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

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

Итак, однажды вам приходит в голову не очень блестящая идея вызвать их на теннисный матч. Когда приходит время и игра вот-вот начнется, вы начнете сомневаться в своих текущих жизненных решениях. Меня разорвут! Однако, как только матч начинается, вы понимаете, что, хотя этот человек знал все о теннисе, он ужасно играл эм> это.

Они знали это издалека, как предмет для изучения, но не как набор практических навыков, которые, будучи объединены вместе, дают вам возможность делать новые вещи (например, играть в теннис!). Как вы, наверное, догадались, обучение программированию лучше рассматривать как занятие спортом, а не как изучение чего-то издалека. Вы не узнаете об этом. Это то, что вы делаете.

Я читал много сообщений в блогах, в которых людям советуют приложить много усилий для практики кодирования. Точно так же, как если вы хотите добиться успеха в теннисе, вы должны много тренироваться и играть в теннис. То же самое с кодированием. Практика, практика, практика! Хотя это отличный совет, я думаю, что будет еще полезнее, если мы продолжим аналогию и сосредоточимся на идее «набора навыков».

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

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

Играя в настоящую игру, вы должны быстро переключаться между этими навыками. Выделенное время, потраченное на каждый навык, сделает их автоматическими. Поэтому вместо того, чтобы думать «как передать мяч?» вы можете сосредоточиться на игре, происходящей вокруг вас, чтобы задать вопрос «должен ли я передать мяч?». При достаточной практике вы можете вообще не думать; вы будете действовать по наитию!

Куда я денусь со всем этим? Ну, вот кикер (подождите, о каком виде спорта мы говорим?):

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

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

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

Эпилог

Характер программирования, основанный на навыках, имеет большое значение для объяснения Tutorial Hell. Просмотр или чтение учебных пособий может быть полезным, но ничто не заменит отработку ваших навыков в проекте. Просмотр видео на Youtube или Udemy может завести вас далеко не сразу, потому что это больше похоже на просмотр тенниса, чем на игру в него. Вы наверняка получаете какие-то концептуальные знания, но не развиваете навыки.