«хорошо» требует времени

Секрет раскрыт… научиться программировать сложно. Это похоже на изучение нового языка (как в прямом, так и в переносном смысле), потому что есть множество новых понятий и терминов, которые нужно выучить.

Когда я впервые подошел к этому, я думал об этом как о школе. Каждый день был заполнен заданиями, лекциями (или видеороликами на YouTube) и домашними заданиями, которые, по общему признанию, быстро надоедали. Так продолжалось до тех пор, пока однажды я не отошел от компьютера и не начал двухчасовую сессию игры в Street Fighter V. Как человек, который играл в Street Fighter на протяжении многих его итераций (с разной степенью успеха), я могу сказать, что мало что может показаться таким же непроницаемым, как файтинги.

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

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

Знай свой матчап

Когда вы впервые играете в файтинг, одним из самых важных решений часто является первое: каким персонажем вы будете играть? У каждого персонажа есть свои сильные и слабые стороны, поскольку все они имеют уникальные наборы движений, характеристики и причуды. В качестве примера возьмем Рю из Street Fighter.

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

Используя это, чтобы сформулировать подход к проекту, мы можем подумать над двумя простыми вопросами: что мы пытаемся построить и с какими компромиссами мы столкнемся, решая, какой инструментарий и язык/фреймворк нам следует использовать?

Вы хотите создать скрипты для автоматизации, вам нужно проанализировать некоторые данные или создать простой парсер? В любом из этих случаев вы можете выбрать Python, поскольку он может преуспеть в любом из этих вариантов использования. Если вы хотите больше работать с Интернетом, манипулировать DOM или хотите выбрать отличный язык, который может делать что-то на бэкэнде и внешнем интерфейсе, тогда (на мой взгляд) JavaScript не будет проблемой.

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

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

Как только вы освоите один язык, изучение других станет проще, так что выбирайте то, что вам нравится! Если ваш выбор резонирует с вами, вы будете более склонны к практике, и чем больше вы будете практиковаться, тем лучше вы станете. Это подводит меня к следующему пункту…

Практика и реализация

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

Вы выбрали персонажа, которого хотите изучить, и переходите в режим обучения, чтобы изучить его приемы и комбинации. Таким образом, вы довольно хорошо отрабатываете свои движения против тренировочного манекена. Ваша уверенность зашкаливает! Вы прыгаете в онлайн-матч и проигрываете… ужасно. Что случилось!? Вы часами тренировались. Почему это не привело к реальной победе в матче?

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

В инженерии вы можете легко попасть в «учебный ад».

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

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

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

Сделайте перерыв

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

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

Без этой перезагрузки вы подвергаете себя риску выгорания. Так что, если вы слишком долго пялились на один и тот же вопрос, сделайте перерыв и вернитесь к нему позже (… и это все научные знания, которые у меня есть для вас в этой статье, я обещаю).

Заключение

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

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

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