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

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

К моему удивлению, я обнаружил в Интернете огромное количество высококачественных ресурсов. Некоторые из них были бесплатными, некоторые были доступны по цене от 10 до 15 долларов, а некоторые были дороже. И поскольку я каждый раз получал один и тот же вопрос, говоря о своем переключателе, людям было любопытно, что нужно, чтобы научиться программировать самостоятельно, с чего начать, по какому пути следовать, какие методы применять и т. Д., Я решил Я бы написал об этом пост.

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

В этом руководстве больше внимания уделяется интерфейсу, поскольку я выбрал именно этот путь, но оно даст вам основы полного цикла и информатики, которые вам нужны, чтобы дать вам возможность следовать выбранному вами пути. Вы можете пройти весь путь до шага 9, а затем, если вы больше склоняетесь к back-end, вы можете более подробно изучить навыки, связанные с back-end: API, базы данных и управление данными, безопасность, развертывание, микросервисы, Docker, непрерывная интеграция и изучение таких языков, как Python, вместе с широко распространенным фреймворком Django, либо PHP, либо Go. Или, если вам больше нравится мобильный телефон, вы можете использовать Kotlin (Android) или Swift (iOS).

Что ожидать

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

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

Что вы узнаете

Чтобы стать профессиональным веб-разработчиком, необходимо приобрести следующие знания и навыки:

  • Информатика: что такое программирование? Как работают компьютеры и Интернет? Что такое алгоритм и как его написать? Что такое структуры данных? Почему их так много? Когда вы используете каждый из них? Почему это важно?
  • Веб-разработка: Как работает веб-приложение? Какие существуют разные веб-языки? HTML, CSS, Sass, JavaScript, SQL, базы данных, серверы, API… как все они сочетаются друг с другом?
  • Инструменты и рабочие процессы разработчика: редакторы кода (VS Code и другие), CLI (интерфейсы командной строки), контроль версий с помощью Git, Github и других, Webpack, Babel…
  • Современные интерфейсные технологии: Advanced JavaScript (ES2015 +), ReactJS и его экосистема (React Router, NextJS,…), VueJS и Nuxt, Redux, расширенный CSS (анимация, модули CSS, BEM, стилизация -компоненты,…), Jest, Библиотека тестирования React…
  • Полнофункциональная веб-разработка: Как создать API, NodeJS, Express, SQL вместо NoSQL, MySQL, MongoDB, безопасность, аутентификация…
  • Тестирование и развертывание: Как развернуть приложение, чтобы каждый мог его использовать? Какие бывают среды выполнения (разработка, тестирование, производство)? Как правильно протестировать приложение? Что такое разные провайдеры и как выбирать между ними (AWS, Google Cloud, Firebase, Azure, Docker, Heroku, Netlify, Travis CI, Cypress…)?

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

Звучит увлекательно? Конечно! Тогда давайте выпустим Кракена.

1. Веб-разработка 101

Чтобы сразу начать с забавных вещей, которые помогут беспрепятственно открывать для себя веб-разработку, создавая реальные вещи, я рекомендую начать с курса Bootcamp для веб-разработчиков по ​​Udemy, написанного Кольтом Стилом. Кольт - отличный инструктор с очень педагогическим подходом. Он делает даже самые сложные концепции легкими. И у него есть кот. Кто не любит кошек?

В этом курсе вы откроете для себя основы веб-разработки: как работает приложение, HTML, CSS, JavaScript и как использовать командную строку. Вы получите первое представление о некоторых новейших технологиях, таких как Node.js, Express и MongoDB. И все это путем создания забавных проектов, таких как блог, портфолио, список дел и т. Д.



2. Основы компьютерных наук

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

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

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



3. Базы данных и SQL

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

У Кольта Стила (да, снова он) есть лучший курс от новичка до эксперта по Udemy, который проведет вас через SQL и как создавать сложные реляционные базы данных и взаимодействовать с ними.



4. JavaScript

Затем пора перейти к JavaScript сверху вниз, и онлайн-книга Eloquent JavaScript делает именно это:



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



И если вам нравится стиль преподавания Кольта, он объединился со Стивеном Грайдером (еще одним ведущим инструктором по Udemy), чтобы создать курс, полностью посвященный JavaScript:



5. Git

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

«Контроль версий с помощью Git» в Udacity (бесплатно)



«Контроль версий с помощью Git» на Coursera (бесплатно)

Спонсируется Atlassian, которому принадлежит Bitbucket, поставщик удаленных репозиториев, такой как Github.





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

6. Веб-разработка полного стека

Теперь у вас есть все основы, необходимые для создания приложений от начала до конца с использованием новейших и наиболее востребованных на сегодняшний день технологий: объектно-ориентированное программирование, расширенный CSS (flexbox, анимация ...), расширенный JavaScript (ES2015 +), визуализация данных с использованием SVG и D3, React, Redux, Webpack, Node.js, Express, MongoDB, аутентификация,…

У этого курса есть несколько инструкторов: Кольт Стил (снова он!), Эли Шоппик, Тим Гарсия и Мэтт Лейн.



И если вы не поклонник Colt, у Максимилиана также есть полный курс на стеке MERN.

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

7. Тестирование

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

Что касается тестирования JavaScript, я являюсь активным сторонником философии Кент С. Доддс, которая проводит вас через тестирование с одной ведущей идеей:

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

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

Я рекомендую вам начать с этого всеобъемлющего руководства, которое следует философии Кента и дает хорошее введение в основные принципы и терминологию тестирования с помощью таких замечательных инструментов, как Jest и React Testing Library:



Затем знакомьтесь с тестированием все больше и больше, просматривая статьи Кента:

Изучив этот материал, вы должны быть более уверены в том, какие тесты писать и как. Если вы хотите пойти дальше, Кент построил полный курс Тестирование приложений JavaScript по цене от 67 до 332 долларов. Это, безусловно, более высокий ценовой диапазон, чем другие ресурсы, перечисленные здесь, поэтому вам решать, сколько вы хотите инвестировать в свой карьерный рост. Вы также можете найти отличные курсы от Кента на Egghead.io.

8. Алгоритмы и структуры данных.

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



9. Алгоритмы и практика решения проблем.

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

А у вас есть известные обучающие онлайн-площадки для отработки решения задач: Codewars, LeetCode, HackerRank.



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

Вы найдете гораздо больше отличных видео для подготовки на канале Youtube CS Dojo.

10. Front-end Mastery

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



и Alligator.io:



БОНУС: Мастерство разработки программного обеспечения

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



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

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

всегда учиться

Теперь стройте вещи

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

Всегда учись

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

Последние мысли

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

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

Удачного обучения 💛