Хотите стать разработчиком, но не знаете, с чего начать? В интернете так много разных курсов по разным языкам и технологиям, но какие из них вам подходят и в каком порядке действовать – для новичка это всегда неразрешимая загадка и главный сдерживающий фактор на пути к карьере в IT. Опытный веб-разработчик и преподаватель Бил Соуро решил прийти на помощь и создал пошаговый гайд, который поможет определиться, каким именно программистом вы хотите стать и что для этого нужно. В статье много ссылок на полезные, а главное, бесплатные источники знаний. Но имейте ввиду – без английского будет туго.
20 лет я пишу код для веба. Я каждый день помогаю разработчикам. В этой статье я расскажу вам, что стоит изучить, чтобы стать веб-разработчиком, когда стоит это изучать и где можно бесплатно найти учебный материал. А еще дам несколько советов, где получить опыт и найти первую хорошо оплачиваемую работу.
Это руководство поможет вам независимо от того, на каком участке пути вы находитесь. Просто проскрольте статью до того места, в котором описана наиболее подходящая в вашем случае ситуация, и начинайте читать оттуда. Если вы только выходите на старт или подумываете о том, чтобы стать веб-разработчиком, послушайтесь совета Короля из книги про Алису в Стране Чудес.
“Начинай с самого начала и иди, пока не дойдешь до конца. Тогда остановись”.
Чтобы стать разработчиком, попробуйте всего понемногу и выберите что-то одно
Деньги – не главное. Нужно любить то, что ты делаешь. Но вы не узнаете, что любите что-то, пока не попробуете.
Это руководство познакомит вас с разными областями веб-девелопмента в кратчайшие сроки и поможет определиться с тем, что подходит именно вам. Поначалу вы ничего не выучите – вы лишь узнаете базовые вещи. Но когда вы поймете, к чему лежит ваша душа, я покажу, где нужно копать.
Захотел стать разработчиком. Мне нравится web. Но я не знаю, с чего начать
Для начала вам нужно очень быстро изучить основы веб-девелопмента (часто называют full-stack). Это очень широкое поле знаний, но не очень глубокое. Этот шаг необходим, чтобы найти для себя самую подходящую сферу и приобрести основные навыки, которые пригодятся вне зависимости от того, на чем конкретно вы остановитесь.
Изучите основы HTML
Hypertext Markup Language (HTML) – это то, на чем держится контент и элементы всего, что вы видите в вашем веб-браузере. Начав с него, вы поймете, как устроен интерфейс, научитесь взаимодействовать с кодом, а также сможете увидеть, как он работает. Когда вы начнете осваивать более продвинутые языки, эти знания станут еще важнее. Вы же не хотите кодить вслепую.
Изучение HTML нужно построить так (по ссылкам – бесплатные уроки на английском языке):
- С чего начать
- Теги, атрибуты и элементы
- Тайтлы страниц
- Параграфы
- Заголовки
- Списки
- Изображения
- Таблицы
- Формы
- Соединяем все вместе
Я уже знаю основы HTML
Отлично, это очень важный первый шаг. Теперь вам нужно узнать немного о JavaScript.
Изучите основы JavaScript
JavaScript – это язык веба, все основные браузеры (Chrome, Firefox, Safari, IE, and many more) поддерживают JavaScript. Каждый сайт, который вы когда-либо использовали, скорей всего содержит огромное количество кода на JavaScript. К слову, JavaScript становится так же популярен на других платформах, включая сервера, десктопы и устройства.
Вот ссылки на уроки, которые помогут вам освоить основы JavaScript:
- Делаем вещи
- Переменные и данные
- Вычисления
- Логика
- Условные переменные
- Зацикливание
- Функции
- Объекты
- Массивы
- DOM
- События и функции обратного вызова
- AJAX
- JSON
- Scope
Я знаю основы HTML и JavaScript
Фантастика! Теперь заткнем за пояс немного CSS.
Изучите CSS
CSS расшифровывается как Cascading Style Sheets (каскадные таблицы стилей). Он используется для того, чтобы настраивать внешний вид элементов HTML на странице. С основами можно ознакомиться в этом бесплатном уроке от Mozilla, а потом периодически прибегать к помощи CSS-Tricks для решения самых тяжелых проблем CSS (используйте функцию поиска в верхнем правом углу).
Переходим к Back End
Итак, вы знаете большинство языков, с которыми работают веб-браузеры. То есть вы прошли через то, что называют “фронт-эндом”. Время переходить к “бэкэнду”, а именно коду, который запускается на сервере. Не волнуйтесь, чтобы изучить back end, вам не нужно иметь сервер – достаточно домашнего компьютера.
Есть множество бэкэнд-языков, но раз вы уже знаете JavaScript, рекомендую использовать NodeJS. NodeJS позволяет выполнять JavaScript-код на сервере вместо браузера.
Помимо NodeJS стоит также изучить Express и Mongo DB. Express – это библиотека, которая облегчает NodeJS работу в качестве сервера (грубо говоря, он слышит запросы с ваших веб-страниц и отсылает им ответы). Mongo DB – это база данных. Она позволяет хранить и извлекать информацию. Узнать больше о Node JS, Express и Mongo DB можно из этого великолепного и бесплатного урока и его продолжения.
Мне нужно выбрать, каким стать разработчиком: Front End, Back End или Full Stack разработчиком
Итак, вы уже умеете писать два типа кода: один для взаимодействия с пользователями, второй для взаимодействия с данными. Какой вам больше нравится? Если для взаимодействия с пользователями – вы front-end разработчик, если с данными – вы back-end разработчик. Если оба – full-stack разработчик.
Не нравится ни один? Поздравляем, веб-разработка не для вас. Как хорошо, что вы поняли это сейчас, не успев потратить больше времени и денег. Не хотите сдаваться? Возможно, вы просто не нашли свой язык программирования. Попробуйте выучить основы каких-нибудь других языков.
Я хочу быть full-stack разработчиком
Круто. Тогда прочитайте все, что написано ниже.
Я хочу быть front-end разработчиком и я знаю основы JavaScript, HTML и CSS
Чтобы стать профессиональным front-end разработчиком, вам понадобится углубиться в HTML, CSS и client-side JavaScript (компоненты на стороне пользователя). Вам также понадобится разобраться в кое-каких важных фреймворках. Так вы обзаведетесь навыками, которые клиенты и работодатели хотят видеть у front-end разработчиков.
Изучите основной и продвинутый HTML
Пройдите сперва этот урок по основному HTML, а потом по продвинутому HTML.
Изучите продвинутый client-side JavaScript
Для этого подойдет шикарная серия книг Кайла Симпсона, которую можно целиком скачать на GitHub. Бесплатно.
Чтобы еще повысить ваши познания в JavaScript, я рекомендую также его серию You Don’t Know JS (Вы не знаете JS). Книги из основной серии также можно бесплатно скачать здесь:
- “Up & Going”
- “Scope & Closures”
- “this & Object Prototypes”,
- “Types & Grammar”
- “Async & Performance”
- “ES6 & Beyond”
А еще вашим лучшим другом должен стать вот этот курс MDN JavaScript Reference.
Покорить трех китов фронт-энда – HTML, CSS и JavaScript – очень важно. Но чтобы начать зарабатывать деньги, нужно также ознакомиться с некоторыми фреймворками.
Изучите jQuery
jQuery – самая популярная библиотека JavaScript всех времен. И хотя некоторые новые фреймворки обесценивают jQuery, если вы хотите получить работу, велики шансы, что jQuery будет в описании вакансии (и на собеседовании) еще долгие годы.
Рекомендую начать изучение jQuery с курса jQuery path at FreeCodeCamp. Потому можно переходить к официальному обучающему сайту, на котором вы найдете еще больше инструкций. Под рукой лучше всегда иметь jQuery API docs.
Изучите популярные фреймворки для JS
Фреймворки облегчают работу с конкретным языком программирования или технологией, рассматривая и решая некоторые наиболее распространенные проблемы. Фреймворки для JavaScript популярны так же, как и сам язык. Складывается впечатление, что новые JavaScript-фреймворки появляются каждую неделю, и их рекламируют как новые стандарты. Так что вам придется немного погуглить, чтобы выяснить, какой фреймворк популярней всего в вашей нише. Хороший источник для такого поиска – блог веб-разработчика Райана Уильямса Hacker News hiring trends tool, посвященный горячим новинкам.
Сейчас на гребне волны, похоже, React, AngularJS и Ember.
React JS
React создали в Facebook, чтобы работать с их архитектурой Flux. Это JavaScript-библиотека для создания интерфейсов. Недавно она вытеснила Angular с первого места по популярности. Так что начните с React. Хороший курс-введение в React можно найти здесь.
Angular 1 и 2
Angular JS создали в Google и он полетел, как только вышел в свет. Много компаний сделали ставку на этот фреймворк, и он до сих пор популярен. К сожалению, Google взбрело в голову полностью переписать Angular – так появилась Angular 2.
Angular 1 и Angular 2 – два практически совершенно разные библиотеки. Если вы хотите называться экспертом по Angular и сделать это своим конкурентным преимуществом, нужно изучить обе. Возможно, где-то достаточно только Angular 1, но скоро таких мест не останется. Большая часть работы с Angular будет состоять в переводе кода с Angular 1 на Angular 2.
Могу предложить вам веселый бесплатный курс по Angular 1. А чтобы разобраться в основах Angular 2, попробуйте эту бесплатную видео-серию.
Ember JS
На рынке все еще хватает работы для людей с опытом использования Ember JS, но ее популярность начинает постепенно сходить на нет. Его не поддерживают “владыки всея интернета” Google и Facebook, но для этого у вас есть React и Angular. И все-таки, если вам любопытно, можете изучить oфициальное руководство по Ember JS.
Как только вы определитесь с фреймворком, который вам больше всего нравится, имеет смысл изучить сопровождающие фреймворки для CSS. Здесь есть два лидера: Bootstrap и Material Design. Bootstrap сделали в Twitter, он достаточно зрел и популярен. Существуют версии Bootstrap для Angular 1, Angular 2 и React. Material – это руководство по проектированию, выпущенное Google, которое сейчас набирает популярность. У него также имеются версии для Angular и React. А поскольку Angular тоже создан в Google, они с Material Design органично подходят друг другу. Ниже несколько полезных ссылок:
- React Bootstrap
- Angular Bootstrap
- Angular 2 Bootstrap
- Material UI (React)
- Angular Material
- Angular 2 Material
Примите мои поздравления, теперь у вас есть все необходимые навыки, чтобы стать хорошим Front End разработчиком.
Я хочу быть back-end разработчиком
Отлично. Сперва нужно определиться с языком. На бэкэнде можно работать с разными языками, у каждого свои недостатки и преимущества. Ниже график популярности языков и как она менялась за последнее десятилетие. Языки, отмеченные зеленым цветом, с годами становились только популярнее. На них имеет смысл остановиться.
Если вы еще не знаете ни одного из этих языков, пройдитесь по каждому из них от верха к низу и определитесь, который вам нравится больше всего.
Java
Java- чрезвычайно популярный язык, который работает почти везде. Его разработали в Sun Microsystems (сейчас принадлежит Oracle). На Java пишут приложения для Android, десктопные приложения и, конечно же, веб-приложения (как отдельно стоящий backend так и в паре с JSP). Это зрелый, стабильный язык, для изучения которого имеются тонны информации. Он также наиболее распространенный объектно-ориентированный язык в университетских программах по всему миру. Вот один из курсов для начинающих, очень хороший.
C#
Язык C# (си шарп) создали в Microsoft, чтобы конкурировать с Java. До недавних пор поддерживали далеко не все системы, кроме, конечно же, систем Microsoft, но это быстро изменилось. Он объектно-ориентированный, как и Java, и может использоваться для написания не только веб-приложений (в качестве отдельного внутреннего интерфейса или в сочетании с ASP.Net), но также для десктопных приложений. Если вы пользователь Windows и хотите программировать в более привычной экосистеме, C#, вам понравится. Хороший курс можно пройти на Microsoft Virtual Academy.
Python
В отличие от Java и C#, Python создавался не в стенах крутой компании, но несмотря на это он позволяет хорошо и быстро писать программы. Изучить его относительно просто, и благодаря этому с годами он становится все популярнее. Если другие языки не пришлись вам по вкусу, Python может стать вашей путеводной нитью в IT. Лучший источник для изучения основ вы найдете здесь.
(К слову, ранее на AIN.UA выходил материал об украинце, который стал одним из core-девелоперов Python.)
JavaScript
О JavaScript я уже писал выше. Серверная часть JavaScript также приобретает все большую популярность, поэтому его стоит изучить. Если вы этого еще не сделали, самое время.
Ruby
Ruby – странная птица. Те, кому он нравится, жить без него не могут. Язык входит в топ-10 по популярности, но она постепенно снижается. Это смесь функционального и императивного программирования. Я рекомендую с ним ознакомиться, возможно, вы станете одним из его фанатов. Для Ruby-разработчиков в ближайшие годы будет предостаточно работы. Но лучше еще раз проверьте список компаний в своей нише, чтобы убедиться, что хотя бы парочка Ruby-ориентированных в нем есть.
Изучать лучше всего на RubyMonk.
А что с PHP?
На рынке еще много PHP, но он, кажется, теряет свою популярность. Я отметил его желтым, потому что думаю, что на нем еще можно построить карьеру. Я не фанат PHP, так что, возможно, я просто придираюсь, но я не могу представить, что в ближайшие 5-10 лет PHP будет цениться сильнее, чем JavaScript. Даже несмотря на то, что сейчас его рейтинги выше и работы для PHP-разработчиков еще долго будет хватать.
Я многому научился, но у меня все еще нет реального опыта
Без опыта найти работу чрезвычайно сложно. Начните с одного или двух личных проектов, которые постройте сами от начала и до конца. При этом вам пригодится возможность управлять и публиковать свой код. Для этого незаменим GitHub.
GitHub
GitHub – это интернет-хранилище исходного кода, построенное на платформе Git. Он позволяет хранить, управлять и публиковать свой код. Если вы современный разработчик, аккаунт на GitHub – это мастхэв. Больше о том, что это такое и как использовать GitHub, можно узнать в руководстве “Hello World” и из этого интерактивного урока.
Вот несколько идей для своих проектов.
- Постройте простой блог (урок с использованием React и Node)
- Создайте простой календарь (урок с использованием C# и .Net)
Еще много идей для проектов можно найти на Free Code Camp. Вот мои любимые:
Реальный опыт
Теперь вам нужен реальный опыт. То есть работа, которую вы выполнили для кого-то другого. Свои проекты полезны, но их недостаточно, чтобы конкурировать на рынке труда. Получить реальный опыт можно несколькими способами.
1. Поучаствовать в открытом проекте. Благодаря популярности GitHub, есть миллионы проектов с открытым кодом, багов в которых хватит на всех. Наличие в вашем резюме записи о том, что вы решили проблему в каком-то популярном open-source проекте, добавит вам ценности в глазах работодателя. Узнать, в каких проектах лучше всего поучаствовать, можно на Code Triage. Тут вы сможете выбрать проект, который вам больше нравится, после чего каждый день получать в почту сообщения о разных багах.
2. Сделать работу для друга или родственника. У вас обязательно должен найтись хотя бы один друг или родственник, у которого есть собственный бизнес. Разработайте для него сайт или приложение или улучшите уже существующие. Но убедитесь, что и проект, и “клиент” подходящие, чтобы избежать неудобных ситуаций в будущем. В идеале это должен быть проект, который вы сможете завершить за 90 дней, и человек, с которым у вас сложились доверительные отношения. Вы не должны бояться сказать или признать, что все пошло не так, как планировалось, бояться сказать “нет” или не оправдать какие-то запросы или ожидания. Вы также не должны переживать за то, что если кто-нибудь по какой-то причине из вас пойдет на попятную, это не разрушит ваши отношения.
3. Поработайте в благотворительном или неприбыльном проекте. Очень благодарный способ получить реальный опыт – сделать работу для благотворительной или неприбыльной организации. Вы можете предложить свои услуги любой команде, идеи которой вам близки. Найти такие проекты также можно на сайте Catch a Fire.
4. Каторжный труд. Немного нахальный подзаголовок, признаю. Но по моему опыту, если вы выберете этот путь, в будущем, имея постоянную работу или будучи фрилансером, вы будете оглядываться назад и думать о нем, как о каторге, уверяю вас. Такие сайты как Upwork, Fiverr и PeoplePerHour дают возможность сделать карьеру, но предварительно придется набить себе рейтинг, работая за гроши, и браться за любые проекты только чтобы получить опыт.
У меня есть реальный опыт, как мне найти работу?
Первое правило – не называйте себя веб-разработчиком.
Чем, черт возьми, “веб-разработчик” отличается от “фронт-энд разработчика”?! Ну, например зарплатой – на $7000 в год. Серьезно, когда придет время, только то, как вы сами себя называете, может очень сильно повлиять на результат. Вот смотрите:
- Напишите сильное резюме. Несмотря на истории о том, что привлечь внимание работодателя помогут “сумасшедшие штучки”, вам все-равно необходимо хорошее резюме. Написать его поможет эта статья с Tech Republic.
- Создайте сайт-портфолио. Важнее хорошего резюме может быть только ваш личный сайт-портфолио. Соберите на нем все реальные проекты, которые вы когда-либо делали. Акцентируйте, что каждый из этих проектов решал важную проблему конкретного бизнеса. Сделайте это, и тогда ваш сайт будет выделяться из множества других.
- Подготовьтесь к практическому собеседованию и вообще потренируйте свои навыки общения с рекрутерами.
- Не дайте закрыть перед вами двери. Не думайте о том, чтобы получить работу мечты с зарплатой мечты. Просто убедитесь, что вы пишете код и вам за это платят деньги. Когда у вас будет больше опыта, вы сможете сделать следующий шаг к карьере своей мечты.
Я хочу быть фрилансером
Быть самому себе боссом круто, но не легко. Лучший источник информации для фрилансеров – сайт Бреннана Данна DoubleYourFreelancing.com. Он написал серию статей, которые помогут вам сделать карьеру фрилансера лучше, чем что-либо, что я когда-то читал. Так что, зацените.
А если вы считаете, что вы уже очень круты, присоединяйтесь к Toptal. Сюда принимают только 3% кандидатов, процесс прохождения очень сложный, но если вы станете частью комьюнити, то получите доступ к огромному количеству высокооплачиваемых возможностей.
Я застрял
Стать программистом нелегко, и все, кто говорил, что это легко, либо сами никогда не пробовали, либо хотят выудить из вас деньги. Если вы чувствуете, что застряли, вот что можно сделать.
- Переосмыслить изначальную цель. Спросите себя и запишите, почему вы начали идти по этому пути. Ваш ответ все еще в силе? Если да, не останавливайтесь.
- Будьте настойчивы. Теперь, когда вы знаете, что вам нужно и что это реально, вы лучше понимаете каков лучший сценарий, худший сценарий и самый вероятный сценарий того, как все будет происходить. Запишите их, перечитайте и осознайте, что “самый вероятный сценарий” – скорей всего и случится, и он ближе к “лучшему сценарию”, чем к “худшему”.
Не нужно бояться. Двигайтесь вперед. У вас получится.
Автор: Билл Соуро, консультант и тренер, основатель Dev Mastery
Источник: Medium