Большинство людей либо не начинают, либо бросают учиться программированию по двум причинам:

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

В этой статье я буду:

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

Первый язык программирования

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

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

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

Написать код

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

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

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

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

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

Не все учебные ресурсы созданы равными

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

Честно говоря, чаще всего виноват учитель. Да, правильно, я учитель программирования и просто сказал, что если вы не понимаете, чему я вас учу, то обычно это моя вина.

Я не виноват, если:

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

Я виноват, если:

  • Я не смог объяснить вам причину, по которой вы хотите изучить концепцию, которую я преподаю, кроме того, что сказал, что она будет на тесте.
  • Я предположил, что мой чужой словарь жаргонных терминов, таких как Either Monad, ForkJoinPool, или Asymptotic Runtime Complexity, - это то, что нормальный человек интуитивно знает
  • Я не использовал различные смыслы, знакомые аналогии и практические примеры, чтобы сделать часто сухой и скучный предмет интересным (и, таким образом, более легким для изучения, поскольку это взаимосвязанные способности)
  • Я запутался в своей неспособности объяснить тему как вашу проблему

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

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

Социальные сети | Служба поддержки

Эту статью написал Райан Майкл Кей. Я программист / инженер-самоучка, создающий образовательный контент по широкому кругу тем на самых разных платформах. Лучший способ поддержать меня - подписаться на меня на различных платформах и присоединиться к моему сообществу разработчиков (у нас сотни участников!):

Объявления:
https://www.facebook.com/wiseassblog
https://twitter.com/wiseAss301

Руководства и курсы:

Бесплатные уроки, вопросы и ответы в реальном времени, программирование в реальном времени:
https://www.youtube.com/channel/UCSwuCetC3YlO1Y7bqVW5GHg

Программирование рабочего стола Java с JavaFX (средний уровень) - https://skl.sh/31pzCa1

Полное введение в программирование на Java для новичков (начинающий - средний) - https://skl.sh/3fZbjos

Приложения для Android с Kotlin и Android Studio (для начинающих) - https://skl.sh/2ZU6ZT9

Разработка материалов для Android с использованием Kotlin (средний уровень) - https://skl.sh/2OrwrYZ

Подключиться:

LinkedIn- https://www.linkedin.com/in/ryan-kay-808388114/