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

С чего начать?

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

Моя история с программированием или, скажем так, интерес к программированию начался почти 3 года назад. В 2019 году я решил, наконец, сделать несколько шагов и узнать об этом кое-что побольше. Без степени CS, без какого-либо опыта или фона, и даже без какого-либо друга в этой области, который мог бы меня направить или хотя бы дать какой-то совет. Мой единственный друг был — Google. Я понятия не имел, с чего начать, в чем разница между front-end и back-end, что такое JavaScript и как выглядит весь этот «код». Естественно, я столкнулся с HTML несколько лет назад, когда учился в средней школе, но, в общем-то, и все.

HTML и CSS — иллюзия программирования

Неудивительно, что одним из первых веб-сайтов о программировании, которые я нашел, был freecodecamp.org и их курс «Отзывчивый веб-дизайн». Это было место, где случилась первая искра с кодированием. А пока немного дополнительных ресурсов, несколько видео на YouTube и альт! Вот я и в игре, через пару часов я могу создать свой собственный сайт с нуля, в блокноте, используя не один, а ДВА! Языки «программирования» — HTML и CSS, но эй! Это настоящие языки программирования? Или, может быть, это просто способ «кодирования» вещей или даже инструмент?

Копаем кроличью нору

В то время я понятия не имел, что такое языки программирования, каковы между ними различия и их назначение. Копать, копать и копать, в кроличью нору, все глубже и глубже с каждым днем. Мое любопытство и оптимизм в отношении программирования были настолько высоки, что я пытался узнавать что-то новое почти каждый день. Вскоре после этого я получил Android Studio и попытался создать свои собственные приложения для Android. Позже где-то я видел Python. Возвращаясь к Java, чтобы автоматизировать некоторые из моих задач на моей текущей работе и, в конечном итоге, создать несколько проектов Arduino, связав их с «моим» приложением для Android, написанным на Java. Подождите секунду! Куда я иду? Хорошо, давайте немного помедленнее. Это правда, что за относительно короткое время мне удалось выбрать так много технологий и фактически создать несколько проектов, но правда в том, что это было больше похоже на сбор пазлов и заставить их работать.

Где я?

Я не знал основных основ и на самом деле не понимал, как все работает, а иногда даже не понимал, что я делаю. После нескольких месяцев постоянного опробования новых технологий, прохождения различных руководств, таких как freeCodeCamp, Codecademy, Udemy, Udacity, SoloLearn, W3Schools, Edx и некоторых других, с некоторым успехом в одних и неудачами в других — я был полностью потерян. Мне определенно понравилось это делать, хотя я уже потратил часы и дни, пытаясь исправить небольшие ошибки в моем «скопированном» коде, чтобы заставить его работать, поэтому я не хотел сдаваться. Определенно пора было сделать шаг вперед и, наконец, сосредоточиться на одной технологии.

Полный стек

React был одной из технологий, которая звучала как технология с самым высоким потенциалом, дающая вам возможность создавать огромное количество приложений для разных целей, а также возможность однажды получить «ценный» навык. Scrimba, действительно рекомендованный freeCodeCamp, выглядел очень классным вариантом. Я потратил еще несколько недель, пытаясь создать свой собственный клон YouTube, создать серверную часть с помощью Node.js, подключить его к MongoDB для целей базы данных и развернуть все на Heroku с помощью Amazon Web Services для статики. файлы. Хорошо, я сделал это еще раз, но давайте будем честными — снова это был не я, это было благодаря людям из Stack Overflow и другим, которые делились своими фрагментами кода здесь и там.

Возвращение к началу

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

Замедлять!

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

Читать документацию

Многие из вас, у кого есть некоторый опыт прохождения курса JavaScript от freeCodeCamp, могут пожаловаться на то, что их курс проходит невероятно быстро и нет времени привыкнуть к новым терминам и методам. Это правда, некоторые задания, особенно «Сценарии промежуточных алгоритмов», просто кошмарны, некоторые действительно требуют от вас просто выйти из зоны комфорта, искать разные решения, проводить исследования и самое главное ЧИТАТЬ ДОКУМЕНТАЦИЯ! На данный момент, я хочу добавить второй совет для всех вас. Как человек без опыта работы в сфере ИТ и не владеющий английским языком, я обнаружил, что школьная документация W3 намного проще для понимания. Это только мое личное мнение, но, конечно, вы должны использовать и другие ресурсы.

я ничего не видел

Console.log без его кодирования похож на прогулку по темной комнате без света, пытаясь угадать, где находится переключатель. Это мой третий совет для всех, кто пытается изучать JavaScript и, скорее всего, другие языки, используйте console.log или любой другой аналог. Сначала я не мог понять, зачем люди нанимают тестировщиков и тратят свое драгоценное время на написание «второго» кода, который будет тестировать основной. Просто раньше это не имело для меня никакого смысла. Я не могу сказать, что знаю, что такое Test-Driven Development прямо сейчас, но это действительно помогло мне соединить точки, и все кажется более осмысленным.

Что следующее?

Таким образом, мы подошли к концу этого короткого длинного рассказа об одном курсе на freeCodeCamp. Должен признаться, что я все еще испытываю трудности с некоторыми упражнениями этого курса, и мне очень помогли другие. freeCodeCamp, вероятно, не научит вас всему языку на каком-то солидном уровне, но из-за того, что это очень требовательный способ обучения, он может научить вас, как думать о решении проблем программирования. Изучение любого языка программирования — это бесконечный путь, так как существует бесчисленное множество способов решения данной проблемы, и в этом, на мой взгляд, прелесть программирования. Вот почему, как только вы войдете, НЕ ОСТАНАВЛИВАЙТЕСЬ! и продолжайте учиться, практиковаться и копать глубже каждый день.