«Образование — это не изучение фактов, а тренировка ума, чтобы думать».
Альберт Эйнштейн

Кажется, все больше людей начинают интересоваться программированием. Неудивительно — карьера программиста может предложить вам:

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

Однако есть еще одно, не менее важное: программирование — высокооплачиваемая работа. Большинство программистов продолжали бы программировать, даже если бы им не платили.

Вы думаете: «Есть подвох, верно? Вы должны быть супер-умным. Или иметь математический ген. Или быть левополушарным».

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

Что ж, есть udemy.com, lynda.com, freecodecamp.com — и давайте не будем забывать обо всех потрясающих курсах программирования, предлагаемых бесплатно на YouTube. Итак, вы бросаетесь вперед и начинаете смотреть видео с одного из этих или множества других ресурсов.

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

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

Почему одни добиваются успеха, а другие сдаются? Вместе с другом, который также является программистом, я решил исследовать это. Мы просмотрели сотни часов руководств с YouTube, lynda.com, udemy, Coursera — всех основных. Мы разговаривали с людьми, которые с большими надеждами и решимостью приступили к изучению программирования, но разочаровались и ушли. Мы обнаружили, что люди, которые потерпели неудачу, сконцентрировались на изучении синтаксиса.

Если это слово для вас новое, синтаксис — это расположение слов и фраз для создания правильно построенных предложений в языке. В английском есть синтаксис. Как и компьютерные языки. В естественных языках, таких как английский, даже если чей-то синтаксис не совсем совершенен, мы все равно понимаем, что он говорит. Компьютеры? Нет. Даже незначительное отклонение от правильного синтаксиса приводит к сообщениям об ошибках.

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

Но даже если вы смогли запомнить все о синтаксисе языка, этого недостаточно, чтобы стать успешным программистом. Вы можете быть отличной энциклопедией, но у нас уже есть одна из них на https://developer.mozilla.org/.

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

Это введение в компьютерное программирование оставляет синтаксис в стороне на другой день. Вместо этого он концентрируется на семи ключевых концепциях, общих для всех компьютерных программ. Не подвергая вас никакому коду, алгоритмам или формулам, я решил сделать эти концепции более доступными. Я приветствую (даже прошу) ваши реакции. Это сработало для вас? Были ли места, где я недостаточно ясно выразился. Есть ли у вас какие-либо предложения или исправления? Если да, не могли бы вы потратить несколько минут, чтобы отправить мне электронное письмо по адресу [email protected], чтобы следующая версия была лучше и понятнее?