Курс молодого бойца: почему изучение программирования может вводить в фрустрацию

NOP
NOP::Nuances of Programming
5 min readAug 7, 2018

Перевод статьи Kannan Chandrasegaran: The Beginner Programmer’s Curse: Why learning to code is frustrating

Вы уже неделю как проходите курс по программированию и, кажется, что уже достигли уровня мастерства? Проводите битые часы у монитора, проверяя каждую строку, каждую точку с запятой, но, как будто насмешку, получаете уведомление об ошибке. Да и где? Прямо на той же строке, где и она!

Вот вы сдаетесь и просите о помощи друга. Он, просмотрев буквально две секунды весь код, указывает пальцем на одно место: «Тут должна быть закрывающая скобка».

Ну, все понятно. Вы ведь только что узнали об операторах if-else. Хотя впрочем, вы должны были перепроверить еще раз… Теперь из-за этого чувствуете себя идиотом. «Если я даже не могу поставить скобки правильно, то какой из меня программист?»

Полностью разочарованный, вы собираетесь уже закрыть свой ноутбук.

Стоп!

Винить себя из-за простых ошибок очень легко и это проходит абсолютно каждый разработчик.

Как и любое другое дело, программирование имеет определенные уровни. Однако все может пойти прахом, если против вас сыграет один фактор.

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

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

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

Так что же нам делать? Независимо от языка, который вы изучаете, в информатике есть три разных навыка, которые параллельно нужно развивать. Часто, именно тот недостающий вас стопорнет.

Итак, чтобы перейти на новый уровень в программировании, вам сначала нужно «сломать» эти три скилла, чтобы построить их заново.

Навык №1: Знания

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

Что такое оператор if? Что такое циклы? Что такое функция?

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

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

Следующие два навыка, которые помогут вам усовершенствоваться:

Навык №2: Умение решать проблемы

Одно дело знать, что такое оператор if и другое — знать, когда его использовать.

Если у вас возникают трудности с тем, что вы не знаете, что с ним делать — у вас будут трудности и его с применением.

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

Единственный способ исправить это — практика. В частности, нужно набить руку на решении различных задач одинаковой концепцией. Попробуйте найти ресурс на родном языке, где есть различные задачи по всем темам (переменные, условные обозначения и т.д.).

Не останавливайтесь после решения первых, самых простых, заданий. Дело не в том, чтобы доказать, что вы умеете и не в том, чтобы доказать свои знания об операторе if. Главное — научиться распознавать тип задачи, которую может решить этот if. Решив несколько заданий, в которых применяется один и тот же принцип, только в разных контекстах, вы научитесь различать тип проблемы и правильно подобрать стратегию действий.

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

Чтобы стать лучше в этом, решайте как можно больше задач одним способом.

Навык№3: Развитые мышцы мозга

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

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

Знакома ситуация? Например, придумали идею: проверить, не слишком ли длинный пароль, введенный пользователем, а затем, если это так, вытащить сообщение об ошибке.

Процесс написания кода поглощает вас, но уже на первых символах стопоритесь: как снова получить строку из этого текстового поля? Стоп, а нужно ли ставить фигурные скобки после “if”?

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

Если у вас проблемы, в общем, с написанием кода, тогда будут и трудности с применением.

Как делают музыканты? Они тренируются. Вот и как программисту — вам надо делать так же.

Решайте одни и те же задачи по несколько раз. Это уже не будет такой головоломкой, однако вы натренируете зрение, пальцы и память. Такие действия стимулируют вас выдавать код как можно быстрее. Касательно глаз: со временем они будут быстрее распознавать ошибку, потому что они привыкнут к виду «правильного» кода. Поэтому, когда вы пропустили точку с запятой или сделали неправильный отступ, это сразу будет резаться в глаза.

Тренировка дает вам скорость в написании кода и его отладке. Чем больше вы пишете и находите новых методов решения — тем больше знаний переходят на подсознательный уровень.

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

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

Чтобы лучше справляться с заданием, решайте одинаковые задачки время от времени.

Знать, что практиковать

Да, будет иногда казаться, что вы прыгаете выше головы и бьетесь об потолок, но поверьте, практика — это действительно единственный способ преодолеть это ощущение. Важно также знать, где её использовать.

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

--

--