Нельзя просто взять и научиться программировать

10962
7

Объявлениями о курсах программирования, которые сделают из вас зарабатывающего в валюте разработчика, заклеен не только интернет, но и весь общественный транспорт. Школы, курсы, кружки, книжки, самоучители соревнуются в том, кто легче и быстрее произведет на свет IT-шника. Кто-то утверждает, что навык программирования должен быть у каждого человека. И, конечно, они твердят, что перерождение в разработчика — это просто и безболезненно. Но вы действительно думаете, что научиться программировать легко? Этот вопрос в блоге на Medium озвучил один из преподавателей Freecodecamp Квинси Ларсон. Он попытался развенчать это убеждение, созданное маркетологами. Редакция AIN.UA приводит адаптированный перевод его заметки.

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

К сожалению, множество маркетологов пытаются заработать на представлении о том, что «программировать легко!» Или что программирование станет простым при использовании их продукта.

Когда кто-то говорит, что программировать легко, тем самым они оказывают вам медвежью услугу. Это может привести только к трем вещам:

Сценарий № 1

Человек 1: «Однажды, я пытался научиться программировать. Это давалось мне очень тяжело. Потом на первое место вышли другие заботы, и я больше не учусь программированию».
Маркетолог: «Программировать легко!»
Человек 1: «Что? Ой, может, программировать все-таки легко. Может, я просто тупой».

Сценарий № 2

Человек 2: «Я хочу научиться программировать, но это, кажется, тяжело».
Маркетолог: «Программировать легко!»
Человек 2: «Правда?»
Маркетолог: «Да. Купи мой курс / программу / электронную книгу, и ты станешь высококласным программистом менее чем за месяц».

Человек 2:

1-QI3o91juXhRQa6UUr7IukA
Человек 2, спустя месяц: «Я думал, учиться программированию легко. Может, я просто тупой».

Сценарий № 3

Человек 3: «Мне никогда не было интересно программирование. Я успешный менеджер. Если мне когда-нибудь понадобиться написать программу, я просто заплачу кому-то».
Маркетолог: «Программировать легко!»
Человек 3: «Хм, дайте-ка подумать. В таком случае, я не буду переплачивать этим обезъянкам-программистам или слишком высоко ценить их работу».

Операции на мозге — это легко

Говорить «Программировать легко!» — это все равно, что говорить: «Проводить операции на мозге — сущий пустяк!». Или утверждать, что «писать романы — это просто».

Нейрохирург, сидя на вечеринке, поворачивается к романистке Маргарет Этвуд: «Всегда хотел писать. Когда уйду на пенсию и у меня появится время, стану писателем». Маргарет Этвуд отвечает: «Какое совпадение, ведь когда я выйду на пенсию, я собираюсь стать нейрохирургом».

Тем не менее, маркетологи продолжают твердить: «Программировать легко!», «Программировать вовсе не так сложно»… и мое любимое: «Программировать легко! Это <что-то, из-за чего программировать сложно> делает обучение сложным!»

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

Проклятие знания

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

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

Так выглядит любой туториал по программированию

Так выглядит любой самоучитель по программированию

Проклятие знания не позволяет многим опытным разработчикам сочувствовать новичкам. Нигде так не проявляется этот недостаток эмпатии, как в любимом поисковом запросе Google: самоучитель по программированию.

Сколько раз вам удавалось пройти до конца случайный самоучитель, найденный в недрах Google, и не быть сбитым с пути какой-то непонятной ошибкой или неоднозначным условием?

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

Нет ничего более раздражающего, чем копание в учебнике в течении 30 минут, прежде чем наткнуться на шаг, гласящий «просто интегрируйтесь с API Salesforce» или «просто разверните проект на AWS». И когда это происходит, в голове звучит голос тысячи маркетологов: «Программировать легко!» Вы вспомните опытных программистов, которых встретили на прошлой неделе и которые пытались вас приободрить, говоря: «программировать легко!» У вас даже промелькнут перед глазами все эти глупые сцены с голливудскими хакерами, которые жмут несколько клавиш, чтобы взломать Пентагон.

1-oBDZfFpVHB6GK3_2nylNeg

Прежде чем вы осознаете это, вы вдруг услышите звук собственного голоса, срывающегося на крик, вскочите на ноги и… (╯°□°)╯︵ ┻━┻

Но это ничего. Глубоко вдохните. Программировать сложно. И каждый это знает.

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

1-TxBCsKUqCV86_C2SSOKbsA

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

  • Шаг 1: выключите свет, поднимите воротник, надвиньте на глаза очки-авиаторы.
  • Шаг 2: выпейте банку энергетика, раздавите ее и небрежно бросьте через плечо.
  • Шаг 3: Перейдите по ссылке и лупите по клавишам так быстро, как только можете.

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

После того, как мы избавились от этого образа, давайте поговорим о самом коварном слове в английском языке.

Ничто не бывает простым

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

Таким образом, первое «правило простоты»: «Не используйте слово «просто» в своих курсах, и не проходите курсы, где оно используется». Запомните это. Знайте это. Живите с этим.

P. S. После 20 минут беспрерывного копания в курсах по программированию вы едва ли будете высматривать в каждом слово «просто». Поэтому можно воспользоваться расширением для Chrome, которое, как золотой петушок из сказки Пушкина, предупредит вас о надвигающейся «простоте».

Оставить комментарий

Комментарии | 7

  • Про рисунок лошади — замечательная иллюстрация мысли.

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

  • Вопрос не в том, есть они или нет, а в том, что это 'очень просто'. В сети выложена куча хороших книжек, а теперь сядьде и напишите роман. Или лошадь нарисуйте. А если не смогли — вы просто тупой.

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

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

  • Я бы сравнил обучение программированию с древообразной схемой технологий в игре Цивилизация, или в ветке навыков любой РПГ.
    Все начинается с базовых вещей, чем дальше вы продвигаетесь тем больше развитвлений. Вы можете максимально углубиться по какой-то одной ветке и уже думать что вы крутой хацкер, а потом выяснится что вы не знаете банальные вещи — и приходится откатываться чуть ли не в начало схемы и изучать эту ветку хотя бы до уровня понимания основ.
    Очень часто «ваша» ветка (например конкретного языка или целого стека) для дальнейшего роста упирается в другую втеку, и чтобы расти надо изучить новую ветку и только тогда будут открыты новые шаги. Это происходит постоянно и на всех уровнях.

    Так же постоянно бывает что вы ищите ответ на свой вопрос и натыкаетесь на непонятное объяснение, вы начинаете искать уже про это объяснение, там в свою очередь встречаете еще больше непонятных вещей. Если таких «ныряний» будет много, то вы уже теряете нить эффективного обучения и лучше возвращаться назад. В такие моменты непонятные вещи лучше принимать как абстрактную концепцию, не вникая в детали. Просто знать минимум свойств которые вам необходимы.
    В начале обучения практически любая самая «простая» задача будет скрывать за собой такие «цепочки» непонятных концепций, которые придется проходить чтобы двигаться дальше. Их будет много, но чем больше вы знаете тем меньше их будет.

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

    upd: есть еще и одна «плюшка» упрощающая жизнь: чем выше ваш уровень, тем легче дается изучение новых технологий/языков/инструментов/библиотек

Поиск