JavaScript — подходящий язык для новичков?

от автора

Привет, Хабр! Мы на курсах веб-разработки в Практикуме учим студентов писать код на HTML, CSS и JavaScript. С помощью этих языков можно делать практически всё: HTML отвечает за структуру, CSS — за внешний вид, а JavaScript — за функциональность сайта или приложения. Но подходит ли JavaScript в качестве первого языка программирования? Мы решили разобрать этот вопрос по косточкам вместе с экспертами курса, и вот что у нас получилось. 

За что любят JavaScript 

JavaScript — самый популярный язык программирования в мире, если судить по опросам разработчиков. Ведь только его можно использовать в браузере. Есть ещё альтернатива — WebAssembly (или Wasm), но его нельзя считать полноценной заменой.

JavaScript широко применяется в веб-разработке для создания браузерных приложений, на нём можно писать полезные инструменты, консольные приложения и даже компиляторы, хоть это и не популярно. А ещё его можно запускать на сервере с помощью Node.js. Поэтому JavaScript применяют и в серверной разработке — и для полноценных, и для так называемых промежуточных серверов. Вторые общаются с реальным бэкендом, написанным на Java, Kotlin или другом языке, и агрегируют данные в правильной форме, чтобы отправить их на фронтенд.

Преимущества JavaScript для новичков

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

Популярность. Благодаря популярности у языка огромное комьюнити. Если новичку нужна помощь, ему не составит труда её найти. Это могут быть каналы в Telegram и Discord, форумы, Stack Overflow, где разобрано бесчисленное множество вопросов разного уровня сложности по JavaScript. Решение большинства проблем новичков можно найти именно там.

Количество инструментов и библиотек. Это означает, что решение проблемы вы, скорее всего, найдёте в виде библиотеки — готового кода, который можно скачать и использовать в проекте. Но иногда это может и навредить, потому что качество кода в этих библиотеках бывает сомнительным. С опытом вы научитесь определять качество кода «на глаз» и понимать, какое решение можно задействовать, а что лучше написать самому. Готовые библиотеки помогают быстрее выполнять практические задачи — главное, использовать их с умом и не создавать дыры в безопасности.

Удалённость от железа. Чем больше необходимо знать и понимать с самого начала, тем сложнее эффективно работать с языком. Например, в C, C++, Go, Rust нужно предварительно изучить слишком много сложных концепций. А ещё благодаря близости к железу неумелым кодом проще что-то поломать. 

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

Используется в единой веб-экосистеме. А значит, код на этом языке можно запускать везде. По сути, это единственный язык, который работает в браузерах. Благодаря Node.js его можно запускать на сервере и писать на нём полноценные серверные приложения. Если сильно упростить, можно сказать, что серверные приложения, написанные на Node.js, ничем не уступают остальным — написанным на Python, Ruby или других популярных языках.

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

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

Достаточно браузера. В Unix-системах по умолчанию встроены Python или Ruby. Однако, чтобы начать программировать на большинстве других языков — C, Go, Rust и так далее, — нужно установить их исходники себе на компьютер. Только так вы сможете использовать команды для сборки и запуска своего проекта. Для JavaScript этого не требуется. Если вы не собираетесь создавать серверные приложения, всё можно делать прямо в браузере. Для этого существует много сайтов, где можно писать полноценные приложения, не устанавливая себе редакторов кода.

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

Три самых популярных фреймворка —  Angular, React и Vue. Чуть реже упоминаются Svelte, Preact. 

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

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

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

  • Vue популярен в PHP-сообществе. У одного из самых распространённых PHP-фреймворков Laravel удобная интеграция с View. Также View любят Python-разработчики. Django и Flask — популярные фреймворки для написания веб-приложений на Python, и они часто идут в паре с View.

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

Специфика JavaScript

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

Погружение в асинхронное программирование. Оно широко применяется в JavaScript, поэтому разработчику необходимо разобраться, как это работает. Есть много разных способов асинхронной работы: Callbacks, Promises и Async/Await. С другой стороны, асинхронность — продвинутый уровень работы в большинстве языков. Когда вы сможете усвоить этот концепт, на каком именно языке вы это сделаете, будет уже не так важно.  

Сложнее писать в ООП. В отличие от языков с полноценным ООП, например Java или C++, в JavaScript ООП отличается от классического понимания. Там нет статических типов, всё построено через прототипы. Для разработчиков, которые переходят в JavaScript из языков с сильной ООП-базой, в JavaScript сложнее писать в ООП-стиле.

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

Замыкание и использование ключевого слова this — самые сложные концепции для новичков. Замыкание обычно сложно понять тем, кто только пришёл в программирование: почему одна переменная видна в одном месте и не видна в другом? Чтобы вникнуть в особенности применения this, нужно время.

Что происходит на рынке и сложности поиска работы

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

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

Преимущества новичку даёт написание пет-проектов или вклад в разработки формата open source. Но если вы в самом начале пути, это может быть сложно:

1. Нужно найти популярные репозитории на GitHub.

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

Ежегодно проводится Hacktoberfest — месяц, во время которого разыгрываются призы от GitHub за участие в open source проектах. Это делается в первую очередь для того, чтобы стимулировать сообщество и привлечь помощь в те разработки, где она особенно нужна. В этот период на сайте и в соцсетях публикуют подборки Issues для новичков, распределённые по языкам и фреймворкам. Начинающие разработчики могут найти что-то по душе и предоставить свою помощь. То, что написано для open source проекта, остаётся в нём навсегда, поэтому эти достижения удобно показывать на интервью.

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

Выводы

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

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

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

  • А ещё у языка несколько популярных фреймворков с большим комьюнити и множество доступных инструментов и библиотек. 

  • Работы много, но и конкуренция тоже есть. Чтобы стать привлекательнее для работодателей, стоит прокачивать пет-проекты и участвовать в open source разработке. 


ссылка на оригинал статьи https://habr.com/ru/companies/yandex_praktikum/articles/735238/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *