10 вещей, которые стоит знать каждому JavaScript-разработчику


Оглавление (нажмите, чтобы открыть):

10 навыков, которые нужно освоить, чтобы получить работу front-end разработчика

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

Ключевые преимущества: высокая оплата, творческая работа и гибкий график. Но есть целый ряд и других причин, по которым сфера IT является привлекательным вариантом.

Сейчас я хочу сосредоточиться на front-end разработке. Если говорить обобщенно, front-end разработчики пишут сайты, используя HTML , CSS и JavaScript . Они же реализуют готовый дизайн на сайте.

Быстрый обзор текущих вакансий для front-end разработчиков показывает, что существует четкий набор навыков, которые указывают работодатели. Например, списки требований первых трех вакансий для front-end разработчиков, которые я нашел на Glassdoor.com , во многом идентичны: знания HTML , CSS и Javascript , контроль версий, фреймворки.

Это термины, с которыми вы познакомитесь, когда начнете изучать front-end разработку. Ниже приводится список 10 основных навыков, необходимых каждому front-end разработчику.

1. HTML / CSS

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

CSS ( каскадные таблицы стилей ) — это язык, используемый для представления документа, созданного с помощью HTML . CSS используется для определения макета страницы, цветов, шрифтов и других стилей!

2. JavaScript / jQuery

Еще одним основным инструментом в арсенале начинающего front end разработчика должен стать JavaScript ( JS ). Если HTML — это язык разметки, а CSS — язык стилей, то JS — это язык программирования. Если HTML и CSS определяют представление страницы, JS определяет ее функционал.

Для простых сайтов или веб-страниц достаточно будет HTML/CSS . Но для интерактивных функций ( аудио и видео, игры, прокрутка, анимация страниц ) понадобится JS .

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

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

3. CSS и JavaScript-фреймворки

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

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

Чтобы еще больше все упростить, можно использовать фреймворки совместно. Обычно используется пара Bootstrap с другим JavaScript-фреймворком , таким как AngularJS . Содержимое обрабатывает Angular , а внешний вид — Bootstrap ( с некоторым изменениями в CSS ).

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

4. Препроцессинг CSS

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

Используя препроцессоры CSS , такие как Sass , LESS или Stylus , можно писать код на языке препроцессора, доверяя ему делать то, что может занять много времени при использовании CSS . Затем препроцессор преобразует код в CSS , чтобы он работал на сайте.

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

5. Контроль версий / Git

После написания кода HTML , CSS и программирования на JS front end web developer должен будет произвести ревизию проделанной работы. Если что-то пошло не так, последнее, что вам захочется, это начинать все с начала. Контроль версий — это процесс отслеживания и контроля изменений в исходном коде.

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

6. Адаптивный дизайн

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

Адаптивный дизайн является неотъемлемой частью фреймворков CSS , таких как упомянутый выше Bootstrap .

7. Тестирование / отладка

Чтобы заставить все работать надлежащим образом, нужно тестировать код на наличие ошибок. Поэтому навыки тестирования и отладки являются обязательными для front-end разработчиков.

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

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

Тестирование — важная часть процесса разработки front end на Java . Но это еще одна область, для которой существуют различные фреймворки, которые помогут вам. Такие программы, как Mocha и Jasmine , предназначены для ускорения и упрощения процесса тестирования.

8. Инструменты браузера для разработчиков

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

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

Консоль JS позволяет просматривать ошибки, возникающие при попытке браузера выполнить JS-код .

9. Инструменты для построения и автоматизации / производительности

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

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

10. Командная строка

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

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

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

Не останавливайтесь в совершенствовании своих профессиональных навыков!

Данная публикация представляет собой перевод статьи « 10 Skills You Need to Land Your First Front End Developer Job » , подготовленной дружной командой проекта Интернет-технологии.ру

Что нужно знать перед началом изучения JavaScript

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

JavaScript и Java

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

Первоначально язык назывался LiveScript и предназначался как для программирования на стороне клиента, так и для программирования на стороне сервера (там он должен был называться LiveWire). На синтаксис оказали влияние языки Си и Java, и, поскольку Java в то время было модным словом, 4 декабря 1995 года LiveScript переименовали в JavaScript, получив соответствующую лицензию у Sun.

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

Изучение HTML и CSS

Для кого-то это и так может показаться логичным и само собой разумеющимся, но все же стоит обратить на это внимание – прежде чем начинать изучение JavaScript, необходимо научиться разбираться в языке разметки HTML и языке стилей CSS, потому что JS с ними тесно взаимодействует.

Устаревшая литература

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

Стиль форматирования

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

И если речь зашла о фигурных скобках, стоит отметить два варианта их расстановки в коде:

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

Понятные названия

Бывают ситуации, когда JS-код состоит из большого количества строк. Чтобы не забыть, для чего именно объявлялась какая-нибудь переменная в начале кода, лучше дать ей понятное имя. Например:

А вот вариант ниже уже не совсем понятен, и гораздо лучше было бы назвать переменную, допустим, email :

Изучение других работ


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

Отладочные инструменты и фреймворки

Если ваш скрипт работает неправильно, а вы не знаете, в чем дело и находитесь на грани нервного срыва, воспользуйтесь полезными инструментами для веб-разработчиков. Например, для Mozilla Firefox есть плагин Firebug, а также встроенная консоль JS (клавиши Ctrl + Shift + K ), в Google Chrome и Opera – Ctrl + Shift + I , IE9 – F12 .

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

Поиск простых решений

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

Обновление информации

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

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

Стоит ли учить JavaScript: перспективы, ситуация на рынке труда, мнения экспертов

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

Экскурс в теорию: информация о JavaScript, сферах применения и особенностях языка

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

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

В число основных особенностей JS входят:

  • Динамическая типизация — тип данных определяется в момент присваивания значения константе или переменной.
  • Интерпретируемый язык — код приложения интерпретируется при обращении, не требуется предварительная компиляция.
  • Функции как объекты первого класса, то есть функции в JavaScript можно возвращать из функций, передавать в качестве параметров в другие функции, присваивать переменным.
  • Поддержка прототипного и объектно-ориентированного подхода.
  • Универсальность — все популярные браузеры поддерживают JavaScript.

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

Важная особенность JavaScript — развитая инфраструктура. Вокруг этого языка программирования сформировано многочисленное сообщество. Разработчикам доступны мощные инструменты, например:

  • Библиотеки и фреймворки для создания приложений (React, Vue).
  • Сборщики (Webpack, Gulp).
  • Вспомогательные библиотеки (Lodash, Underscore).
  • Генераторы статических сайтов (Gatsby.js, Next.js).

Сферы применения JavaScript

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

Сферы применения JavaScript не ограничиваются браузерами и веб-приложениями. С помощью этого языка решают такие задачи:

  • Разработка нативных приложений. Например, с помощью фреймворка React Native создаются приложения для Android и iOS.
  • Серверная разработка. Например, Node.js применяется для бэкенд-разработки. Об этом направлении в перспективе выйдет отдельная статья.
  • Разработка десктопных приложений. Например, JS применяется в офисных пакетах Microsoft и OpenOffice, в приложениях компании Adobe.
  • Программирование оборудования и бытовой техники, например, платёжных терминалов, телевизионных приставок.

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

Популярность, рейтинг и перспективы JavaScript

Как отмечалось выше, по состоянию на середину 2020 года JavaScript входит в число самых популярных языков программирования. JS занимает седьмое место в индексе TIOBE, который составляется на основе статистики поисковых запросов. Этот язык на данный момент популярнее, чем PHP, Swift, Objective-C, Ruby.

JavaScript занимает первое место по популярности в сообществе разработчиков на GitHub. Этот показатель рассчитывается по количеству репозиториев.

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

О перспективах JavaScript подробно рассказывают эксперты в комментариях ниже. Стоит обратить внимание на два момента.

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

Второй момент: в настоящий момент растет популярность прогрессивных веб-приложений (PWA, progressive web apps). Эту технологию активно продвигает Google. Прогрессивные веб-приложения представляют собой гибрид сайта и мобильного приложения. В среднесрочной перспективе у PWA есть хорошие шансы отвоевать значительную долю рынка у нативных приложений.

Для разработки PWA применяется JavaScript. Например, сайты, созданные с помощью генератора Gatsby.js, поддерживают функциональность прогрессивного веб-приложения из коробки. Это ещё один плюс в пользу востребованности JS в ближайшей перспективе.

Сколько платят фронтендерам, или О зарплатах JavaScript-программистов

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

По данным trud.com на май 2020 года, средняя зарплата JavaScript-разработчика в России составляет 100 000 рублей. Больше всего вакансий на этом ресурсе с предложением зарплаты в диапазоне от 62 000 до 121 000 рублей (см. иллюстрацию). Чаще всего фронтенд-разработчики требуются в Москве, Санкт-Петербурге и Новосибирске.

По данным NewHR, вилка зарплат фронтенд-разработчиков уровня middle в июне 2020 года составляла от 160 000 до 190 000 рублей. По информации «Мой круг», медианная зарплата JavaScript-программиста в России во втором полугодии 2020 года составляла 85 000 рублей.

На сайте hh.ru по состоянию на конец июля 2020 года есть 81 вакансия для JavaScript-разработчиков в Казани (город взят для примера). Уровень зарплаты варьируется от 20 000 до 165 000 рублей.

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

Перспективы JavaScript: взгляд экспертов

Мы попросили известных в отрасли экспертов поделиться взглядами на перспективу изучения JS, ситуацию на рынке труда и востребованность JavaScript в будущем.

Сергей Рубанов: спрос на рынке труда JavaScript-разработчиков сильно превышает предложение

По вашему опыту, почему стоит изучать JS?

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

Какие перспективы у этого языка программирования по сравнению с другими языками?

JavaScript — один из самых распространенных языков в мире. В индексе TIOBE в данный момент он занимает 7 место (и индекс растет), а по количеству репозиториев на GitHub и популярности по результатам опроса Stack Overflow он находится на первом месте и является вторым желаемым языком после Python. Пакетный менеджер npm является самым крупным пакетным менеджером из всех существующих. Все это говорит о том, что перспективы у языка великолепные.

Будет ли он востребован в будущем?

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

Каковы перспективы JS-разработчика на рынке труда?

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

Почему новичку стоит обратить внимание на этот язык?

количество информации, которую можно найти в интернете;

развитая экосистема в виде огромнейшего количества библиотек и инструментов для разработки;

очень хорошее комьюнити;

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

высокий спрос на рынке труда;

Сергей Рубанов, опытный разработчик и лидер сообществ. Приглашённый эксперт TC39 (комитет, который занимается разработкой языка JavaScript), участник WebAssembly Community Group, член команды Babel, соорганизатор BeerJS Moscow, WebAssembly Moscow, ведущий канала Juliarderity (совместно с Романом Дворновым).

Павел Черторогов: эх, а ведь были времена, когда разработчики стеснялись говорить, что они пишут на JavaScript. Сейчас всё не так

По вашему опыту, почему стоит изучать JS?

JavaScript в последние годы стал набирать безумные обороты.

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

А в браузерах обосновался старичок JavaScript. Причем если лет 5-10 назад было стыдно говорить, что ты программируешь на JavaScript, так как его было сложно считать удобным и производительным языком, то после выхода ES6 удобство резко возросло и продолжает расти благодаря работе комитета TC39 (куда входят куча спецов из больших компаний), который развивает синтаксис языка.


Производительность языка постоянно увеличивается. Но благодаря большому комьюнити, интересу больших интернет гигантов к языку, неуклонно растет количество инструментария, которые сильно облегчает разработку. Например, ESlint (проверка стиля кода), Prettier — автоформатирование кода, Babel — для транспилинга кода и напиcания всяких AST-трансформеров, JIT-компиляторов.

Но что не может не радовать, так это TypeScript, который позволяет писать статически типизированный код (Flowtype проиграл для меня войну). Статическая типизация позволяет писать более стабильный и качественный код, дает плюшки автоподстановки в IDE. В общем, корпоративный сектор все больше задач может доверить миру JavaScript. Современный джаваскрипт с классами, декораторами, интерфейсами, типизацией все больше и больше становится похожим на Java в хорошем смысле этого слова. А если учесть, что JavaScript сейчас работает как на клиенте (в браузере), так и на сервере (NodeJS), то это это для бизнеса открывает возможность писать изоморфные приложения.

Будет ли этот язык востребован в будущем?

За пару лет популярность JS должна будет только расти. Ведь столько еще чудовищных интерфейсов вокруг, столько мертвых страниц, сгенерированных сервером. JS будет теснить PHP и Ruby.

Так или иначе JavaScript еще будет востребован как минимум лет 10, дальше прогнозировать сложно.

Что угрожает JavaScript/TypeScript:

WebAssembly маячит на горизонте, но он пока еще незрелый. Если проблемы с доступным функционалом и инструментарием. Со временем он отберет часть задач на себя (будет чуть меньше работы JS разработчикам), но убить JS он не сможет (т.к. он использует существующие части виртуальной машины JavaScript и ее среду изоляции).

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

В любом случаем надо постоянно учиться и развиваться, чтоб соответствовать текущему времени. Но, к бабке не ходи, лет через 10 надо точно будет чему-то сильно переучиваться.

Мастер Йода рекомендует:  XML-Sapiens - орудие разделения функциональности сайта и программного ядра

Каковы перспективы разработчика JS на рынке труда?

Сейчас есть некий перекос в сторону фронтенд-разработчиков, которые производят wow-эффект на клиентов. К примеру, на Украине сейчас активно ищутся React/Vue/Angular разработчики. И нередко зарплата таких фронтенд-специалистов с опытом 1-2 года по зарплате соизмерима со среднестатистическим Java-бэкендером с опытом 6-8 лет. Нужны легкие деньги после универа?! Вперед в JS!

Почему новичку стоит обратить внимание на JS?

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

Павел Черторогов, архитектор информационных систем, GraphQL-гуру.

Роман Дворнов: JavaScript вряд ли куда-либо денется в ближайшие годы

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

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

Кстати, о новом. JavaScript — один из немногих языков с таким немалым возрастом (был создан в декабре 1995-го), который настолько динамично развивается сегодня. Формально все началось в 2015 году, когда вышла новая редакция ES2015 (или ES6) и было решено выпускать новую редакцию каждый год, хотя на самом деле всё началось задолго до этого. Не каждый год случаются значительные изменения, но изменения происходят и чувствуется темп. Можно следить за работой TC39 (комитет работающий над спецификацией языка), участвовать в обсуждениях предложений, вносить свои предложения и так далее – процесс открыт, и это здорово. К тому же, сегодня имплементаторы внедряют новые фичи накануне принятия новой редакции спецификации языка, а не несколько лет спустя, как это было раньше.

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

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

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

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

Роман Дворнов, эксперт в области фронтенд-разработки, ведущий канала Juliarderity (совместно с Сергеем Рубановым). Профиль на GitHub.

Андрей Оконечников: будем ли мы писать JS через несколько лет — неизвестно, но 99% что мы будем продолжать компилировать в JS

По вашему опыту, почему стоит изучать JS? Какие перспективы у этого языка программирования по сравнению с другими языками?

Несмотря на интересные альтернативы, такие как ReasonML, Kotlin и уже существующие языки, которые компилируются в JS, такие как ClojureScript и Elm, это никак особенно не влияет на всё растущую популярность JS. Причина для того, на мой взгляд, в низком пороге входа и огромной экосистеме (npm). На JS написано несколько миллионов опенсорс модулей, которые можно установить за считанные секунды. Плюс возможность открыть консоль разработчика в браузере и начать писать код.

Развитие распределенных сред разработки, которые работают напрямую из браузера, например CodeSandbox, ещё более уменьшают порог входа для новичков. Инструменты разработки становятся лучше и лучше, позволяя использовать JS в больших командах.

Одновременно с этим, растущая производительность JS runtimes, например V8, делает использование этого языка все более приемлемым на платформах вне веб-браузеров.

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

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

Будет ли JS востребован в будущем?

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

Каковы перспективы разработчика JS на рынке труда? Почему новичку стоит обратить внимание на JS?

Сейчас перспективы как никогда лучше. Особенно связанные с фронтендом. Веб превращается в платформу для по-настоящему сложных приложений, и рынок просто не способен удовлетворить потребность компаний. Но JS не единственный фактор. Умение писать CSS и доступный HTML важны сегодня как никогда. Рынок JS разработчиков наполняется в основном из backend-разработчиков, переквалифицирующихся во frontend. Если вы видите себя во frontend, я бы очень рекомендовал обратить внимание на основы дизайна, user experience, HTML + CSS и, конечно же, JavaScript.

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

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

Андрей работал с такими компаниями, как Yandex, JetBrains, Feedly, Netlify и многими другими. Он основатель консалтинг-компании component-driven.io, специализирующейся на дизайн системах и сложных веб-интерфейсах, и создатель macOS приложения цветовой пипетки для разработчиков и дизайнеров ColorSnapper.

Александр Казаченко: на одного подходящего кандидата приходится 10 или более неподходящих, это печалит

По вашему опыту, почему стоит изучать JS?

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

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

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

И на сервере JS тоже имеет свою нишу в виде Nodejs.

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

Но если посмотреть не с точки зрения прагматизма, а с точки зрения энтузиазма, то в этом смысле JS тоже очень привлекателен.

Сейчас существует множество языков, транспилирующихся в JS (TypeScript, CoffeeScript, Kotlin и так далее), много фреймворков и библиотек разного уровня абстрактности, что позволяет разрабатывать на JS так, как нравится именно вам.

Какие перспективы у самого языка программирования в сравнении с другими? Будет ли он востребован в будущем?

Как я отмечал выше, у JS очень большой рынок, где он востребован и где ему нет аналогов (веб-браузер).

Соответственно, можно считать, что в ближайшие лет 10 JS не только не умрет, но и будет активно развиваться.

На какое направление при изучении JS обратить больше внимания — frontend или backend?

Изначально JS применялся сугубо для frontend’а, соответственно и развился он больше в эту сторону. Но это не имеет никакого значения, при выборе направления — frontend или backend. Более значимым в этом выборе будет то, чем интересно заниматься именно вам. Так как язык один и тот же, разница только в окружении.

Какие перспективы у JS-разработчика в работе? Почему новичку стоит обратить внимание на этот язык программирования?

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

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

За последние 3 года я прособеседовал не менее 200 человек, и на одного подходящего кандидата приходится 10 или более неподходящих, это печалит.

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

Стоит ли браться за JavaScript: итоги

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

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

Примечание: мнение экспертов может не совпадать с мнением администрации и сотрудников Хекслета.

10 вещей, которые нужно изучить на пути к становлению мастером JavaScript

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

1. Поток управления


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

  • if else — если вы не знаете их, как вы писали код раньше?
  • switch — это в основном if else , если еще более красноречиво, используйте его, как только у вас есть несколько разных случаев.
  • for — не повторяйтесь, для этого и существуют циклы.
  • Расширенные условия — использование тернарных и логических операторов может сделать вашу жизнь намного проще, особенно когда вы пытаетесь сделать вещи встроенными, а это означает, что вы не хотите сохранять значения, чтобы использовать их позже. Образец:

2. Обработка ошибок

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

3. Модель данных

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

4. Асинхронность

Это очень важный аспект JavaScript: либо вы извлекаете данные из серверной части, либо асинхронно обрабатываете запросы в самой серверной части. Если вы понятия не имеете, что это такое, вы, вероятно, получите странную ошибку, которую вы попытаетесь исправить в течение нескольких часов. Если вы знаете, что это такое, но вы действительно не знаете, что с этим делать, вы окажетесь в callback-hell . Лучший подход — использовать обещания и / или async await в ваших приложениях.

5. Манипуляций с DOM

Это интересная тема. Обычно не часто встречается в повседневной жизни у разработчика. Может быть, вы изучили jQuery и никогда не чувствовали необходимости приобретать какие-то собственные навыки манипулирования DOM, может быть, вы просто используете фреймворк, где редко возникает необходимость в пользовательской манипуляции DOM. Тем не менее, я думаю, что это важная часть понимания JavaScript, по крайней мере, во фронтенде. Знание того, как работает DOM и как получить доступ к элементам, дает вам глубокое понимание того, как работают веб-сайты. Кроме того, будет момент, когда вам нужно будет сделать некоторые пользовательские манипуляции DOM, даже когда вы используете современные фреймворки frontend, и вы определенно не хотите помещать jQuery в свой package.json только для доступа к элементу.

6. Node.js / Express

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

7. Функциональный подход

Существует постоянная дискуссия о функциональном и объектно-ориентированном программировании. Вероятно, вы можете достичь того же с обоими подходами. В JavaScript это еще проще, у вас есть оба доступных подхода. Библиотеки, такие как lodash, дают вам действительно хорошую коллекцию инструментов для создания приложений с функциональным подходом. В настоящее время даже нет необходимости использовать внешние библиотеки. Многие из наиболее важных функций были реализованы в официальной спецификации JavaScript. Вы определенно должны знать, как использовать map reduce filter forEach и find .

8. Объектно-Ориентированный Подход

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

10 вещей, которые стоит знать каждому JavaScript-разработчику

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

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

Учитывая эти аспекты, начнем…

Что такое FizzBizz тест

FizzBizz — как правило, небольшой тест, направленный на отсеивание неопытных разработчиков. Я думаю, вы будете удивленны как много javascript разработчиков не умеют писать такие тесты.

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

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

Пример классического FizzBizz теста:

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

Разница между == и ===

Вы, наверняка, знакомы с обоими операторами сравнения. Тем не менее, а знаете ли в чем точно отличаются эти операторы? Ваш Javascript Linter требует от вас применения оператора ===, задумывались почему?

== не сравнивает типы операндов, вместо этого он приводит их к одному типу. Такая операция имеет негативную репутацию.

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

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

Тот же самый пример, но с оператором ===

В ответ мы получаем false , так как операнды разного типа, один из них целочисленного типа, а второй строкового.

Я настоятельно рекомендую вам более подробно ознакомится с операторами сравнения в на сайте разработчиков Mozilla. Там приведены примеры их использования и более подробное описание.

Как выбирать элементы DOM без дополнительных библиотек

Наверняка вы знакомы с тем, как сделать выборку элементов при помощи jQuery, но сможете ли вы сделать тоже самое, но уже без помощи этой библиотеки?

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

Существует несколько нативных методов для поиска элементов в DOM, которые ни чем не уступают jQuery. Мы можем также использовать селекторы вида first-child , last-child и т.д.

Познакомимся с некоторыми из этих методов

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

  • document.getElementById — классический метод для поиска элементов по их ID.
  • document.getElementsByClassName — выборка элементов по значению поля className
  • document.querySelector — отличный метод, который практически полностью заменяет селектор $() от jQuery, но он уже включен в Javascript. Единственное отличие заключается в том, что он возвращает только первый найденный элемент.
  • document.querySelectorAll — аналог предыдущего метода, но возвращает массив найденных элементов.
  • document.getElementsByTagName — этот метод поможет вам выбрать элементы по имени тега. Если вам потребуется найти все div элементы, то вам нужен именно этот метод.

Хочу также отметить, что методы querySelector и querySelectorAll можно использовать не только на всем документе, но и на отдельных элементов, то есть выборку вы можете делать в пределах одного родительского элемента.

В документации от mozilla вы найдете полное описание этих методов.

Поднятие объявлений переменных и функций

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

Поэтому для удобства чтения кода возьмите себе за правило ВСЕГДА объявляйте переменные в начале области видимости. Если же вы укажите ‘use strict’ в верху скрипта или функции, то при обращении к необъявленной переменной вы получите ошибку.

Большинство инструментов для проверки стиля кода, как Jshint, укажут вам на ошибку если вы не использовали ‘use strict’ , исходя из этого, если вы стараетесь писать хороший код, то вам в любом случае не получится использовать переменные до их объявления. Как всегда, при возникновении вопросов, обращайтесь к документации от mozilla, там вы всегда найдете полное и исчерпывающее описание вашей проблемы.

Использование инструментов разработчика в браузере

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

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

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

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

Команды консоли

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

Наверняка, вы уже знакомы с такими командами как console.log и console.error , но этим функционал консоли не ограничивается.

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

  • console.log — используется для ведения журнала событий. Поддерживает форматирование.
  • console.error — для журналирования ошибок в коде. Я использую эту команду при возникновении ошибок в AJAX запросах и в других потенциально опасных участках кода. Метод похож на предыдущий, но он выводит список вызовов стека.
  • console.dir(object) — выводит форматированное содержание объекта. Как приавло, этот метод очень полезен при отладке кода.
  • console.group(title) — позволяет создать группу сообщений в журнале с названием title. Таким образом вы можете группировать сообщения, например, по тому участку кода, где они генерируются.
  • console.groupCollpased — аналог предыдущей команды за одним исключением. А именно, она выводит сообщения в свернутом виде.
  • console.groupEnd — заканчивает ранее созданную группу.
  • console.time(label) — позволяет отслеживать скорость работы участка в миллисекундах. Метод полезен при отлавливании потенциально сложных участков кода.
  • console.timeEnd(label) — аналог метода groupEnd, но работает он в отношении console.time().
  • copy(string) — в консоли Chrome и Firefox существует метод, позволяющий вам копировать содержимое string в буфер обмена. Очень полезный метод, попробуйте его применить.

Что именно содержится в this

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

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

Самой простой способ понять this , это принимать его за владельца или родителя метода. this всегда ссылается на родителя (parent), за исключением случаев, когда вы исползуете методы call , apply или bind .


В следующем примере this ссылается на объект window :

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

При объявлении функции таким образом, она привязывается к глобальному объекту window . Помните, мы же сказали, что this ссылается на родителя метода?

Изменение значения this на полностью новый объект (не window):

Сторонники чистоты кода наверняка в шоке от такого примера. Мы просто ходим по верхушке айсберга с такими примерами. Как видите сами, значение this уже не равно window .

Почему так произошло?

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

В следующем примере мы создадим фиктивный API для выгрузки данных из библиотеки от сервера. Мы создадим объект API с некоторыми методами.

При использовании слова new , контекст скрипта переходит от контекста window к API .

Как видите значение this полностью задается способом вызова метода. Так как функция вызывается в пределах объекта API , её родителя, то значение this ссылается на объект API.

Помните, значение this изменяется. Оно изменяется в зависимости от способа вызова, но если вы используете метод bind , то значение this остается неизменным.

Более подробно с ключевым словом this в javascript вы можете познакомится в статье Quirksmode и документации от Mozilla.

Как мы уже указали ранее user strict используется для применения более строгой версии языка javascript. Эту директиву следуют применять во всех скриптах.

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

В документации от mozilla существует целая статья на эту тему, я настоятельно рекомендую вам познакомиться с ней.

Разные виды циклов

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

Список циклов в javascript:

Цикл for

Абсолютно обязательный цикл, который необходимо знать и понимать. ОН выполняет свое тело при выполнении условия 2.

Условие 1 — выполняется один раз перед началом серии циклов. В большинстве случаев вы будете инициализировать здесь счетчик цикла. Этот пункт можно пропустить, если вы произвели инициализацию ранее.

Условие 2 — это условие применяется для определения продолжать цикл или нет. Вы, наверняка, будете здесь сравнивать ваш счетчик с размером массива. Если значение сравнения true, то цикл продолжается. Если вы прерываете цикл внутри при помощи break, то это условие можно пропустить.

Условие 3 — этот участок выполняется после каждой итерации, как правило именно здесь вы увеличиваете ваш счетчик.

Цикл for. in

Следующий по важности тип цикла. С его помощью вы сможете пройти по всем полям класса.

Цикл for. of

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

Этот цикл полная противоположность for. in , он перебирает значения полей и работает только с типами данных, которые поддерживают итерации, к которым Object не относится.

Мастер Йода рекомендует:  Курс «Проектирование СУБД»

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

Цикл forEach

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

Он работает только с массивами, не объектами. Он выгоден тем, что вам не приходится создавать дополнительные переменные, которые в итоге только загрязняют ваш код.\

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

Иногда вам нужно просто пройти по всем элементам массива и, возможно, внести в них некоторые изменения. Его поведение похоже на jQuery.each.

Один недостаток такого типа циклов — его нельзя прервать. Если вам требуется создать цикл по правилам ES5, то воспользуйтесь методом Array.every , познакомиться с которым вы можете в документации mozilla.

Цикл while

Цикл while аналогичен for , но он принимает только один параметр — само условие, по которому цикл определяет продолжать итерации или прекратить их.

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

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

Цикл do. while

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

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

На этом разница не заканчивается. Цикл while обрабатывает условие до выполнения итерации, а do. while после.

Как всегда в документации от mozilla вы найдете подробное описание такого вида циклов.

Базовые методы и задачи

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

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

Работа со строками

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

  • String.replace(regexp | что заменить, на что заменить, callback) — позволяет заменить часть строки, допускается применение регулярных выражений.
  • String.concat(сторока 1, строка 2. ) — соединение нескольких строк в одну.
  • String.indexOf(value) — метод позволяет найти порядковый номер символа искомой части строки, -1 — если строка не найдена
  • String.slice(startIndex, endIndex) — возвращает участок строки от startIndex до endIndex
  • String.split(разделитель, лимит) — разбивает строку на массив по символу разделителя, максимальной длиной лимит.
  • String.subsctr(startIndex, length) — возвращает часть строки начиная с startIndex длиной length.
  • String.toLowerCase — переводит все символы строки в нижний регистр
  • String.toUpperCase — перевод все символы строки в верхний регистр
  • String.trim — удаляет пробелы из начала и конца строки

Работа с массивами

Вам очень часто придется встречаться с массивами. Они отлично зарекомендовали себя как способ хранения данных. Эти методы точно стоит знать любому разработчику javascript, не следует искать их в google.

  • Array.pop -возвращает последний элемент и удаляет его из массива.
  • Array.shift — возвращает первый элемент и удаляет его из массива.
  • Array.push(val1, val2) — добавляет одно или несколько значений в конец массива. Возвращает новую длину массива.
  • Array.reverse — зеркально изменяет порядок элементов массива.
  • Array.sort([функцияСравнения]) — позволяет сортировать массив при помощи собственной функции.
  • Array.join(separator) — Возвращает строку, состоящую из элементов массива, разделенный символом separator (по-умолчанию — запятая).
  • Array.indexOf(value) — возвращает индекс элемента в массиве, -1 если элемент не найден.

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

Разница между call и apply

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

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

При помощи метода apply вы можете передать аргументы в виде массива и изменить значение this .

Если вам нужно просто передать массив в качестве аргументов методу, то начиная с ES6 добавлен расширенный (spread) оператор. Он не позволяет изменять значение this . Познакомиться с ним вы сможете, как всегда в официальной документации от mozilla.

Знакомство с библиотеками и фреймворками

На сегодня самыми заметными представителями javascript фреймворками являются AngularJS, React.js и Ember. Конечно существует еще целый ряд других.

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


Node.js

Вне сомнений Node.js занимает твердые позиции. Практически любой фронт-енд инструмент построен на node.js и использует npm (менеджер пакетов node), если с ним незнакомы, то настоятельно советую исправить это упущение. Так как node.js использует javascript, то изучить его не представляет особых трудностей для тех, кто уже знаком с этим языком. У вас больше времени уйдет на настройку пакетов node, чем на написание самого кода.

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

Существует fork node.js под названием IO.js, на сегодняшний день они практически аналоги, да и в конце концов вы просто пишите на Javascript за исключением небольших отличий.

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

Когда-то мы совсем не тестировали javascript код, так как не считали это необходимым. Но скрипты становятся всё больше и больше благодаря AngularJS и Node.js.

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

Инструменты

Быть javascript разработчиком в 2015 году означает не только отличное знание языка, но и большого числа инструментов для работы с ним.

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

Вот набор инструментов, о которых стоит помнить: Gulp, Webpack и BabelJS. Существует намного больше инструментов, но такие инструменты как Gulp и Grunt значительно помогают вам в разработке и управлении javascript приложениями.

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

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

Инструменты javascript идут рука об руку при разработке изоморфного Javascript (код, используемый как на стороне клиента, так и сервера). ECMAScript 6, он же ES6, он ESNext

Браузерам предстоит еще реализовать большую часть функционала ECMAScript 6. Но уже сегодня вы можете использовать новинки от ES6 при помощи компиляторов javascript. Познакомьтесь с новыми API и методами: строки, массивы и другие метода как WeakMaps, Символы и Классы. Следует всегда быть в курсе грядущих изменений.

Заключение

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

Что нужно знать помимо javascript для фриланса (в частности на oDesk)?

Извиняюсь если что-то подобное уже было, но все же решил спросить здесь.

Общий вопрос всего этого поста может звучать так:
Что лучше делать человеку хорошо знающему javascript, если он решил заняться фрилансом?

Здесь я разложу этот вопрос на под темы, а ниже какая либо доп. информация:

— Имеет ли смысл рассчитывать на работу js-специалиста (т.е. в случае если навыки js используются значительно интенсивнее других)? Возможно ли это на фрилансе?
— Что лучше учить в связке с js? Имея базовые знания по CSS, HTML стоит ли нацелится на них и периодически использовать js? Или лучшем будет изучение frontend фреймворков? Необходимы ли при этом будет в дальнейшем много верстать? Насколько перспективна эта сфера деятельности?
— Если использовать github-аккаунт как часть портфолио, что наиболее привлекательно будет в нем для работодателя?
— Имеет ли смысл довести какие-то свои задумки до конца перед началом поиска работы, или лучше начать сразу а уже стабильно оплачиваемые заказы могут пойти в портфолио?
— Возможно ли получить помощь\поддержку в начале пути фрилансера от человека активно этим занимающемся?
Ну и напоследок чисто-субъективные вопросы на которые я не жду аргументированного ответа, а просто совета, основанного на жизненном опыте:
— Стоит ли нацеливаться на javascript или лучше менять акцент (или вовсе бросать js) на другой язык?
— Стоит ли уповать на фриланс или лучше искать обычную работу?

Ниже следует дополнительная информация, предыстория etc.

Я студент 3 курса и хочу найти работу. Я живу в городе-миллионнике, название которого я пока предпочитаю скрыть, упомяну лишь, что он не Питер, не Москва. В первый, причем, думаю переезжать.
Также занимаюсь «разработкой» на javascript уже несколько лет. Эту деятельность можно разделить на 2 части:
— мелкая помощь другу с версткой, валидацией форм, иногда что то более серьезное. Иногда что-то чуть более серьезное.
— какие-либо свои проектики, амбициозные, но пока далекие от завершения.

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

Помимо js я имею некоторые навыки программирования вообще, за плечами лет 5-7 программирования just-for-fun, писал на delphi, немного даже на ассемблере, затрагивал php, занимался также и версткой.

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

Собственно вопрос который меня интересует больше всего это:
Возможно ли найти работу js-специалиста в чистом виде? Я знаком с jquery, но не знаком с некоторыми другими важными фреймворками\библиотеками мира js: angular, knockout, backbone, underscore etc. Здесь у меня возник «паралич выбора» недавно описанный на хабре. Однако я готов изучить то что нужно среди этого. Вопрос в другом: можно ли хорошему js-специалисту найти работу, если он не эксперт в верстке? Можно ли сделать это на фрилансе? Т.е. конечно у меня есть опыт верстки, но я не знаю всех тонкостей этого мастерства. Меня больше волнует то что мне не нравится верстать, может это и придет со временем, но все же верстка и программирование сильно разные вещи и меня больше привлекает именно программирование.

Отсюда довольно предсказуемо следует второй вопрос: Что должен изучить человек хорошо освоивший javascript? Всегда ли это связка HTML + CSS разных версий + всяческие плюшки из этого мира. или есть перспективы изучать что-то для работы больше программистом, нежели верстальщиком? Я в свое время изучал Node.js и мне весьма понравились ее возможности. Имеет ли смысл развивать себя как js-backend разработчика?

Какое будущее ждет javascript фрилансера? Стоит ли, нацеливаясь на фриланс, перестроить себя на верстку целиком и сделать js только вспомогательным инструментом?

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

Я завел аккаунт на oDesk, так как здесь (Тостер) и на Хабре не раз читал положительные отзывы о нем. Навыки английского не назову безупречными (где-то UpperIntermediate — Advanced), но я активно стараюсь их улучшить. И тут у меня вопрос-предложение: Возможна ли какая-либо помощь в ориентировании в фрилансе и в oDesk’e в частности? Т.е. некоторое наставничество: объяснение что нужно подтянуть, на что ориентироваться, оценка способностей, объяснение того что нужно искать, за что браться не стоит и т.д. Конечно, это заняло бы ваше время и я готов был бы за это заплатить, но увы не заоблачные суммы, так как их просто нет 🙁 .

Есть аккаунт на github, там лежат 2 мелких проекта — расширения для chrome (userscript’ы в данном случае), и это, честно говоря, не то чем я стал бы гордится. Могу рассказать вкратце про них, если кому-нибудь будет интересно.
Вопрос про github: GitHub: Что ценится работодателем больше: наличие своих проектов, участие в других, умение использовать git или все это вместе является хорошим подспорьем?

Если вы дочитали до конца — просто спасибо за то что «выслушали» 🙂
Сердечно извиняюсь за много букв 🙁

JavaScript: Что вам нужно изучить, чтобы стать профессиональным разработчиком

Дата публикации: 2020-09-06

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

О языке JavaScript

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

Существует два соглашения об именах для ссылки на версию JavaScript. Первый — ES6, это короткая версия. Она подразумевает произвольную версию (v5, v6, v7, …). Также у нас есть такое соглашение об именах, как ES2020, которое скорее подразумевает год, когда была опубликована версия. ES относится к «EcmaScript». Чтобы привести пример:

ES6 невероятно похож на ES2015

ES7 невероятно похож на ES2020

Как создать сайт самому?

Какие технологии и знания необходимы сегодня, чтобы создавать сайты самостоятельно? Узнайте на интенсиве!

ESNEXT относится к следующей версии и соответствующим предложениям.

Таким образом, язык и версия определяют собственные ключевые слова, функции и собственные методы, доступные вам как разработчику (упрощенное определение). Мой любимый ресурс относительно JavaScript — MDN.

Философия TC-39 заключается в том, чтобы JavaScript всегда был обратно совместим. Язык изменяется на основе предложений, которые могут быть внесены кем-либо, если предложение получит поддержку, оно перейдет с этапа 0 (идея) на этапы 1 (предложение), этап 2 (черновик) и этап 3 ( кандидат).

После того, как предложение прошло все этапы, TC-39 в конечном итоге отклоняет или принимает предложение и добавляет его в спецификацию ECMAScript.

На самом деле, JavaScript — это просто реализация спецификации ECMAScript, это означает, что существуют другие реализации этой спецификации (например, ActionScript, JScript,…), но эта статья посвящена JavaScript.

Если вы работаете в NodeJS, используйте Node.green, чтобы узнать, какие функции JavaScript поддерживаются используемой версией NodeJS.

Движок JavaScript

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

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

V8: Создан Google

SpiderMonkey: Создан Mozilla

JavaScriptCore: Создан Apple

Chakra: Создан Microsoft

Итак, почему мы обращаем внимание движкам JavaScript? Ну, по двум причинам, которые я могу придумать:

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

Производительность. Когда мы хотим поговорить о производительности в JavaScript, мы можем часами спорить о «логической» производительности (например, имеет ли мой алгоритм сложность O (1) или O (N)). Но это также сводится к тому, насколько эффективен движок. Движок может выполнить много магии под капотом, чтобы повысить производительность, даже для неэффективного кода. Таким образом, конечная производительность может действительно отличаться для одного и того же фрагмента кода на разных движках. Кроме того, производительность может отличаться для разных версий одного и того же движка.

Обратите внимание, что мы говорим о «движке», а не о браузере или чем-то в этом роде. Дело в том, что браузер использует движок JavaScript для выполнения JavaScript, так как он также может использовать выделенный движок для рендеринга HTML и CSS. Запомните, что браузер делает гораздо больше, чем просто выполняет JavaScript (не выгружает его в движок JS).

Как создать сайт самому?

Какие технологии и знания необходимы сегодня, чтобы создавать сайты самостоятельно? Узнайте на интенсиве!


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

Клиентский и серверный JavaScript

Мы можем запустить JavaScript в браузере (например, Chrome) или на сервере (например, NodeJS). Как и в браузере, javascript на стороне сервера также выполняется движком JavaScript. NodeJS использует V8, тот же движок, что и Chrome.

Один и несколько потоков

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

Так что да, JavaScript является строго однопоточным языком, но означает ли это, что многопоточность вообще не используется? Возможно! Но это абстрагируется от всего дизайна Цикла событий. Когда я запускаю 5 веб-запросов, асинхронно читаю 2 файла и 10 запросов к БД, эти действия ввода-вывода передаются движку JavaScript, который передает их ОС. После этого ОС может решить (если возможно) использовать многопоточность. Это то, что вас, как разработчика JavaScript, не должно волновать, это выходит за рамки вашей компетенции, вы не имеете над этим никакого контроля, и вам также не следует заботиться об этом.

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

Веб API

В прошлом вы могли использовать такие веб API, как «GeoLocation», «Fetch», «Gamepad» или, что более вероятно, «Document». Это API, которые являются интерфейсом вашего браузера. Вашего браузера, запомните это. Браузер отвечает за то, чтобы эти API существовали в глобальной области видимости.

Когда вы делаете что-то подобное document.getElementById(), браузер делает методы documentобъект и getElementById() доступными для вас, потому что вы взаимодействуете с частями веб-страницы или браузера (например, когда вы используете navigation.userAgent). Браузер также отвечает за реализацию.

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

Некоторые из веб API имитируются в NodeJS, и хорошим примером этого является console.log() API. Но реализация сильно отличается, в браузере console.log() будет выводиться в консоли разработчика, в NodeJS это будет выводиться по умолчанию в stdout.

Поэтому, когда вы видите, что что-то берется из воздуха, например, console.log() или document.getElementBy >

Примечание: Движок может также сам (но это редко) ввести некоторые API для себя, примером может служить Error.captureStackTraceна V8. Само собой разумеется, что эта функция не будет существовать, если вы запустите ее в другом движке JavaScript.

Транспиляция

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

При работе в NodeJS ваша среда довольно статична. Вы решаете, какая версия NodeJS запущена, что также определяет, какой тип и версию движка вы используете. Хотите использовать более новую версию JavaScript? Обновите версию NodeJs, без проблем (кроме нескольких возможных сложностей). Я имею в виду, что вам не нужно заботиться ни о чем, кроме одной замкнутой среды.

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

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

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

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

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

Если вы хотите проверить, какой браузер поддерживает что, и не только JavaScript, но также CSS и HTML, обратитесь к caniuse.com. Я надеюсь, что вы узнали что-то новое из этого поста.

Автор: Ian Segers

Редакция: Команда webformyself.

Как создать сайт самому?

Какие технологии и знания необходимы сегодня, чтобы создавать сайты самостоятельно? Узнайте на интенсиве!

JavaScript. Быстрый старт

Изучите основы JavaScript на практическом примере по созданию веб-приложения

Что должен знать каждый программист JavaScript?

Есть ли набор вещей, которые должен знать каждый программист JavaScript, чтобы иметь возможность сказать «Я знаю JavaScript»?

Не jQuery. Не YUI. Нет (и т.д.).

Рамки могут быть полезны, но они часто скрывают иногда уродливые детали того, как JavaScript и DOM действительно работают от вас. Если ваша цель — сказать «Я знаю JavaScript», тогда вложение средств в рамки противоречит этому.

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

То, что object.prop и object[‘prop’] — одно и то же (так что вы можете прекратить использование eval , спасибо); что свойства объекта всегда являются строками (даже для массивов); что for . in для (и что это не).

Свойство обнюхивать; что undefined есть (и почему это пахнет); почему малоизвестный in оператор полезен и отличается от проверок typeof / undefined ; hasOwnProperty ; цель delete .

То, что тип данных Number действительно является float; не зависящие от языка трудности использования поплавков; избегая parseInt восьмеричной ловушки.

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

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

Как оператор function действует против hoist определения перед предшествующим ему кодом; разница между операторами функций и выражениями функций; почему именные выражения функций не должны использоваться.

Как работают функции конструктора, свойство prototype и оператор new ; методы использования этого для создания нормальной системы класса/подкласса/экземпляра, которую вы действительно хотели; когда вы захотите использовать объекты, основанные на закрытии, вместо прототипирования. (Большинство учебных материалов JS абсолютно ужасны, мне потребовались годы, чтобы получить это прямо в моей голове.)

Как this определяется во время вызова, а не для привязки; как, следовательно, метод-прохождение работает не так, как вы ожидаете с других языков; как закрыть или Function#bind можно использовать, чтобы обойти это.

Другие версии ECMAScript Fifth Edition, такие как indexOf , forEach и функционально-программируемые методы на Array ; как исправить старые браузеры, чтобы вы могли их использовать; используя их с встроенными анонимными выражениями функций, чтобы получить компактный, читаемый код.

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

Как работает скрипт с несколькими окнами instanceof ; как кросс-оконные скрипты влияют на поток управления по различным документам; как postMessage , будем надеяться, исправить это.

См. этот ответ относительно двух последних элементов.

Прежде всего, вы должны критически просматривать JavaScript, признавая, что по историческим причинам несовершенный язык (даже больше, чем большинство языков), и избегая его худших проблем. Крокфорд работает на этом фронте, безусловно, стоит прочитать (хотя я не согласен с ним на 100%, на котором есть «Хорошие детали» ).

Мастер Йода рекомендует:  Курс «Администрирование Linux»

Чтобы его можно было отключить.

Понимание вещей, написанных в Crockford Javascript: Good Parts — довольно хорошее предположение, что человек является достойным программистом JS.

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

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

О! И знание JSLint полностью повредит вашим чувствам.

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

Пример, способный удовлетворить ваш аппетит:

Вы не знаете JavaScript, если не знаете:

  • Затворы
  • Наследование на основе прототипа
  • Структура модуля
  • W3C-DOM
  • Как работают события.

.. что javascript не java:)

Многие, многие люди, начиная с разработки сайта, сказали мне, что javascript — просто простая Java!

Ознакомиться с одной библиотекой Javascript (JQuery, Prototype и т.д.).

Узнайте, как использовать инструменты отладки основных браузеров (MSIE 7-8, Firefox, Chrome, Safari)

Читайте о индустрии: сайт Дугласа Крокфорда — это сокровищница, в то время как Ajaxian.com — хороший блог, чтобы следить за новыми, интересными и нечетными идеями для Javascript. Есть целый ряд других ресурсов, но это те, которые мне больше всего помогли.

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

Этот Javascript не является чем-то, что можно узнать за час!


Переменные глобальны, если не объявлены локальными.

Плохо (DoSomething() вызывается только 10 раз):

Хорошо (DoSomething() вызывается в 50 раз по назначению):

Зная, что Javascript изначально был назван LiveScript, а префикс «Java» был прикреплен для маркетинговых целей не потому, что Java и Javascript связаны (что они не являются).

О, и для владения любой версией David Flanagan ‘Javascript: The Definitive Guide’ (эта информация находится на странице 2).

. и для оценки тех, которые были раньше, при попытке запутать Internet Explorer 4 document.all [] и Netscape Navigator 4 document.layers [], прежде чем JQuery убрал боль.

EDIT:

Как указывает @Kinopiko, JavaScript назывался проектом Mocha изначально (некоторые источники также считал, что он называется проектом LiveWire), но он общепринят что язык (написанный Бренданом Эйхом) должен был быть выпущен как LiveScript до того, как префикс Java был принят к выпуску в начале 1996 года.

Следует помнить следующее: «Я знаю JavaScript»:

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

Этот JavaScript намного отличается от других языков, чем вы думаете. Посмотрите этот отличный Google Tech Talk, чтобы получить впечатление: http://www.youtube.com/watch?v=hQVTIJBZook

Что должен знать каждый javascript-кодер?

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

Я настоятельно рекомендую читать Javascript: Хорошие детали

Вы знаете javascript, если можете эффективно использовать Array, Number, String, Date и Object. Плюс точки для Math и RegExp. Вы должны иметь возможность писать функции и использовать переменные (в правильной области, то есть как «методы» объекта).

Я вижу некоторые комментарии о знании закрытия, экстравагантный синтаксис функции, blabla. Все это совершенно не имеет отношения к этому вопросу. Это, как сказать, что вы бегун, если вы можете запустить тишину 100 м за 11 секунд.

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

Но это был не вопрос.

О, и DOM не является частью javascript, и ни один из них не является jQuery. Поэтому я думаю, что оба вопроса одинаково не относятся к этому вопросу.

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

array. length метод — это не количество элементов массива, а самый высокий индекс. даже если для элемента было установлено значение undefined

это поведение трудно отличить от ошибки дизайна языка.

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

Этот javascript является самым широко распространенным языком в мире. (Возможно)

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

Знание языка (JavaScript) означает, что вы можете выбрать любую инфраструктуру и использовать ее по своему усмотрению. Вам неизбежно придется погрузиться в исходный код, и если все, что вы знаете, является синтаксисом фреймворка или 2 или 3, то вы далеко не уйдете. Говоря, что, попадая в исходный код нескольких разных фреймворков, вероятно, один из лучших способов увидеть, как использовать JavaScript. Прошу прощения, выполнив код в Firebug или Web Inspector, а затем проверив документацию по JavaScript, особенно документы Mozilla и Webkit, чтобы получить более полное представление о том, что вы ищете.

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

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

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

Попытка запоминать несколько ошибок или WTF тоже не поможет, вы поймете это, если начнете кодирование и перейдете через код библиотеки/фреймворков, особенно с комментариями, чтобы понять, почему они » ve использовали определенные свойства/значения, а не другие, почему и когда полезно использовать определенные операнды и операторы, все это есть в коде используемой пользователем среды. Как лучше учиться на примере?: ^)

Тенденции языка JavaScript в 2020 году

«В 2020 году профессиональный рост очень важен для каждого разработчика. Нужно ли в таком случае заняться изучением JavaScript (JS)? Этот язык программирования используется для создания интерактивных и функциональных веб-приложений, которые не просто наполнены однообразными страницами. Примерно 94,5% всех сайтов сети Интернет используют его. JavaScript также применяется для сценариев на стороне клиента, которые незаметно для пользователя интегрируются в HTML, и для кода на стороне сервера с помощью кросс-платформенного механизма выполнения Node.js» — пишут Hyperiondev.

Популярность JavaScript в 2020 году

Индекс TIOBE определяет популярность различных языков программирования. При подсчете данного показателя учитываются следующие критерии: общее количество квалифицированных разработчиков по отдельно взятому языку, обучающих курсов, предлагаемых по данному направлению, и заказчиков. Полученная информация сопоставляется с наиболее популярными запросами в Google, Bing, Yahoo!, Wikipedia, Amazon, YouTube и других крупных ресурсах, содержащими название языка. В апреле 2020 года, как и в апреле 2020 года, JavaScript был признан восьмым языком в рейтинге популярности TIOBE.

Такое положение вещей подтверждает PYPL (индекс популярности языков программирования), который отслеживает, насколько часто в поисковой системе Google ищут обучающие курсы по определенным направлениям. Согласно данным, полученным в марте 2020 года, JavaScript поднялся на 3 позицию в этом рейтинге. Индекс PYPL помогает определиться, какой язык программирования начать изучать или использовать в новом проекте. Вот пять наиболее популярных языков по этому критерию:

Нужны ли еще какие-нибудь доводы, чтобы понять важность изучения JavaScript? Исследование о состоянии различных направлений программирования, в рамках которого анализируется деятельность более 21 700 разработчиков из 169 стран, установило, что JavaScript является наиболее популярным языком программирования. Его применяют в своей работе более 9,7 миллионов программистов. Это на 2,4 миллиона больше, чем язык, занявший второе место в рейтинге.

Почему JavaScript настолько популярный язык программирования?

Согласно изданию Mashbale, выбор JavaScript никогда не будет ошибочным по следующим причинам:

  • JavaScript можно сравнить с английским языком, который также является общепризнанным. Он используется на абсолютно любых платформах, включая браузеры, мобильные и автономные приложения, а также применяется в устройствах направления IoT;
  • Это лучший язык для новичков. Языки сценариев легче изучать, чем компилируемые языки, например C++;
  • Многие лучшие мировые сайты и приложения, включая Paypal, Netflix, LinkedIn и Uber, работаю на JavaScript, вернее на Node.js (особая среда JavaScript, выполняющая код);
  • Существует большой спрос на изучение JS даже среди опытных разработчиков! Популярный ресурс StackOverflow провел собственное исследование, в котором приняло участие 101 592 разработчика. Было выявлено, что квалифицированные программисты действительно заинтересованы в изучении JavaScript.В окончательном рейтинге язык занял 2 месте. Из общего количества респондентов 19% хочет изучать этот язык.

На следующем графике показано 5 наиболее востребованных языков, согласно исследованию ресурса StackOverflow.

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

Зарплата JavaScript разработчиков в 2020 году

Согласно данным ресурса Glassdoor, по состоянию на март 2020 года средняя зарплата JavaScript разработчика составляла $72 500 в год. Диапазон зарплат располагается в пределах $51 000 — $120 000 в год. Зарплаты Python разработчиков выше. Их среднее годовое значение в США составляет $92 000. Что касается Java, то здесь средняя годовая зарплата разработчиков, согласно ресурсу Salary.com, на март 2020 года составляла $89 603. Их диапазон от $74 844 до $101 025.

Спрос на JavaScript разработчиков в 2020 году

Одним из способов подсчета спроса на разработчиков является анализ объявлений о приеме на работу. Сообщество Coding Dojo изучило 7 наиболее популярных вакансий на сайте Indeed.com. JavaScript в этом аспекте находится на третьем месте. Стоит отметить, что количество вакансий с 2020 года сократилось на 2000.

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

Вопросы для собеседования javascript разработчика

Как пройти собеседование js junior разработчику? Что учить? Все здесь!

Собеседование

Первая часть: без воды

  1. Список вопросов по основам (с указанием ссылок на материалы)
  2. Список вопросов по react/redux (с указанием ответов и ссылок)

Вторая часть (невозможно без воды)

  1. Цель собеседования
  2. Про обратную связь
  3. Общие советы
  4. Полезные материалы

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

На вебинаре были слегка затронуты middle и team-lead, так же разобраны вопросы «из зала».

Список вопросов по основам

  • прицнипы ООП (хороший эффект производит знание трех слов: инкапсуляция, наследование, полиморфизм)
  • типы данных javascript

  • что такое свойство объекта, а что метод
  • написать функцию, add, чтобы вызов add(1)(2) вернул 3 (замыкания)
  • армия функций
  • кофеварка (один раз написать самому, подсматривая в учебник обязательно)
  • знать, что объекты передаются по ссылке
  • как сделать debounce функцию [EN]
  • map, filter, reduce
  • xhr и как его отменить (легко: abort), современный вариант fetch (с отменой все так себе)
  • promise

Список вопросов по React/Redux

Вопросы скопированы из моего ответа на toster.ru

Ответы предоставлены для подписчиков vk группы — Обучение «Без воды». Приходите, научим. Имеется telegram канал.

React

Самые «тяжелые» операции в web — работа с DOM. Реакт оптимизирует эту работу. Как? Virtual DOM + обновление страницы за минимум «телодвижений».

Мгновенно ли срабатывает setState ? Если нет, то как выполнить код, который 100% выполнится после того, как новый state будет установлен?

setState (документация) — асинхронная функция. Чтобы выполнить, что-либо заведомо после обновления state, нужно использовать запись с callback’ом

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

Совет: чтобы быть в курсе подобных вещей, нужно либо читать документацию, либо читать/смотреть какие-то последовательные курсы. Данные знания — фундаментальные, их должен осветить любой уважающий себя автор.

Зачем многие постоянно пишут в constructor: this.FUNCTION_NAME = this.FUNCTION_NAME.bind(this) и отсюда вопрос вытекает чему равно this в разных местах вашего компонента…

«Биндинг» чего-либо, это привязка к контексту. То есть, когда вы находитесь в конструкторе, this ссылается на компонент. Следовательно, если какой-то из методов «прибиндить» (привязать) к this, то он всегда будет иметь внутри себя this ссылающийся на компонент. Так делается, в частности из-за того, чтобы не терять контекст this, когда идет запись не через «жирную arrow функцию».

Для решения через «жирную arrow функцию», требуется плагин transform-class-properties (входит по умолчанию в create-react-app)

в каких методах жизненного цикла стоит выполнять xhr запросы? В каких стоит «обновлять state на основе props«?

Xhr (ajax, асинхронные запросы) — нужно выполнять в момент componentDidMount

Обновление state, на основе props:

Что будет если вызвать this.setState в render методе компонента?

Будут проблемы. Реакт перерисовывает компонент, если state изменился. setState === ситуации «стейт изменился», а «реакт перерисовывает компонент» === render метод. Получается, что будет циклическая перерисовка.

Зачем нужен componenWIllUnmount , приведите пример

CWU подходит для «приборки». Например, у вас есть компонент, который реагирует на onsize (изменение размеров) страницы. Затем вы планируете перейти куда-то, где этого компонента нет. Он будет (will) «размонтирован» (unmount), значит в этот момент нужно снять «слушателя» на ресайз, так как он вам более не нужен.

Контролируемые, не контролируемые компоненты

Не маленький вопрос. Суть: если input не имеет onChange обработчика и value , то он неконтролируемый. Можно сделать ссылку на него с помощью ref . Таким образом, на сабмит формы, можно будет считать данные из инпутов, практически так же, как это делалось бы с нативным DOM. В чем смысл «неконтролируемого инпута»? Такое поведение может заметно сократить количество перерисовок компонента, куда этот input входит. Однако, если у вас обычная форма на несколько полей и более ничего в render тяжелого нет — все будет в порядке и с контролируемым инпутом (таким, в котором value смотрит на state/props и есть onChange)

Как организовать роутинг в реакт приложении?

Смотрим в window.location и на основе этого switch/case’ом выбираем какой компонент рисовать.

Так же можно посмотреть видео, как мы делали Route и Link компоненты на одном из вебинаров. Или почитать текстовую версию.

Зачем нужны propTypes ? Что происходит с ними в production сборке?

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

Сегодня, в 2020м году, на больших проектах propTypes уступают место flow (где, через babel plugin они так же описываются, но строже) или TypeScript‘у.

Как можно удобно «отлаживать» чужой код приложения, написанного на react (намек в сторону React devtools)

Хороший и легкий вопрос на «поболтать». Отладка с помощью console.log, debugger, react devtools, выносом кода компонента на чистый проект и тд тп. Вариантов масса.

Redux

Управление состоянием (данными) всего вашего приложения.

Зачем многие создают типы действий NAME_REQUEST / NAME_SUCCESS ? А заодно, что такое «действие», а что такое «создатель действия»…

Для асинхронных действий многие используют подход, в котором есть «имядействия + request (запрос) _или + success (успех) или + failure (ошибка)». Таким образом удобно обрабатывать случившиеся ситуации в редьюсере (например, показать/скрыть прелоадер, показать ошибку или результат). Конечно, «показывает» — компонент, а в редьюсере мы лишь устанавливаем данные.

Действие (action) — это простой объект с обязательным полем type и не обязательным payload (либо любым другим). Есть соглашение standard flux action (flux, потому что redux переосмыслил/развил идею flux).

Создатель действия (action creator) — это функция, которая возвращает действие.

Пример создателя действия:

Пример действия (напоминаю, это простой объект):

Что такое редьюсер? Можете написать простой редьюсер без react/redux?

Редьюсер, слово производное от функции reduce. Это такая «штука», которая принимает прошлое состояние и возвращает следующее.

По ссылке выше, так же есть пример reduce функции для подсчета суммы чисел.

Для чего нужен redux-thunk? Как он работает? Напишите (можно псевдокод) асинхронный создатель действия (либо, если надоело говорить «терминами» — асинхронный aciton)

Redux-thunk нужен для того, чтобы внутри создателя действия у вас была функция dispatch , чтобы с помощью нее «диспатчить» другие действия. Код redux-thunk’a состоит из 14 строк. Чтобы понимать как это работает, нужно знать как работают middleware.

Как компоненты приложения получают «пропсы» из «стора»?

Компоненты присоединены с помощью функции connect . А на самом верху живет redux компонент

. Provider умеет «прокидывать» пропсы вниз в потомков неявно. Используется старое API — context.

Можно ли (и считается ли это нормальным) использовать state, если используется Redux?

Разумеется да! Это нормально. Если изменяемое состояние компонента не нужно нигде, кроме него самого — это однозначно state.

Почему в reducer’ax мы возвращаем новые объекты? Приведите пример, когда вы возвращаете новый объект, а когда тот же самый.

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

Что возвращает функция connect (из react-redux)?

Connect возвращает новый компонент, обернутый в «приконекченный» компонент, в котором как раз и живут свойства, пришедшие из редьюсеров (которые туда любезно прокидывает Provider).

Общие вопросы

Вопросы в стиле: расскажите что это и для чего:

  • package.json
  • Webpack, gulp, и т.д.
  • node.js
  • promise (хороший материал, для тех кто уже хотя бы немного в теме).


Цель собеседования

Если вы стажер/junior и работу необходимо получить любой ценой, то соответственно цель «получить работу«. Когда такое необходимо?

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

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

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

  • бояться, что это последнее собеседование в жизни
  • брать на себя обязательства, которые многократно не под силу
    • но при этом, не бойтесь развития, то есть, некоторый лимит неизвестности и трудности — это в порядке вещей. Набивается опытом. А так же, можно честно сообщить сразу: к сожалению, большой экспертизы не имею, но уже не раз разбирался в подобном, только уровнем пониже.
  • необдуманно врать
  • соглашаться на любые условия
  • задавать вопросы, интересоваться
  • называть зарплату +20-30% от той, на которую вы рассчитываете (разумеется, необходимо заранее поинтересоваться зарплатной вилкой в вашем регионе). Вы либо станете участником торгов, и сторгуетесь до нужного уровня, либо получите бонус. Отказ тоже можно получить, но это слабый фактор для отказа (если речь идет именно про правильные цифры + разумный процент сверху).
  • попросить обратную связь

Про обратную связь

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

Почему можно приходить еще раз? А почему нет! Если снова удастся пройти через фильтр в виде кадрового специалиста и попасть в кабинет на тех.собеседование, то это же круто! Вы уже знаете, какие вопросы были, как минимум их можно обозначить лучше. Хороший специалист задаст и другие, но скорее всего, если вы реально готовились — получится. Да и можно снова спросить — когда зайти еще. Это не шутки, так как многие города, действительно, выдают очень малое количество привлекательных рабочих мест. Можно и побороться!)

Тишина в эфире

Собеседование прошли, ТЗ сделали. Прошла неделя, в ответ ничего.

1) позвонить, поинтересоваться. Постараться получить обратную связь, это поможет стать лучше [1]

2) если обстоятельства позволяют, вычеркнуть контору из списка за неуважение.

[1] иногда, на такие назойливые вопросы могут ответить отпиской или еще хуже — вариантом не в тему. Нельзя верить этому на слово. Если объективно вам кажется, что все было неплохо, но вы получили: вы не подходите нам по уровню, то опять рекомендую уточнить — что именно не так. Ответа скорее всего не будет, но попытка зачтена.

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

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

Три собеседования — это абсолютный минимум для статистики.

Поставьте себя на место работодателя

Самый годный трюк. Представьте, что вы ищите работника. Кто вам нужен?

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

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

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

— Как говорите вас зовут?

— А, спасибо, но вы нам не подходите <любая_причина>лишь бы не тратить на вас время.

Нет смысла обижаться или переставать верить в свои силы. Это глупо.

Общие советы

  1. Во время звонка HR, нужно выяснить, как проходит собеседование. Нужно ли писать код на бумаге, писать код на месте или сколько у собеседования этапов.
  2. День для собеседования желательно выбрать не «прямо сегодня», а чуть подальше: так у вас будет время подготовиться и, возможно, пообщаться с кем-то из компании / вычитать что-то про компанию в сети. Чем дольше вы сдвигаете срок, тем больше шансов, что перед вами кого-то уже возьмут. В реалиях маленького города (когда предложений очень мало) — нужно торопиться. В большом городе (предложений много / регулярно бывают) — скорее всего выслушают и предыдущего кандидата(ов) и вас.
  3. Повторить основы. Без идиотского заучивания задач на сравнение типов (список есть в начале статьи)

Зарплата

Специально не обсуждал эту тему, так как все можно найти на hh.ru для своего региона. Однако, есть еще пара полезных ссылок:

Полезные материалы

Сказ о том, как Катя попала в Яндекс.деньги + сразу комментарий про зарплату

Главное в статье:

Ничего сверхестевственного не требовали:

    уверенное знание javascript (замыкания, типы, наследование);

умение взаимодействовать с сервером (транспорты, модель OSI и REST API);

понимание браузерных процессов (загрузка ресурсов, парсинг кода и рендеринг).

Мое мнение про зарплату в известных компаниях (основано в том числе и на давних разговорах в офисе):

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

P.S. в свое время, на выставке E3 (про игры), у Half-Life 2 был очень скромный павильон, но народ, разумеется, шел туда толпами! Так же и с большими конторами: туда идут за опытом, за именем, но не за зарплатой (если речь про джуна/мидла).

Комментарий к статье про бестолковые задачи на собеседовании + сразу исправление опечатки от автора комментария

Краткая заметка о том, что многие программисты не могут написать метод сортировки пузырьком (и это нормально). Один из не знающих — создатель Ruby on rails.

Спорная статья на vc.ru (короткая, возможно реклама), но хорошо отражает следующие моменты:

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

В обоих случаях, как и в любой сфере, попасть на «специалиста» не просто. Результат не гарантирован.

Вопрос на тостере «Какие стратегии повышения зарплаты существуют» и ответ на него.

Стратегия проста — увеличивайте собственный профессиональный уровень на столько, чтобы свободно менять компанию, как только вас что-то перестало устраивать.

Про найм в Лабораторию Касперского (статья рекламная, но все же есть ответы на вопросы: что на собеседовании происходит и как. Речь про C++).

  • Как попасть в «Лабораторию Касперского» и чем заняться
  • О тестовых заданиях

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

Авторский telegram канал «Пргрм с Козулей»

— Как вкатиться во фронтенд?

Научиться использовать поиск в гугле и Stack Oveflow. Остальное приложится с опытом. В интернете полно туторов, все уже разжевали по 100 раз и выплюнули для тех, кто умеет читать.

— Я уже какое-то время работаю, какой у меня уровень?

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

— Реакт или ангуляр?

Реакт. Я начинал с первой версии ангуляра и вторая не сильно лучше.

— Тайпскрипт или джаваскрипт?

ActionScript 3.0, там есть настоящая типизация. Тайпскрипт можно использовать для того, чтобы подглядеть API библиотек, но заткнуть им все дыры все равно не получится.

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