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

Исходное сообщение: ➡️ https://realtimkim.medium.com/skip-the-coding-bootcamp-how-i-learned-to-code-got-a-remote-full-time- development-job-in-5-761cf07454ac

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

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

Подпишитесь на меня в Твиттере, чтобы узнать больше о самообучении, создании богатства и дизайне образа жизни. ➡ https://twitter.com/timkimm

Дизайн

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

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

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

Сначала я собрал все учебные программы из основных учебных курсов того времени. Учебные программы в основном доступны в Интернете, или они предоставят их вам, если вы обратитесь к ним.

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

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

  • Основы Интернета: HTML / CSS / JavaScript
  • Базовые принципы компьютерной науки / Решение проблем
  • FrontEnd разработка: jQuery / React / SASS
  • BackEnd разработка: Express / Node
  • База данных: MongoDB или PostgreSQL

Были некоторые незначительные различия в количестве времени, затрачиваемого на каждую из этих тем, но каждый из учебных курсов действительно выделял один общий фактор:

Полный стек JavaScript.

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

Я просмотрел ежегодные опросы разработчиков StackedOverFlow и CodinGame.

Вот ссылка на опрос StackOverFlow за 2020 год: https://insights.stackoverflow.com/survey/2020#technology-programming-scripting-and-markup-languages-professional-developers

Изучив эти опросы, стало очевидно, что комбинация JavaScript + React + Node в ближайшее время никуда не денется.

В 2017–2018 годах React также был самым востребованным фреймворком среди новых работодателей, и MongoDB также был популярен.

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

Составление учебной программы

Как я уже говорил выше, одна из вещей, которая действительно тормозила мой прогресс вначале, заключалась в перемещении по разным платформам и попытках изучить несколько разных вещей одновременно. Я был на CodeCademy, CodeSchool, DataQuest и купил несколько книг по Python, SQL и PHP.

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

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

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

Изучение того, как учиться

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

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

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

«Дайте мне шесть часов, чтобы срубить дерево, и первые четыре я потрачу на то, чтобы точить топор». - Авраам Линкольн

Основная онлайн-программа: FreeCodeCamp

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

Я пожертвовал сайту часть своей первой зарплаты разработчика.

JavaScript + основы программирования

Наиболее эффективными из инструментов, которые я использовал, должны быть Watch и Code.

До этого момента я сделал массу онлайн-руководств с разных сайтов. Так продолжалось до тех пор, пока я не просмотрел сайт Гордона, watchandcode.com, где я почувствовал, что наконец понял то, что я узнал.

Гордон тоже разработчик-самоучка, но я думаю, что его главное умение - преподавание. Я связался с ним, потому что он тоже имел опыт работы в маркетинге, прежде чем стать разработчиком. Если вам сложно понять внутреннюю часть JavaScript, но вы все еще плохо разбираетесь в функциях, начните здесь.

Front End разработка: React + Redux

Мой курс:
Современная реакция Стивена Грайдера с Redux
https://www.udemy.com/share/101WcYAkMZd1daQQ==/

Благодарим Стивена, похоже, он продолжал обновлять его с тех пор, как я прошел этот курс в 2018 году, но я бы не рекомендовал изучать Redux в 2021 году. Я думаю, что React и способы управления состоянием с тех пор прошли долгий путь.

Рекомендация 2021 года:
Завершите разработку React Developer в 2021 году (с Redux, Hooks, GraphQL)
https://www.udemy.com/share/101WH4AkMZd1daQQ==/

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

Бэкэнд-разработка: Node.js + Express + MongoDB

Обучение Node было самой сложной частью всей этой учебной программы. Я никогда раньше не запускал локальный сервер и не имел интерфейса API. Я взял несколько классов, связанных с Node + Back End, чтобы вбить одну и ту же информацию в свой мозг, пока не получил ее.
Думаю, мне потребовалось 3–4 раза, чтобы увидеть одно и то же, объясненное разными людьми, чтобы я наконец начал понимать ощущение этого.

Курс, который я прошел:
Полный курс разработчика Node.js (3-е издание)
https://www.udemy.com/share/101WGiAkMZd1daQQ==/

Узел с React: веб-разработка с полным стеком
https://www.udemy.com/share/101WPmAkMZd1daQQ==/

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

Я использовал многие из базовых шаблонов, представленных в этих курсах, для завершения моих проектов FreeCodeCamp.

Рекомендация 2021 года: заменить MongoDB на PostgreSQL

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

Я бы также поискал курс по фреймворку Node, например NestJS.

Стратегия

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

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

Я завершил каждый из проектов Front End Development с помощью jQuery, а затем повторил их снова с помощью React.

Я сделал то же самое для раздела проектов API и микросервисов и построил каждый из проектов с помощью Node.

Собираем все вместе | Портфолио Проекты

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

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

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

GitHub - Контроль версий

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

Это также отличный способ продемонстрировать созданные вами проекты.

Вы можете создать бесплатную учетную запись здесь - https://github.com/.

Для каждого основного проекта мы создали новый репозиторий, создали новые ветки для новых задач + функций и провели проверку кода перед объединением любых изменений с основной веткой.

Этот опыт был необходим, чтобы я сразу мог найти работу.

Jira - Управление проектами | Планирование функций

Еще одна упускаемая из виду часть обучения программированию - это планирование и управление проектами. Создание приложения с нуля - непростая задача. Чаще всего проект останавливается или сталкивается с проблемами из-за отсутствия планирования.

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

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

Я рекомендую изучать управление проектами на пути к тому, чтобы стать разработчиком.

Резюме | TL; DR;

  1. Я разработал учебный план с единственной целью: найти работу в качестве веб-разработчика.
    Моя учебная программа выглядела бы совершенно иначе, если бы моя конечная цель была сосредоточена на что-то кроме работы. У меня не было большой взлетно-посадочной полосы, чтобы выучить все, что я хотел, поэтому учебная программа была оптимизирована так, чтобы можно было как можно быстрее трудоустроиться.
  2. Я сосредоточился на популярных технологиях, которые искали работодатели, и нашел платформу, которая дала мне возможность поучиться по темам в моем заранее определенном учебном плане.
    Обучение обучению: https://www.coursera.org/learn/learning-how-to-learn
    Основная платформа: FreeCodeCamp - https://www.freecodecamp.org/
  3. Я соединил разделы с конкретными онлайн-курсами, чтобы углубить свое понимание по мере прохождения:
    Основы JavaScript: WatchAndCode - https://watchandcode.com
    React / Redux: Udemy - https://www.udemy.com/share/101WH4AkMZd1daQQ==/
    Node.js: Udemy - https: // www.udemy.com/share/101WPmAkMZd1daQQ==/
    Узел React / Redux +: Udemy - https://www.udemy.com/share/101WPmAkMZd1daQQ==/
  4. Когда у меня было достаточно небольших проектов и я завершил учебную программу FreeCodeCamp, я создал проекты с полным стеком, используя технологии, которые я изучил, добавляя другие важные навыки, которые разработчики должны знать, такие как контроль версий (Github) и управление проектами (Jira).
  5. В течение этого периода я встречался с репетитором 2 раза в неделю, чтобы заставить меня отвечать за еженедельные учебные цели и помочь мне понять сложные темы, которые мне было трудно понять самостоятельно.

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

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

С большой любовью ✌️.

Подпишитесь на меня в Твиттере, чтобы узнать больше о самообучении, создании богатства и дизайне образа жизни. ➡ https://twitter.com/timkimm