Комментарий, который я слышал от многих людей:

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

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

Научиться программировать сложно. И хотя верно то, что некоторым людям легче изучать программирование по сравнению с другими (будь то из-за более высокого уровня интереса или способности к логическим / математическим рассуждениям), то, как кто-то учится программировать, повлияет на вероятность они развивают и сохраняют эти навыки.

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

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

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

Почему это так отличается от обучения другим навыкам?

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

При написании кода нет права на ошибку.

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

Если бы вы спросили любого человека с опытом программирования, я уверен, что он смог бы вспомнить несколько раз, когда они застревали на глупой ошибке на несколько часов, если не дней, из-за орфографической или синтаксической ошибки. А если они не могут ... ну, они лгут! Я лично чувствовал смущение от того, что на несколько часов застрял с неработающим кодом, только чтобы понять, что написал «docmuent» вместо «document», или пришел в ярость, когда не смог подключиться к своему серверу, только чтобы понять, что он работает на порту 8888 вместо 888. Человек может понять, что должно было быть сказано, но компилятор не обладает такой способностью.

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

Какие навыки мне следует изучить?

Если вы пытаетесь научиться программировать, важно сначала изучить следующие четыре вещи:

  1. Основные концепции программирования
  2. Стратегии решения проблем
  3. Как отлаживать код и
  4. Основные особенности выбранного вами языка

Основные концепции программирования

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

  • Переменные и примитивные типы данных
  • Составные типы данных (строки, массивы, списки, хэш-карты)
  • Выделение памяти
  • Петли
  • Логическая логика

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

Видео от The Coding Train - это то, что я смотрел, когда только начинал учиться. Еще один отличный ресурс - Академия кода, если вы хотите испытать себя и получить отзывы.

Стратегии решения проблем

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

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

Вот несколько забавных ресурсов для практики:

  • Cracking the Coding Interview: раскрывает общие вопросы, задаваемые на собеседовании по кодированию.
  • Coding Bat: Я использовал это все время, когда начинал. Получение золотой звезды рядом с завершенными задачами тоже очень полезно.
  • Leet Code: еще один отличный инструмент для отработки вопросов на собеседовании.
  • Geeks 4 Geeks: фантастические рецензии, раскрывающие популярные алгоритмы и основные концепции программирования. Отлично подходит для освежения знаний по темам, которые вы, возможно, давно не посещали.

Как отлаживать ваш код

Когда ваш код ломается, важно спросить себя: понимаю ли я, что написал? Это сломано, потому что мне не хватает понимания по теме?

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

Лучший способ отладки кода (особенно для новичков) - это вывести переменные на консоль или использовать инструменты отладки, встроенные в среду IDE, в которой вы работаете. Вы лучше поймете свой код, пройдя его построчно. чтобы найти источник вашей проблемы. Отслеживание вещей в своей голове также может оказаться очень сложным и сложным. Попробуйте создать диаграммы памяти и отслеживать свои переменные на листе бумаги по мере выполнения кода.

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

Майк из Code Academy рассказывает о некоторых отличных стратегиях отладки, которые нужно практиковать перед началом работы.

Основные характеристики вашего языка

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

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

Дополнительные советы

  • Найдите себе наставника. Нет ничего лучше, чем иметь человека, который объяснит ваши проблемы, не боясь почувствовать себя глупо. Их поддержка будет неоценимой на протяжении всего вашего путешествия.
  • Просить о помощи - нет ничего унизительного. Я знаю, что повторяю себя, но ошибки - это часть процесса обучения. Это не делает вас глупым, это делает вас работоспособными и находчивыми.
  • Найдите себе приятелей. Научиться программировать намного проще, когда вы делаете это с группой людей.
  • Научите кого-нибудь еще. Преподавание - один из лучших способов обучения, поэтому, когда вы почувствуете себя комфортно с темами, попробуйте научить кого-нибудь тому, чему вы научились.
  • Приобретайте хорошие привычки как можно раньше. Такие вещи, как наименование ваших переменных и функций значимыми вещами, оставление комментариев к коду и использование контроля версий. Будущее тебе скажет спасибо.
  • Записывать. Ресурсы есть повсюду, попробуйте собрать несколько заметок только для себя.
  • Google не всегда твой друг. Знание того, как и что искать, приходит с опытом. Вместо того, чтобы искать решение, ищите вещи, которые помогут вам лучше понять вашу проблему, чтобы вы могли прийти к собственному обоснованному решению.
  • Купите резиновую утку. Я серьезно. Расскажите ему обо всех своих проблемах, и, объясняя вашу проблему, вы можете ответить на свой собственный вопрос.

  • Это немного натянутая цель, но посмотрите на тестирование. Важно проверить, как ваш код реагирует на различные крайние случаи, чтобы убедиться, что он работает так, как вы думаете.
  • И последнее, и самое главное, не ждите, что все сразу узнаете! Синдром самозванца так распространен в компьютерном и инженерном сообществе. Моя подруга Грейс написала потрясающую статью о синдроме самозванца, которую я рекомендую прочитать. Легко сравнить себя с человеком, который, кажется, знает все. Но попробуйте напомнить себе, что все с чего-то начали и все были в том же положении, в котором вы сейчас. Это отстойное чувство, но если вы упорствуете в этом и потратите часы, вы можете быть такими же осведомленными, как и ваш друг, с безумно загруженным профилем Github.

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