Как я прошел всю учебную программу freeCodeCamp за 9 месяцев, работая полный рабочий день

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

Задний план

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

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

Офисы компании находились в нашем доме, поэтому я буквально вырос среди компьютеров и людей, которым они нравились. Я начал играть с Visual Basic в детстве (один из парней в компании научил меня его использовать), и все свое свободное время я проводил в Интернете, болтая с другими ботаниками.

Когда мне было около 12, один из этих ботаников прислал мне по электронной почте руководство по веб-разработке (огромный файл .txt, который в основном касался HTML), и я использовал его для создания собственного фан-сайта. У него даже был один из тех классных счетчиков посещений.

Я разместил его на Geocities, получил бесплатный короткий URL-адрес и разместил его на Yahoo и AltaVista (это были крупнейшие в то время).

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

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

Как я решил сменить карьеру

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

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

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

Время шло, мы занимались другими вещами, а затем я нашел Codecademy и начал экспериментировать с ней, а также обдумывал идею стать разработчиком на полную ставку. У меня уже был некоторый опыт создания веб-сайтов с использованием только HTML и CSS, но без JavaScript. Я читал много историй успеха в Интернете, но все равно не считал это настоящей карьерой, да и то далеко.

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

Там мы встретили кучу разработчиков. Это было безумно. Кажется, что каждый сёрфер, которого мы встречали, каким-то образом работал в IT, будь то менеджер по программному продукту, разработчик, тестировщик и так далее. Все они поощряли нас заниматься технологиями. К тому времени мы уже решили, что хотим переехать в Европу, поэтому многие из них сказали нам: «Здесь можно найти работу. Разработчики здесь востребованы, нам их нужно много ».

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

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

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

Мы начали с Codecademy, но она была для нас слишком ручной (у нас не было премиум-аккаунтов). Где-то читали про freeCodeCamp. И мы начали это, сначала очень медленно (на получение первого сертификата у меня ушло несколько месяцев, правда, в середине учебный план был изменен, и я уронил свой ноутбук, и мне пришлось его ремонтировать). После того, как летние каникулы закончились и я вернулся к полной занятости, дела пошли тяжело.

Работаем полный рабочий день и делаем freeCodeCamp на полной скорости

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

Так что это очень помогло, когда я имел дело с количеством часов, которые я тратил на умственную работу (преподавание и обучение).

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

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

  1. Тайм-менеджмент
  2. Дисциплина
  3. Организация

Тайм-менеджмент

Я начал работать в 7 утра, поэтому в большинстве дней я начинал вставать в 4:30 утра. Я начал день с испытаний freeCodeCamp и кофе. Иногда я также читал книгу или делал другие уроки, в зависимости от того, над чем я работал в данный момент. Я также учился во время обеденного перерыва и после работы, но смирился с тем, что в течение недели я был не так продуктивен из-за работы. Так что в течение недели я в основном выполнял короткие задания, читал и так далее. И я работал над проектами по выходным, праздникам и в свободное время.

Если бы у меня было 30 минут, я бы прочитал 30 минут. Если у меня было 15, я занимался 15 минут. Каждую свободную минуту дня я тратил на учебу.

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

К счастью, после июня мои часы работы были сокращены с 10-12 до 8, так что теперь я работал по обычному графику и начал набирать темп.

Дисциплина

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

Лучший совет, который я могу дать вам, чтобы побороть искушение читать статьи в Интернете, заключается в следующем: если у вас в голове возникает вопрос типа «как летают самолеты?» (обычно это вопрос, который меня увлекает и затягивает на 30 минут), запишите его где-нибудь и пообещайте себе, что вы сможете прочитать все об этом после того, как закончите то, что делаете.

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

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

Вам придется расставить приоритеты и сделать трудный выбор.

Мотивация

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

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

Все мои увлечения практичны и продуктивны: садоводство, йога, кулинария. Мне нужна причина для их употребления (я хочу бесплатные овощи, у меня болит спина, я голоден). Если вы похожи на меня, вам нужно будет найти морковку, чтобы продвигаться вперед.

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

Учебный план + дополнительные ресурсы

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

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

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

Для этого раздела я использовал в основном книги. У меня уже было достаточно упражнений с freeCodeCamp, но мне нужно было больше в виде объяснений. В Beginning JS тоже есть масса упражнений.

  • Начало 5-го издания JavaScript
  • Вы не знаете JS
  • Основы программирования с помощью JavaScript, HTML и CSS
  • Документация по JavaScript

К тому времени, как я добралась до этого раздела, я также присоединилась к программе Summer of Code 1 Million Women to Tech (1MWTT). Я изучил базовый Python и от базового до продвинутого JavaScript, который мне очень помог, особенно с обещаниями.

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

Фреймворки JavaScript: этот раздел тоже был отличным, поскольку он дал мне основу для React и Redux. Я уже прошел курс React по Udemy, React 16.6 - Полное руководство (включая React Router и Redux).

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

На 1millionwomentotech у нас была неделя React, которая в основном была нативной, и затем я начал с ней экспериментировать. К тому времени я также начал работать над своим сайд-проектом с моим мужем, который, как мы решили, будет PWA с React.

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

API и микросервисы: этот раздел стал для меня большим открытием и все изменил. Вплоть до этого модуля я был уверен, что хочу быть фронтенд-разработчиком, но после изучения Node.js я начал думать о том, чтобы стать back-end или Full Stack разработчиком. Создание API-интерфейсов - это очень весело, и вы так быстро видите результаты. Я начал создавать свои первые небольшие проекты Full Stack и был очень взволнован.

Некоторые из ресурсов, которые я использовал:

  • Полный курс разработчика Node.js (2-е издание)
  • Node Girls: знакомство с серверной разработкой с помощью Express
  • Документы узла
  • Экспресс Документы
  • NodeSchool
  • Введение в Node.js
  • Дизайн REST и GraphQL API в Node.js, v2 (с использованием Express и MongoDB)

В то время я также был волонтером в «1MWTT», и меня попросили создать приложение Probot для адаптации волонтеров к Node. Это также дало мне возможность попрактиковаться в Node, что было очень весело.

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

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

- Документы Chai

- Тестирование реакции с помощью Jest и Enzyme

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

- Руководства по D3.js от d3Vienno

- Документация D3

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

Подводя итог, это то, что больше всего помогло мне в достижении моей цели - окончании учебной программы:

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

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

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

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

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

Если вы чувствуете то же самое и можете дать ответ, пожалуйста, подумайте о пожертвовании на freeCodeCamp здесь.