Пошаговое руководство для начинающих программистов на JavaScript (JS): с чего начать, необходимые знания, план самообучения, начало карьеры и полезные ссылки

Программирование

Вы хотите узнать, как стать JavaScript-разработчиком? Если да, то вы попали по адресу!

JavaScript (JS) — это мощный и популярный язык программирования, который используется для создания веб-приложений и динамических веб-страниц. Это также отличный способ войти в мир IT, поскольку JavaScript является одним из самых простых и понятных языков.

Что должен знать разработчик? Каков стек его профессиональных навыков? Знания каких вещей действительно нужны в настоящей работе кодера? А какие лишь превратятся в потраченное впустую время? Мир IT глазами новичка — непроглядный лес, полный тьмы; данная статья прольет на него свет и поможет более четко осознать все нюансы, опасности и сложности, с которыми вам придется столкнуться, если вы захотите связать свою жизнь с программированием.

От установки всех необходимых программных компонентов до первого Hello, world!, от слез горя из-за многочасового поиска очередного бага до слез счастья от итогового обнаружения оного, от зеленого новичка до настоящего профи — мы проведем вас в дивный мир JavaScript.

Готовы? Начинаем!

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

Основные направления в JavaScript-разработке

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

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

1. Frontend developer отвечает за написание пользовательской части веб-сайта, то есть кода, который запускается на компьютере самого пользователя, прямо у него в браузере. Фронтендер создает все то, что пользователь будет видеть на своем экране, с чем будет взаимодействовать на сайте.

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

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

Разница между фронтенд и бекенд для JS-разработчика

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

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

3. Full stack developer занимается одновременно и фронтендом, и бекендом. Фулстек должен знать и уметь все то, что умеет и фронтендер, и бекендер. Спрос на таких специалистов намного выше, но, как вы понимаете, чтобы стать таким специалистом, нужно затратить в два раза больше усилий.

4. UX/UI designer разрабатывает пользовательский интерфейс везде, где такой имеется, а не только на веб-сайтах. Как было указано выше, тем же самым занимается и фронтендер. Только если для фронтендера это часть его работы, для UX/UI-дизайнера это суть его работы.

Дизайн интерфейса для пользователя нужен в любом мобильном приложении, в любой программе для ПК, в любой игре, одним словом — в любом месте, где человек чем-то пользуется. В веб-разработке UX/UI-дизайнеры обычно работают в больших компаниях на больших проектах, в компаниях поменьше их функции перекладывают на фронтендеров.

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

5. Desktop developer создает программы, которые будут работать на компьютере пользователя без браузера. Примерами десктоп-приложений являются все программы, которые установлены на вашем персональном компьютере: «Ворд», «Эксель», ваш любимый видеоплеер, «Фотошоп». Десктопная версия известного мессенджера Discord написана на JavaScript.

6. Mobile application developer создает мобильные приложения. Притом полностью — и серверную, и пользовательскую части. JS позволяет создавать мобильные приложения без необходимости использовать другие языки, а значит и без необходимости тратить силы и время на их изучение.

7. AI/Machine learning engineer разрабатывает модели искусственного интеллекта. Хотя JavaScript и не является основным инструментом в данной области, но также широко применим. Если вас интересует данное направление, изучением одного только JS вам не обойтись.

8. Data scientist — это специалист по работе с данными, по анализу этих данных с целью получения других, более ценных данных. Нужно понимать, что это направление связано не столько с программированием, сколько с аналитикой. JS здесь используется как один из инструментов для проведения сложных аналитических расчетов.

9. Devops engineer отвечает за автоматизацию, тестирование, развертывание и мониторинг правильной работы программного обеспечения на крупных серверах. Девопс обеспечивает эффективную и безопасную работу удаленных компьютерных центров. Это очень сложная профессия, которая тоже связана с программированием опосредованно. Девопс-инженеры в своей работе часто используют JS как основной инструмент.

С чего начать JavaScript-разработчику

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

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

Занимайтесь любимым делом, и вам не придется работать ни дня в своей жизни!

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

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

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

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

Уровень оплаты труда в сфере IT действительно очень высокий, но не у тех, кого интересует исключительно уровень оплаты труда.

Какие задачи решает JS-разработчик

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

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

1. Задачи frontend-разработчика

Основная задача для новичков, с которой вам точно придется столкнуться, — верстка веб-сайтов. Дизайнер создает изображение в формате .pdf (макет сайта), на котором будут в точности отражены блоки, рабочие области, навигации и все прочие элементы сайта. Задача верстальщика заключается в том, чтобы из макета сайта (просто картинки) создать html-страницу, которая по внешнему виду будет копией данного макета.

Задачи по верстке станут для вас ежедневными, если вы попадете на работу в веб-студию. Каждый день выполнять верстку макета с нуля вам не придется, более типичные задачи — кастомизация каких-то отдельных блоков на сайте клиента; добавление новых блоков.

Помимо верстки, вам будут давать задачи по CMS (content management system), таким как WordPress, Mangento, OpenCart. Вашей задачей будет написание мини-программ (плагинов), предоставляющих определенную функциональность, и их установка на сайте клиента. Также именно вас пошлют клиенту на помощь, если на его сайте с CMS-движком «сломается» (неожиданно перестанет работать) что-то незначительное.

Приобретя должный опыт, вы будете выполнять более ответственные задания. Используя такие популярные JavaScript-фреймворки, как React.js, Vue.js и Angular, вы будете строить интерактивные интерфейсы, разрабатывать одностраничные лендинги, создавать интерактивные компоненты. Вам будут давать задачи по верстке на этих фреймворках, но без требований к пониманию и изменению общей архитектуры приложения.

Следующим этапом профессионального роста станет доверие вам таких задач, как:

  • работа с API — вы должны будете самостоятельно написать код, который сможет отправлять запросы на серверную часть приложения и принимать оттуда ответы на эти запросы;
  • создание фильтрации — когда на сайте есть много информации в виде списка или таблицы, нужно предоставить пользователю возможность ее отфильтровать;
  • добавление и удаление различных компонентов;
  • поиск по сайту — на каждом сайте есть интерактивное окно для поиска, такие вот и вы будете создавать. Речь тут, конечно же, не столько о внешнем виде самого окна, сколько о логике поиска информации по всему сайту;
  • логика обработки ивентов — ивентом называется любое действие пользователя (даже клик мышкой). После определенных ивентов отображение различных компонентов на сайте может определенным образом меняться. Вашей задачей будет прописывание логики данных изменений.

Также типичным заданием для фронтендера является проектирование UI (user interface). То есть создание, продумывание удобного и эстетически привлекательного интерфейса, который позволит пользователям легко ориентироваться и взаимодействовать с сайтом.

2. Задачи backend-разработчика

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

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

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

3. Задачи fullstack-разработчика

Выбрав фулстек своим основным направлением, вы, по сути, будете делать все вышеописанное в пунктах про back и front.

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

4. Задачи мобильного разработчика

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

Типичные задачи:

  • создание страницы регистрации;
  • написание внутренней логики авторизации и аутентификации;
  • создание API для связи с сервером.

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

Общий анализ зарплат и вакансий

При поиске первой работы вы можете наткнуться на некоторые подводные камни, непонимание сути которых может сбить вас с правильного пути. Суть одного из таких заключается в том, что приблизительно половина вакансий для JS-разработчиков без опыта работы являются крайне неадекватными. От вас будут требовать уметь абсолютно все (и даже больше), предлагая при этом работать за еду. Вас будут убеждать в том, что зарплата в 60к — это вымысел, что зарплата в 35к — это очень хороший вариант, а 20к — это то, чего вы заслуживаете.

Если вы действительно получили качественное образование, если вы действительно изучили и умеете все, что вам потребуется для работы, то пусть даже у вас еще нет полноценного коммерческого опыта, ваша минимальная зарплата должна быть на уровне 50–60к.

Некоторые не совсем честные работодатели эксплуатируют так называемый «синдром самозванца». Суть его сводится к тому, что человек склонен принижать свои реальные способности и просто не может поверить, что в IT он на первой же работе может получать в 2 раза больше, чем на своей прошлой работе, где у него, условно говоря, было 10 лет опыта. Некоторые компании используют это, чтобы убедить человека в том, что для него з/п в 20к будет отличным вариантом для старта, тогда как на деле человек заслуживает 50к и при этом реально может их получить в другой компании.

Чтобы убедиться в данной проблеме воочию, посмотрите вакансии для JS-разработчиков на hh.ru. Там возле каждой вакансии пишется, сколько человек просматривают ее прямо сейчас. Если вакансии с зарплатой до 30к смотрят 20–30 человек, то с з/п 90–120к — 3–5 человек. Попробуйте сравнить требования там и там, и вы увидите, что порой в вакансиях за 100к требования еще более адекватные, чем в вакансиях за 30к.

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

Нормальная вилка зарплатных ожиданий для начинающего JavaScript-разработчика в столице — от 50к до 120к.

Интересный факт. Очень часто компании запрещают сотрудникам разглашать свои зарплаты. Это делается, чтобы облегчить для компании ведение переговоров о зарплате. И потому нередки такие ситуации, когда в одной компании работают два разработчика примерно одного уровня по опыту, знаниям и количеству совершаемых ошибок. Но при этом один может получать 1,5–2 раза больше другого.

С учетом инсайдерской информации, полученной командой Profi-Way от многих HR-специалистов, мы можем сказать, что на данный момент на открытую вакансию JavaScript разработчика в среднем претендуют от 20 до 30 человек. Речь идет именно о тех кандидатах, которые действительно обладают должными знаниями и навыками. С учетом того, что в последнее время из-за экономической ситуации наблюдается тренд на снижение вакансий для начинающих, динамика изменений количества людей на одну позицию будет стремиться в сторону увеличения.

В JS очень высокая конкуренция, которая, соответственно, ведет к высокому порогу входа. Общая тенденция — рост популярности направлений, связанных с JavaScript не только со стороны компаний, но и со стороны тех, кто хочет войти в IT. Следовательно, чем дольше вы будете оттягивать начало своего обучения, тем сильнее будут сокращаться ваши шансы на конечный успех.

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

Обучение на JavaScript-разработчика

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

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

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

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

Никакие книги, курсы и видео с «Ютуба» не научат вас кодить. Вы станете настоящим профессионалом только тогда, когда собственноручно сделаете несколько больших проектов от и до. Примером такого проекта может быть какой-нибудь не слишком сложный сайт.

Большим заблуждением является широко распространенная идея о том, что хороший программист должен быть математиком. Практически во всех направлениях, где используется JS, требуется знание математики на уровне 6–7 классов средней школы. Исключением, конечно же, является разработка ИИ.

Из школьных предметов для разработчика куда более важным является английский язык. Он нужен не для обучения. Учиться вы без каких-либо сложностей сможете на русском. Важность английского определяется тем, что в ходе решения настоящих боевых задач вы будете часто сталкиваться с трудными ситуациями. Чтобы выйти из них быстрее, нужно искать решения для аналогичных ситуаций в интернете. Но если вы не знаете английский, то ничего толкового не найдете и не сможете решить свою проблему.

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

Что нужно знать, чтобы стать программистом на JavaScript?

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

Что нужно знать, чтобы стать программистом на JavaScript

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

  • HTML — это стандартный язык разметки, используемый для структурирования веб-страниц. Разработчик JavaScript должен уметь создавать и изменять документы HTML.
  • CSS — это язык, используемый для стилизации HTML-документов. JS-разработчик должен уметь писать и использовать CSS для создания визуально приятного дизайна.
  • DOM: объектная модель документа представляет собой древовидную структуру веб-страницы и используется для манипулирования элементами страницы. JavaScript-программист должен уметь взаимодействовать с DOM и изменять ее.
  • AJAX — это техника, используемая для отправки и получения данных с сервера без перезагрузки страницы. JavaScript-разработчик должен уметь использовать AJAX для отправки и получения данных.
  • jQuery — это библиотека JavaScript, используемая для упрощения манипуляций с DOM и запросов AJAX. Разработчик должен быть знаком с синтаксисом и методами, предоставляемыми jQuery.
  • Библиотеки и фреймворки: для создания качественных веб-приложений вы должны быть знакомы с различными библиотеками и фреймворками JavaScript, такими как Vue, React и Angular.
  • Веб-интерфейсы API: Web API — это набор API, предоставляемых браузером для доступа к определенным функциям самого браузера, таким как геолокация пользователя, данные с его видеокамеры или микрофона. Разработчик JavaScript должен уметь использовать доступные API для создания полноценных веб-приложений.
  • JSON — это формат данных, используемый для представления структур данных в текстовом формате. Разработчик JS должен уметь анализировать, создавать и манипулировать объектами JSON.
  • React.js — это библиотека, позволяющая создавать интерактивные, динамические интерфейсы, которые очень просты в поддержке и изменении.
  • Vue.js — это фреймворк для создания динамических интерфейсов. Поддерживает использование различных библиотек и многоуровневую архитектуру приложений.
  • Angular — фреймворк с открытым исходным кодом, который чаще всего используется для создания «посадочных страниц» (одностраничных сайтов).
  • Node.js — это серверная среда JavaScript, используемая для создания веб-приложений. JS-программист должен быть знаком с синтаксисом и методами, предоставляемыми Node.js для написания серверной части веб-приложений. Углубленное знание Node.js требуется backend и fullstack-разработчикам. Фронтендеру достаточно поверхностного ознакомления.
  • Пакетные менеджеры — это способ управления зависимостями и установки пакетов в проект. Разработчик должен быть знаком с популярными менеджерами пакетов, такими как npm и bower.
  • Контроль версий: системы контроля версий используются для поддержания различных версий кода и отслеживания изменений. Разработчик JavaScript должен быть знаком с популярными системами контроля версий, такими как Git.
  • Тестирование: знание различных инструментов и методов тестирования имеет большое значение в контексте избавления ваших приложений от разнообразных багов (ошибок).
  • Отладка — важный навык для любого веб-разработчика. Вы должны хорошо понимать, как использовать инструменты разработчика в браузере для выявления и устранения проблем в вашем коде.
  • Responsive Design: отзывчивый дизайн необходим для создания веб-сайтов, которые отлично смотрятся на всех устройствах. Вы должны иметь базовое представление о том, как создать отзывчивый дизайн и как использовать медиазапросы для определения различных параметров устройства, в частности размеров его экрана.

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

Более подробную пошаговую инструкцию для приобретения всех необходимых знаний вы получите в следующем разделе.

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

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

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

Способы обучения

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

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

Обучение в вузе

Многие, задаваясь вопросом о том, как стать JavaScript-разработчиком, думают о поступлении в вуз. Но все не так просто. Первое, что вам следует узнать: в вузах нет таких программ подготовки, как «разработчик на JavaScript» или «JavaScript-frontend-developer», «JavaScript-backend-developer», «JavaScript-mobile-developer» и т. д. То есть обучение в вузе конкретно на JavaScript-программиста невозможно.

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

Обучение в вузе на JS-разработчика

Не забывая про тему нашей статьи, нужно также заметить, что JavaScript в вузах изучается нечасто. Зависит, конечно же, от каждого отдельно взятого учебного заведения, но в общем и целом C++, C#, Java (и в последнее время Python) куда чаще встречаются в качестве учебных дисциплин. Связано это в первую очередь с тем, что JS постоянно меняется, постоянно появляются и входят в моду какие-то новые библиотеки, новые фреймворки.

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

Если вы все-таки рассматриваете вариант поступления в вуз как основной, примите во внимание следующие моменты:

  • В большинстве вузов в программах обучения для разработчиков делается очень большой уклон в математику. А как мы уже писали, если вы не планируете заниматься созданием ИИ, то в реальной работе вам будет достаточно знаний математики уровня средней школы. И следовательно, в контексте последующего профессионального применения столь углубленное изучение математики обернется растратой вашего времени.
  • Если вы рассматриваете как варианты для поступления не крупные престижные вузы, а маленькие региональные учебные заведения, то готовьтесь стать главным героем фильма ужасов. В подобного рода местах вы столкнетесь с таким явлением, как написание конспектов. Это когда преподаватель приходит в большую аудиторию и начинает со своих бумажек зачитывать какую-то информацию (которая еще и нередко оказывается устаревшей и бесполезной), а вы должны будете прямо ручкой прямо в бумажной тетради все это записывать. Нет таких записей за целый семестр — нет допуска к экзамену/зачету. Мы вам ответственно заявляем, что подобная деятельность не имеет ничего даже приблизительно, относительно, отдаленно общего с приобретением профессиональных навыков, необходимых для трудоустройства.
  • Часто в вузах можно встретить устаревшую программу подготовки. Далеко не все преподаватели являются в то же время еще и практикующими программистами. Это, скорее, исключение из правил. Подавляющее большинство преподавателей отстают от трендов развития IT-индустрии и потому не просто не способны дать своим студентам актуальные знания, но еще и будут тормозить их развитие требованиями изучения устаревших технологий и подходов.

Конечно же, не все так ужасно. В высшем образовании есть и масса плюсов:

  • Главный плюс — тусовка. Вы окажетесь в окружении своих единомышленников, таких же людей, как и вы, с теми же проблемами и желаниями. Если вы еще юны и думаете о том, поступать ли вам в вуз после школы, то тут и думать не о чем. Однозначно да! Возможно, вы этого еще не понимаете, но один только этот плюс начисто перекрывает все минусы. Студенческие годы — это особая часть вашей жизни, возможно, лучшая часть вашей жизни. Сознательный отказ от нее — это большая ошибка.
  • Вы, вероятно, думаете, что, поступив в вуз, вы потеряете четыре (а то и больше) года своей жизни? Нет. Большинство студентов начинают работать уже на втором курсе. То есть через 1,5–2 года обучения. И сам факт обучения в вузе поможет получить работу. Если речь об обучении в престижных вузах, то на студентов подобных заведений «охотятся» лучшие компании страны. Если будете старательно учиться, то уже на втором курсе вы сможете получить стажировку в «Яндексе» с зарплатой 40–60к. Если продолжите работать, то к моменту окончания вуза ваша зарплата может быть около 200к.
  • Высшее техническое образование всегда будет плюсом при трудоустройстве. Если у работодателя будет вариант выбора между вами с дипломом и человеком примерно вашего уровня навыков, но без диплома, несомненно, выберут вас.

Самыми престижными считаются следующие учебные заведения:

  • Московский физико-технический институт (МФТИ).
  • Высшая школа экономики (ВШЭ).
  • Московский государственный технический университет им. Н. Э. Баумана (МГТУ).
  • Университет Иннополис.
  • Санкт-Петербургский государственный университет (СПбГУ).

Главный критерий оценки престижности университета — зарплата выпускников после окончания вузов. Портал для поиска работы Superjob.ru предоставляет актуальный рейтинг вузов по данному показателю: https://students.superjob.ru/reiting-vuzov/it/?ysclid=lehf7fvu9o291486221

Рейтинг технических вузов для JS-программиста

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

Курсы по языку программирования JavaScript

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

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

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

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

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

Список популярных онлайн-курсов для JavaScript-разработчика:

1. Курс JavaScript от Skillbox.

Курс JavaScript от Skillbox

Skillbox является популярной онлайн-школой не просто так, а благодаря предоставлению качественных услуг в сфере образования. Курс по JavaScript разработан для верстальщиков и начинающих frontend-разработчиков.

Курс научит создавать динамические элементы на сайте, обрабатывать события в браузере, разделять код на модули, создавать асинхронные запросы, владеть ООП, тестировать код. К концу обучения студент будет иметь 2 серьезных проекта в портфолио. Обучение занимает 4 месяца. Есть рассрочка на 12 месяцев.

Ссылка на страницу курса: https://skillbox.ru/course/javascript/.

Также у Skillbox есть другие программы обучения по JavaScript, ознакомиться с которыми можно на этой странице: https://skillbox.ru/courses/javascript/.

2. Курс «Fullstack-разработчик на JavaScript» от «Нетологии».

Курс «Fullstack-разработчик на JavaScript» от «Нетологии».

Обширная программа от «Нетологии», имеющей наивысший процент клиентов, довольных обучением. Данный курс посвящен не просто обучению JavaScript, а fullstack-разработке, которая включает в себя и frontend, и backend.

Освоить профессию может любой желающий с нуля, а также специалист, который хочет перейти на fullstack. На курсе он научится создавать сайты на JavaScript и TypeScript. Благодаря множеству практических занятий студент будет иметь впечатляющее портфолио к концу курса. Длительность обучения составляет 21 месяц. Есть рассрочка на 24 месяца.

Ссылка на страницу курса: https://netology.ru/programs/javascript-fullstack.

3. Курс «Инженер-программист JavaScript» от GeekBrains.

Курс «Инженер-программист JavaScript» от GeekBrains.

Курс от онлайн-школы IT-профессий GeekBrains, посвященный JavaScript. Он подойдет для изучения с нуля или перехода из других языков программирования.

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

Для покупки курса доступно 3 пакета: junior на 12 месяцев, middle на 24 месяца, middle+ на 36 месяцев. Есть рассрочка на 36 месяцев.

Ссылка на страницу курса: https://gb.ru/geek_university/developer/programmer/javascript.

Также у GeekBrains есть базовый курс по JavaScript на 1 месяц из 8 уроков: https://gb.ru/courses/139.

4. Курсы по JavaScript от SkillFactory.

Курсы по JavaScript от школы SkillFactory.

Курсы от онлайн-школы SkillFactory, входящей в число популярных и фокусирующейся на IT-профессиях. Образовательная площадка предлагает 8 курсов, связанных с языком программирования JavaScript: «Fullstack-разработчик на Python», «Fullstack-разработчик на PHP и JavaScript», «Frontend-разработчик» (и интенсив, и курс), «Backend-разработчик на PHP», «Frontend-разработчик PRO», «Алгоритмы и структуры данных», «Веб-разработчик с нуля».

Посмотреть все курсы можно на этой странице: https://skillfactory.ru/courses/javascript.

Самостоятельное обучение

Возможно ли учиться полностью самостоятельно, не потратив на обучение ни копейки? Да, вы сможете самостоятельно изучить все, что нужно для работы JS-разработчиком. По сравнению с некоторыми другими направлениями разработки, изучать Javascript самостоятельно относительно несложно.

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

В первую очередь речь о самодисциплине. Пробовали когда-нибудь договариваться с самим собой? Правда ведь, это несложно? Как себя чувствуете? Устали сегодня? Может быть, вместо того чтобы провести этот вечер в компании противных CSS, AJAX и Git, как-нибудь договоритесь с самим собой и проведете его с пивом и «Дотой»? А ко всем этим джаваскриптным внутренностям вернетесь завтра, а лучше послезавтра (а еще лучше никогда)? Если в подобных вопросах вы человек договороспособный, то поймите это сразу: самообучение явно не ваш путь.

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

Далее команда Profi-Way подготовила для вас пошаговый план, который покажет, как научиться языку JavaScript самостоятельно.

Детальная пошаговая инструкция для самообучения

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

Подробная инструкция по самообучению для JavaScript-программиста

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

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

Готовы? Тогда давайте начнем!

Шаг № 0. Установка всех необходимых программ на ваш компьютер

Пользователи «Линукс» разъяснения данного шага не требуют. Если же у вас Windows, то сделайте следующее:

  1. Скачайте и установите текстовый редактор для средних и мощных компьютеров — Visual Studio: https://visualstudio.microsoft.com/downloads/; для слабых компьютеров — Sublimetext: https://www.sublimetext.com/download
  2. Убедитесь, что ваш браузер не Internet Explorer. Если вы используете Internet Explorer, то установите, пожалуйста, браузер. Подойдет Google Chrome или Firefox.

Шаг № 1. Ваш первый «Хэллоу уорлд»

  1. На рабочем столе или в любой другой папке вашего компьютера создайте пустой текстовый файл (с расширением .txt).
  2. Переименуйте этот текстовый файл (расширение .txt переименуйте тоже) в index.html.
  3. Откройте index.html для редактирования в вашем текстовом редакторе.
  4. Собственными руками введите в index.html следующий код:

    Первый Hello, world на JavaScript
    Вводите точь-в-точь, одна маленькая ошибка — и все старания пойдут прахом
  5. После того как все будет готово, сохраните файл index.html с помощью комбинации клавиш Ctrl+S либо «Файл»/«Сохранить».
  6. Откройте файл index.html в браузере. Для этого нажмите на index.html правой кнопкой мыши и выберите пункт «Открыть с помощью», далее выберите свой браузер. Аналогичный вариант: просто откройте браузер и перетащите в него файл index.html.
  7. Момент истины! Посмотрите в браузер. Что там видно?Если видите в нем «Ну че, привет мир!!!», отойдите от компьютера к центру комнаты и во весь голос громко-громко прокричите: «У-у-и-и-и!!!». Только что вы написали свою первую программу. Теперь вы один из нас. Добро пожаловать в клуб, бро!Если вдруг не видите, то откройте файл index.html в редакторе, перепроверьте. Если что-то не так, внесите изменения, обязательно (!) сохраните его и попытайтесь снова открыть его в браузере. Если что-то не получается, не расстраивайтесь. Перепроверьте еще раз. Не у всех все получается с первого раза, не все люди идеальны, кто-то вон вообще Киркоров =)
  8. Чтобы прочувствовать этот момент получше, попробуйте поменять текст «Ну че, привет мир!!!» на свою версию.

    Первый код на JS
    После каждого изменения сохраняйте файл «index.html». Перетаскивать его в браузер каждый раз не нужно, просто перезагружайте страницу
  9. После каждого изменения текста и перезагрузки страницы вы должны видеть в браузере то, что написали в index.html в месте, отмеченном на изображении выше.

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

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

Старайтесь повторять в своем редакторе то, что увидели, но не просто бездумно переписывать, а писать все самому — не подсматривая в примеры. Пусть даже не будет получаться. Ошибаться — это нормально. Не ошибается только тот, кто ничего не делает.

Шаг № 2. Базовое понимание HTML

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

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

Шаг № 3. Базовое понимание CSS

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

Знания CSS для JS-программиста

Просмотрите данный плейлист с уроками по CSS. Обязательно практикуйтесь после каждого видео.

Шаг № 4. Разбираемся с понятием переменных

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

Изучите эту тему более подробно, посмотрев данное видео:

Шаг № 5. Изучаем типы данных в JS

Типы данных определяют тип информации, которую мы можем хранить в переменных. В JS существует 7 самых простых типов данных: Number, BigInt, String, Boolean, Null, Undefined, Symbol.

Посмотрите видео, чтобы понять тему лучше.

Шаг № 6. Разбираемся с преобразованием типов

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

Изучите видео.

Шаг № 7. Знакомство со структурами данных

Структуры данных — это формат организации и управления хранением данных таким образом, чтобы их можно было эффективно модифицировать и получать. В JS есть примитивные (built-in) и непримитивные (not built-in) структуры данных. Примитивные — это те, которые доступны из коробки (array или number). Непримитивные недоступны по дефолту, вы должны будете импортировать их для дальнейшего использования.

Проработайте видео.

Шаг № 8. Разбираем операторы сравнения в JS

Операторы сравнения используются для определения равенства или разницы между переменными или значениями. Операторы сравнения часто используются в if/else-конструкциях.

Просмотрите видео.

Шаг № 9. Циклы и итерации

Циклы дают вам возможность быстро и легко делать что-то «по кругу» (потому они и циклы).

Смотрите видео.

Шаг № 10. Конструкция Try/Catch

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

Смотрите видео.

Шаг № 11. Математические операции в JS

Изучите базовые математические операции, доступные в JavaScript (+-/*).

Шаг № 12. Функции

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

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

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

Следующее видео описывает 10 проектов, которые дадут вам именно то, что нужно.

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

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

Подобная практика не должна стать единичной. Далее вам нужно заниматься написанием подобных проектов каждый день. Хотя бы немного, но кодить нужно каждый день. Желательно, чтобы сложность проектов постоянно возрастала. Если у вас нет идей для проектов, найдите их в интернете.

Практикуйтесь каждый день

Ваше дальнейшее развитие должно быть направлено на получение работы. Просмотрите это видео.

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

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

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

Так вы уже перейдете в сферу IT. Сейчас легко не будет. Вам еще нужно параллельно учить JS, притом очень интенсивно учить. Но в будущем это станет весомым плюсом при поиске первой работы.

Ссылка на подходящий курс по верстке: https://www.youtube.com/playlist?list=PLNaJj8xMY1XQgYzVhLEFD4WSKqEhj4Sx1

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

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

Наша команда рекомендует вам следующие книги по разработке на JavaScript:

  • «Изучаем программирование на JavaScript», Фримен, Робсон.
  • «Как устроен JavaScript», Д. Крокфорд.
  • «Изучаем JavaScript. Руководство по созданию современных веб-сайтов», Э. Браун.
  • «Секреты JavaScript ниндзя», Резиг, Бибо, Марас.
  • «Выразительный JavaScript. Современное веб-программирование», М. Хавербеке.
  • «JavaScript. Оптимизация производительности», Н. Закас.
  • «Рефакторинг кода на JavaScript», М. Фаулер.

Первый опыт и поиск работы

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

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

Процесс получения работы в IT состоит из трех простых шагов:

  • вы отправляете резюме;
  • вы проходите собеседование с HR-специалистом;
  • вы проходите техническое собеседование у будущих коллег.

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

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

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

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

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

  1. Аутсорс-компания. Фирмы такого типа предоставляют услуги по разработке для других крупных фирм. Например, какой-то компании из США нужно создать многофункциональный дорогой сайт. Нанимать для этой задачи людей в США будет дорого. Куда выгоднее нанять их в РФ или Белоруссии. Заниматься поиском на другом конце света достаточно квалифицированных для выполнения подобной задачи кадров будет также слишком дорого. Поэтому компания обратится в местную (российскую, белорусскую) аутсорс-компанию, которая возьмет на себя весь процесс поиска и найма необходимых сотрудников. Аутсорс-компания — это посредник между местными программистами и зарубежным заказчиком.
  2. Аутстаф-компания. Аутстафинг — это вывод персонала за пределы штата компании. Программист становится субподрядчиком, грубо говоря, обычным фрилансером. Часто такая работа имеет разовый или временный характер. Делается это для того, чтобы компания могла платить меньше налогов.
  3. Продуктовая компания. Компания, которая целиком и полностью разрабатывает свой продукт сама и потому содержит в своем штате всех программистов, которые нужны ей для разработки.

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

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

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

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

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

Насторожитесь, если в компании вам обещают:

  • работу только с CMS-системами без развития как JS-разработчика;
  • работу с jQuery, который сейчас в больших серьезных проектах не используется;
  • работу по очень легким задачам: перекрасить кнопку, передвинуть поле ввода, добавить что-то в форму и т. д.

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

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

Обязанности и требования JS-разработчика

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

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

Как вы уже догадались, на одно-единственное место стажера обычно претендует несколько сотен тысяч кандидатов (или приблизительно около того). Поэтому очень часто стажировки не оплачиваются. Но даже стажировка без оплаты в хорошей компании — это неплохой шанс получить опыт, прокачать все необходимые навыки и через 4–6 месяцев напряженной работы и развития претендовать на уже хорошо оплачиваемую позицию джуниора.

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

Типичные обязанности, с которыми вы столкнетесь, работая JavaScript-разработчиком:

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

В вакансиях для JS-девелоперов вы чаще всего будете встречать следующие требования:

  • Глубокие знания JavaScript. Вы должны знать свой основной язык вдоль и поперек. Вы должны быть способны написать что угодно на JS без использования дополнительных библиотек и фреймворков.
  • Кросс-браузерная адаптивная верстка. Вы должны уметь верстать таким образом, чтобы ваша работа хорошо отображалась на любых платформах (ПК, планшеты, телефоны). Для фронтендера это базовый навык.
  • Отличные знания HTML/CSS, Bootstrap. Вам нужно уметь создавать HTML-каркас сайта и менять его визуальное отображение с помощью CSS. Bootstrap — это фреймворк, который поможет вам ускорить работу.
  • Опыт проектирования и использования API, хорошее представление о HTTP (заголовки, методы, статусы). От вас требуется умение правильно взаимодействовать с сервером через отправку корректных запросов. Для джуниора это must have.
  • Владение искусством дебагинга. Вам нужно уметь быстро находить ошибки в своем и чужом коде. Пишите как можно больше программ, тренируйтесь как можно больше на практике, и данный навык придет к вам быстро.
  • Настройка и сборка кода для серверного рендеринга html. Здесь потребуются знания какого-либо server side — фреймворка по типу next.js или nuxt.js. Данный навык достаточно нетривиален, и от джуна это требуют не часто.
  • jQuery. От вас требуется умение использовать эту маленькую библиотеку для более удобной работы с HTML, обработкой ивентов, анимациями и ajax. На данный момент является неактуальной технологией, чаще используется на старых проектах.
  • Typescript. Вы должны уметь писать более надежный и поддерживаемый код, используя для этого тайпскрипт, то есть тот же самый JavaScript, только с явным указанием типов данных. Сейчас без этой технологии ни в одном серьезном проекте не обойтись. Typescript делает процесс разработки более надежным и прозрачным.
  • Базовые фреймворки JS: react/redux, angular, vue. От вас не требуется глубоких знаний всех трех, но на базовом уровне вы должны их знать. Если требуется углубленное знание какого-то из них, то обычно об этом указывается отдельно.
  • Git. Вы должны уметь использовать git для сохранения написанного вами кода, для отслеживания производимых вами в нем изменений и совместной работы с другими разработчиками.
  • Webpack. От вас требуется только понимание того, что это сборщик модулей, который из большого количества JS-файлов делает один. Также узнайте, какие иные операции можно проводить с помощью Webpack. Глубокого опыта работы с Webpack от новичков обычно не требуют.
  • Базовые знания PHP, MySQL, WordPress. Когда видите это в вакансии, насторожитесь! От вас требуются навыки веб-мастера. На работе вы будете разрабатывать новые простые одностраничные сайты и дорабатывать уже существующие. Перспективы карьерного роста на такой работе обычно отсутствуют.
  • Знание английского на базовом уровне. Вы должны уметь читать инструкцию к использованию (документацию) любой технологии без переводчиков. Умение говорить на английском не очень важно. Это потребуется только в аутсорс-компаниях. И даже там от вас будет требоваться уметь говорить так, чтобы вас просто могли понимать другие люди.
  • Софт-скилы. Это не умение подлизываться к начальству, «продавать себя» для карьерного роста или что-то в этом роде. Софт-скилы — это в первую очередь ваша адекватность в общении с другими людьми, ваше умение выстраивать рабочий процесс таким образом, чтобы ни у вас, ни у ваших коллег не возникала непреодолимая жажда конфликтов.

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

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

Где получить опыт работы разработчику на JavaScript

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

Как получить опыт работы разработчику на JavaScript

Чтобы попасть хотя бы на одно техническое собеседование, вам придется отправить 50, а может 100, а может и 150 заявок. Вы будете постоянно получать отказы, вас постоянно будут игнорировать. Но несмотря на все невзгоды вы должны будете пытаться снова и снова. Поймите, что дело тут не в вас, через этот путь проходят все.

Популярные специализации в IT

Каких специалистов чаще всего ищут

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

Даже когда люди из отдела HR начнут вам звонить, это еще ничего не значит. Вы, воодушевленные таким звонком, сразу же приметесь делать тестовое задание, сделав и отправив его, с большим нетерпением будете ждать ответа, а получите только игнор. Скорее всего, HR-девушка просто забудет про вас и так и не перезвонит.

Не спешите убеждать себя в том, что она очень плохой человек или даже только прикрывающийся человеком, плетущий свои коварные козни рептилоид. Дело тут не в ней, а в цифре 200. Когда она на своем linked.in открывает вакансию джуниора (или, упаси господь, стажера), за несколько первых наносекунд на эту вакансию прилетает под 200 резюме жаждущих кандидатов.

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

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

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

Вы будете писать только фронт, кто-то другой только бэк. Круто! Но в маленьких компаниях помимо вас могут работать 2–3, а то и вообще 1 разработчик. В таких условиях от вас требуется умение делать все, везде и сразу. На узкоспециализированные должности вас могут не брать из-за недостатка глубоких знаний, необходимых для этой позиции, а на фулстека вас не берут из-за того, что вы не фулстек. Такая вот печальная ситуация.

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

Главное, чего боится ваш наниматель, — того, что вы сами уволитесь через полгода. Когда вы получите работу, то ваши старшие коллеги постоянно будут тратить на вас свое время, чтобы вам помогать и учить вас. Время старших коллег стоит баснословных денег. Работодатель готов инвестировать это время (эти деньги) в вас, и ему нужно быть уверенным в том, что инвестиция окупится в будущем. Поэтому для вас важно не показаться ему человеком ветреным и изменчивым.

Держите подальше от ушей вашего потенциального работодателя красочную историю о том, как вы год изучали промышленный альпинизм, но, попав на работу, как-то не впечатлились, а потом пару месяцев строили карьеру маркетолога, но как-то тоже не зашло, после чего полгода работали строителем и, когда поняли, что стройка не в кайф, решили вот податься в IT, но если тут что не так, то вы уже и сейчас подумываете о романтических путешествиях через всю страну на КамАЗах с длинными прицепами. Рассказами подобных историй директоров IT-компаний обычно пытают в комнате 101. Читатель, не надо так!

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

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

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

Вот представьте: случилось ЧП! У кого-то из ваших коллег компьютер вдруг ни с того ни с чего начал сам по себе печатать «-». Все от него даже отошли в сторону, только издали смотрят и крестятся, а он все печатает этот «-» и печатает. И вот вы (Супергерой! Спаситель человечества!) резво мчитесь со второго этажа на девятый, чтобы к безудержному удивлению всех присутствующих обнаружить, что на правом углу клавиатуры лежит какая-то книга, которая нажимает на клавишу «-». Хотя, с другой стороны, вам в таких местах никогда не придется скучать, но все же о профессиональном развитии думать тут не приходится.

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

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

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

Резюме

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

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

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

Резюме должно включать в себя следующие разделы:

  • О себе. Кратко напишите о себе как о личности, о том, что вы командный игрок, о своих будущих целях. Объясните, почему именно вы подходите на эту позицию. Чем вы таким выделяетесь, чтобы из всех кандидатов на эту конкретную позицию в эту конкретную компанию взяли именно вас? Не нужно здесь писать о том, как сильно вы увлечены рыбалкой, шопингом или эксгибиционизмом.
  • Технический опыт. Опишите технологии, с которыми вы работали, что вы уже писали, что вы изучали. В этой секции описываем все технические скилы (навыки), которые у вас есть на данный момент:

— языки программирования;

— технологии и фреймворки;

— веб-серверы;

— базы данных;

— инструменты для тестирования кода/приложения;

— среды разработки (IDE);

— инструменты сборки;

— [все остальное, что имеет отношение к техническим навыкам].

  • Уровень владения английским. В одну строку. «B2», «C1», «B1» — вот в таком виде.
  • Ваше образование. Опишите все релевантное образование, которое у нас есть на данный момент, включая курсы, высшее образование, практики в IT-компаниях, сертификаты и т. д.
  • Предыдущий опыт работы. Опишите весь релевантный опыт в IT, который у вас есть на данный момент. Все, что не связано с IT, работодателя не интересует, писать об этом не нужно.
  • Недавно оконченные проекты. Если у вас нет никаких серьезных проектов, придется сначала сделать, а потом уже вернуться к написанию резюме. Резюме без проектов не имеет никаких шансов на успех. Pet-проекты тоже подойдут.

Большую ценность в резюме играет ссылка на ваш Github. Конечно же, он не должен быть пустым. Для начинающего JS-разработчика must have иметь там хотя бы 4 полноценных проекта с беком и фронтом. Если вы помимо кода еще и загрузите их на какой-нибудь хостинг и дадите ссылки не только на код в Github, но еще и на рабочие сайты, то вы будете отличаться от 99% своих конкурентов.

Где найти работу разработчику на JavaScript?

Самыми популярными интернет-ресурсами по поиску работы для JS-разработчиков в России являются:

Работодатели часто дают информацию о вакантных позициях на специализированных сайтах для программистов, наподобие «Хабра»: https://career.habr.com/.

В последнее время много вакансий размещаются в мессенджере Telegram. Также там можно найти ботов, делающих постоянные подборки вакансий из разных сайтов в интернете.

У каждой компании есть свой сайт. На сайте есть раздел «Карьера», там компании дают информацию об открытых вакансиях.

Вы можете рассылать свое резюме не только по объявлению о найме на работу, но и конкретно HR-специалистам. Часто они работают не на какую-то конкретную компанию, а в качестве свободных фрилансеров. Такой HR-фрилансер может найти вам место в какой-нибудь компании.

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

Как проходит собеседование

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

Собеседование на JS-программиста

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

1. Основы JavaScript:

  • Что такое JavaScript?
  • Каковы основные характеристики языка JavaScript?
  • В чем разница между JavaScript и другими языками программирования?
  • Как отлаживать и тестировать приложения на JavaScript?

2. Front-End Development:

  • Каковы основные технологии веб-разработки?
  • В чем разница между HTML, CSS и JavaScript?
  • Как использовать HTML и CSS для создания отзывчивого дизайна?
  • Как получить доступ к DOM и манипулировать ей с помощью JavaScript?

3. Фреймворки и библиотеки:

  • Где используются Vue, React и Angular?
  • В чем разница между фреймворком и библиотекой?
  • Каковы плюсы и минусы использования фреймворков и библиотек?
  • Как выбрать подходящий фреймворк для проекта?

4. Безопасность и производительность:

  • Какие меры вы принимаете для обеспечения безопасности веб-приложения?
  • Как обеспечить производительность веб-приложения?
  • В чем важность оптимизации производительности?
  • Как реализовать кэширование в веб-приложении?

В следующих видео вы можете воочию наблюдать полноценное онлайн-собеседование в двух частях (с HR и техническое) на позицию JavaScript-фронтенд-разработчика.

Варианты дальнейшего развития вашей карьеры

На своей первой работе вы будете иметь статус junior либо trainee (стажер). О разнице между ними мы уже говорили. Теперь разберем различия между junior-, middle- и senior-программистами.

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

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

Middle все знает и все может делать сам. Помощь в решении проблем ему не требуется. Ему можно давать любые задания, и он сможет выполнить их самостоятельно.

Senior — это человек, который программирует на более высоком уровне. Он абстрагирован от фреймворков, ему неважно, писать ли на React, на Vue или на Angular. Если джуниоры фокусируются на деталях, то сеньоры фокусируются на том, как правильно выстроить и сконфигурировать всю систему, и при этом сеньору все равно, на каких именно технологиях он будет это делать. Он может сделать на любых. Senior — это программист, способный разработать систему полностью с нуля и притом самостоятельно. Это специалист с «глобальным» видением.

Градация junior, middle и senior очень отличается в разных компаниях. Нередки случаи, когда кто-то, являясь мидлом, переходит в другую компанию и там может претендовать только на позицию джуниора (пусть даже и с +/- тем же уровнем зарплаты). Этот перекос образуется из-за того, что аутсорсинговые компании «продают» своих программистов зарубежным клиентам и потому таким компаниям выгодно всячески преувеличивать уровень профессиональных навыков этих программистов. В аутсорсинговых компаниях люди уровня junior часто именуются мидлами.

В направлениях разработки на JavaScript рост программиста от уровня junior до уровня middle обычно происходит за 1–2 года напряженной работы и усердного обучения.

Что же касается перехода от уровня middle до уровня senior, то это может потребовать куда больших затрат сил и времени.

Если речь о фронтенд-разработке на территории РФ, то средняя зарплата мидла колеблется в районе 150–220к. Специалист уровня «сеньор» может получать от 200к до 500к.

Истории и советы от состоявшихся разработчиков на JavaScript

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

Подобным примером могут служить авторы следующих видео:

Полезные ссылки для разработчика

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

Для таких ситуаций есть лучший друг всех программистов — StackOverflow: https://stackoverflow.com/. Это что-то типа «Яндекс Кью» или «Ответы Mail.ru», только для кодеров. Все языки, все фреймворки, все технологии, все, о чем только можно подумать, обсуждается на StackOverflow.

StackOverflow для JavaScript-разработчиков

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

Специализированная секция StackOverflow по языку JavaScript: https://stackoverflow.com/questions/tagged/javascript

Один из лучших интернет-ресурсов для изучения JS на русском языкеlearn.javascript.ru.

Если вы знаете английский, обратите внимание на следующие веб-ресурсы:

Особенно на Freecodecamp — это один из самых обширных источников. Там вы найдете любые и совершенно бесплатные уроки для JavaScript-разработчика.

Большую часть технической документации, которая вам понадобится при работе с веб-технологиями, вы можете найти на сайте https://developer.mozilla.org/ru/

На сайте W3schools размещены краткие разъяснения по любой теме, касающейся не только JS, но и других языков. Раздел для JS: https://www.w3schools.com/js/default.asp. Этот ресурс хорош тем, что вы можете быстро освежить знания о какой-нибудь легкой ерунде, которая часто забывается. Материал дается сжато с информативными примерами.

Обратите внимание на популярные ресурсы для оттачивания своих кодерских навыков при решении маленьких (и не только) задач по программированию:

Обязательно сохраните в закладки браузера вот эту ссылку: https://habr.com/ru/hub/javascript/  — это раздел для JS на «Хабре». Там вы найдете большое количество актуальных и полезных для JS-девелопера материалов.

Если вы пользуетесь телеграмом (а это must have!), подпишитесь на следующие сообщества JavaScript-разработчиков:

Среди множества ютуб-каналов о веб-разработке на JS хотелось бы выделить вот этот шедевр: https://www.youtube.com/@ExtremeCode. Не спешите смотреть его сразу, «искрой-бурей-безумием» он станет для вас, когда вы уже приобретете определенные знания и хотя бы будете понимать значение большинства слов, произносимых в их видео.

Также рекомендуем подписаться на следующие ютуб-каналы о веб-разработке:

  • https://www.youtube.com/@maxgraph
  • https://www.youtube.com/@itproger
  • https://www.youtube.com/@SuprunAlexey
  • https://www.youtube.com/@WebCademy
  • https://www.youtube.com/@REDGroup
  • https://www.youtube.com/@itgid
  • https://www.youtube.com/@UlbiTV

Заключение

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

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

Полезные видео для JavaScript-разработчика

В статье присутствует реклама. Информация о рекламодателе по ссылкам в статье.

Оцените статью
( 1 оценка, среднее 5 из 5 )
Profi Way - твой путь профессионала
Добавить комментарий