Главная страница » Что должен уметь javascript разработчик

Что должен уметь javascript разработчик

  • автор:

Профессия «Разработчик JavaScript»

Автор: Константин Шевелев

JavaScript – это самый популярный язык программирования, который используется повсеместно (исследование проводил портал DOU.UA на основании 9747 анкет).

Портал DOU.UA - исследование

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

У вас может возникнуть вопрос — а где и как освоить профессию?

Рекомендую посмотреть подборку платных и бесплатных программ: ТОП курсов по обучению JavaScript

JavaScript-разработчик

JavaScript-разработчик: кто это и чем занимается

JavaScript-разработчик – это, как Frontend, но не совсем? Верно, но нельзя забывать, что разработчик, владеющий JavaScript, может быть как Frontend’ом, так и Backend’ом. Неспроста на старте в сфере IT первым навыком, который нужно освоить – это именно JavaScript. Использование этого языка программирования позволяет сделать продукт гораздо динамичнее и интереснее.

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

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

Если ты – разработчик, который в совершенстве освоил JavaScript, владеешь HTML и CSS, то тебе открыты самые разные дороги:

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

Навыки JavaScript-разработчика

Что должен знать и уметь JavaScript-разработчик?

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

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

  • фронтенд-фреймворки;
  • Bootstrap 4;
  • HTML и CSS;
  • NodeJS и бэкенд-фреймворки;
  • TypeScript;
  • API;
  • основы SQL;
  • тестирование своего кода на баги;
  • обеспечение безопасности пользователей в интернете.

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

-50% на все курсы Skillbox

Уникальное предложение — -50% на ВСЕ курсы Skillbox. Получите современную онлайн-профессию, раскройте свой потенциал.

Активировать скидку →

Какими личными качествами должен обладать разработчик на JavaScript?

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

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

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

Плюсы и минусы работы JavaScript-разработчика

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

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

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

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

Карьерный рост

Работа по профессии: зарплата и перспективы

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

Формула заработной платы JavaScript-разработчика очень проста: опыт + знания + талант. Уровень вашего английского языка и владение дополнительными языками программирования также могут увеличить сумму в вашей зарплатной ведомости.

По Москве динамика зарплат JavaScript-разработчиков выглядит следующим образом:

Зарплат JavaScript-разработчика по Москве

Другие крупные города России немного отстают от столицы:

Зарплат JavaScript-разработчика

Стоит только зайти на сайт HH.ru, чтобы удостовериться в количестве открытых вакансий и заработных платах, которые готовы предложить работодатели. Средний минимальный оклад для JavaScript-разработчика уровня junior с опытом работы менее 1 года в Москве составляет 70 000 рублей. Такой специалист должен соответствовать следующим требованиям:

  • успешное прохождение предварительного тестового задания;
  • владение базовыми навыками web-разработки;
  • знание HTML, CSS, AJAX, JavaScript, ReactJS, TypeScript, GIT;
  • ответственный подход к работе;
  • умение работать в команде.

Заработные платы middle-специалистов в области разработки на JavaScript начинаются от 170 000 рублей. Взамен работодатели хотят видеть кандидата, который:

  • имеет опыт коммерческой разработки с упором на backend не менее двух лет;
  • знаком с фреймворком Spring;
  • знает, что такое профайлер и не боится слов Sampling, Thread Dump, Heap Dump и Bottleneck;
  • кроме wait(), notify() и synchronized знает о существовании Barrier, CountDownLatch, BlockingQueue и др.;
  • без раздумий расскажет, чем отличается LEFT JOIN от RIGHT JOIN;
  • увидев документацию к библиотеке на английском, читает ее, а не запихивает в онлайн-переводчик;
  • стремится писать код понятным и красивым;
  • не боится вынуть из постановщика задачи душу, если что-то непонятно;
  • если видит, как сделать лучше — предлагает;
  • любит тестировщиков и не боится исправлять свои ошибки;
  • работает с душой, отдавая всего себя, а не только ради денег.

Как мы видим, для middle-разработчика знание английского языка также играет немалую роль в успешном трудоустройстве. JavaScript-разработчиков с опытом работы от 3-х лет (они же «сеньоры») ждут зарплаты уже от 250 000 рублей, а зачастую еще и в валюте, а нередко и зарубежных компаниях. Ух!

Как стать JavaScript-разработчиком - онлайн-курсы

Как стать JavaScript-разработчиком

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

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

Но существует и альтернативный способ в короткие сроки стать отличным специалистом в области разработки на JavaScript.

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

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

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

Если вас заинтересовала профессия — ставьте плюс в комментариях, расскажем, как в ней легко стартануть ��

7 советов начинающему Javascript-разработчику

7 советов начинающему Javascript-разработчику главное изображение

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

1. Понять простой JavaScript

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

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

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

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

Взгляните на следующий код:

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

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

2. Прочтите качественный контент

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

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

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

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

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

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

«Секреты JavaScript-ниндзя» Джона Ресига (создателя jQuery и бывшего сотрудника Mozilla) и др. — одна из лучших книг о JavaScript, которые я когда-либо читал. Я действительно считаю, что это золотая жила. Он лежит на моей книжной полке. И порой, спустя столько лет, я считаю себя ниндзя.

3. Ознакомьтесь с различными концепциями

С учетом сказанного, пожалуйста, поиграйте со всеми популярными фреймворками. Список, кажется, меняется день ото дня, но вы не ошибетесь, взглянув на React, Vue, Angular, Gatsby и Next.js, и это лишь некоторые из них.

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

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

Справедливо. Это могло быть правдой. Или нет. Кто знает? Но почему вы думаете, что это популярно и круто? Какие функции вам больше всего нравятся по сравнению с функциями Vue или Angular? Что в Next.js лучше React и наоборот?

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

4. Понять HTML и CSS

Не забывайте, что HTML и CSS являются основой Интернета. Строительные блоки. Все, на что вы смотрите, — это элементы HTML с некоторым стилем.

React, Vue, Angular? Какими бы классными они ни были, все они в конце концов «выплевывают» HTML. Вы не можете игнорировать HTML и CSS, или относиться к ним легкомысленно. Я встречал множество программистов, которые были очень хорошими разработчиками JavaScript, но мало знали о HTML и CSS. Это проблематично.

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

5. Уважайте старших разработчиков

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

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

6. Будьте любопытными, исследуйте и приобретайте знания

Это должно быть чертой личности №1 каждого серьезного разработчика JavaScript.

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

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

Загляните за шторы. Почему это решение работает? Как это работает? Могу ли я воспроизвести это сам в следующий раз? Имею ли я сейчас четкое представление об этом? Если нет, то пора прочитать эту книгу, поговорить со старшим разработчиком или поискать в Интернете, пока вы не поймете все до единого.

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

7. Напишите код. А потом напишите еще

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

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

Я сам читал и следил за многими, многими учебниками. Но я всегда следил за тем, чтобы писать код, пока я это делал. Даже если бы я мог скопировать и вставить предоставленный код, я этого не сделал. Я всегда сам писал (точно такой же) код. Видеть код — это одно. Дословно написать самому — совсем другое дело. Вот тогда он становится частью вас и вашего репертуара. Заключение

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

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

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

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

1. Поток команд

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

  • if else — если вы этого не знаете, как вообще раньше писали код?
  • switch —то же, что и if else, только в чуть усложненном виде. Применяйте его, когда у вас несколько различных вариантов.
  • for — циклы созданы, чтобы вам не приходилось повторяться. Полезен будет не только простой for , `for of`и for in тоже весьма пригодятся. Большим достоинством циклов for является блокировка, поэтому в них можно использовать async await.
  • Предварительные условия — Применение ternary и логических операторов значительно облегчит вашу жизнь. Особенно если вы производите промежуточные действия и не хотите сохранять значения, чтобы использовать их дальше.

2. Устранение ошибок

Это заняло у меня немало времени. Не важно, работаете вы с front-end или back-end, первый год работы вы всегда будете пользоваться console.log или console.error для “устранения” ошибок. Для того, чтобы писать качественные приложения, вам нужно избавиться от этой привычки, и вместо использования ленивых логов устранять ошибки правильно. Разберитесь, как написать свой собственный конструктор Error, как правильно находить ошибки, а также как показывать пользователю, в чем проблема.

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

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

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

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

5. Управление DOM

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

6. Node.js / Express

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

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

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

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

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

9. Front-end фреймворк

React.js, Angular и Vue.js составляют “большое трио”. Если сейчас поискать вакансии, практически в каждой из них будет требоваться знания чего-то из этого. Несмотря на то, что они быстро изменяются, важно понимать основную суть этих библиотек и фреймворков, чтобы понимать, как работают приложения. К тому же, с их помощью легче писать приложения. Если вы ещё не выбрали, что изучать, я советую React.js. Последние пару лет я работаю с этой библиотекой, и ни разу не пожалел об этом.

10. Объединение / транспиляция

К сожалению, это большая часть разработки приложений. С одной стороны, мне не стоит говорить “к сожалению”, потому что здорово иметь возможность писать код, используя все новые функции. С другой стороны, я так говорю, потому что всегда нужно помнить о том, что существуют старые браузеры, которые эти функции не поддерживают. Поэтому нам приходится транспилировать наш код, чтобы он обрабатывался старыми браузерами. Если вы работает с node.js, то прибегаете к транспиляции реже. Для транспиляции обычно используют babel.js, изучите его. Для объединения кода и связи всех частей между собой существует пара способов. Раньше наиболее распространенным был Webpack. Но некоторое время назад откуда ни возьмись появился parcel, на данный момент мне он нравится больше. Пусть он и не идеален, но он эффективнее и проще в настройке, чем Webpack.

Бонус: Регулярные выражения

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

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

Тестирование — это действительно очень важная часть разработки приложений, в том числе и в JavaScript. При написание кода, прежде чем запустить функцию, вы (в идеале) должны провести тестирование, пусть даже и ручное. Лучше будет применять автоматическое тестирование. Существуют разные типы тестов: модульное, сквозное, нагрузочное тестирование, проверки безопасности и front-end (например, подключен компонент или нет). Также есть множество различных тестовых сред: enzyme, jasmine, mocha, chai, и т.д. Сейчас мне больше всего нравится ava.js, советую изучить её, если вы до этого не работали с автоматическим тестированием.

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

Что спрашивают у начинающего разработчика JavaScript на собеседованиях и в тестовых заданиях

Привет, Хабр. Меня зовут Мария, я работаю в вебе с начала нулевых, то есть с засилья статичных HTML-страниц. С тех пор я освоила много новых технологий и прошла массу собеседований. Сегодня хочу поделиться опытом: что спрашивают у JS-джунов и какие тестовые дают при приёме на работу.

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

Мария Кожанова

Программист и преподаватель

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

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

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

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

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

Технический этап: какие вопросы задают чаще всего

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

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

Иногда звучат вопросы про стрелочные функции. Это, думаю, каждый, кто начинал систематизировать свои знания по JS, уже знает, выучил назубок. Ещё про нативный Javascript любят поговорить: как на нативном Javascript обратиться к элементам DOM-страницы? А к конкретному? А по тегам?

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

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

Есть некоторые закономерности между тем, что говорилось в вакансии, и тем, что будет на собеседовании. Обращение на ты — определённо маркер. Если ты вы вчерашний студент, возможно, вам не режет глаз подобная фамильярность в тексте вакансии. Людям, разменявшим четвёртый или пятый десяток, скорее всего, следует насторожиться. Хотя они сделают это и без моей подсказки. Также преимущества типа «корпоративные мероприятия» не должны пройти мимо людей-интровертов. Бонусы в виде печенек — подумайте, вам это нужно? Может, лучше деньгами?

Тестовые задания для джуниоров и как их решать

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

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

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

К чему приведёт выполнение кода:

Ответ: объект arguments, с которым происходит работа внутри функции myfunc, представляет собой массив, содержащий аргументы, переданные в функцию (об этом несложно догадаться из его названия). В результате выполнения данного кода в консоли появится 123. В теле функции происходит замена значения второго аргумента (y), поэтому его значение станет 123.

К чему приведёт выполнение кода:

Ответ: здесь во второй строке для myconst произведено деструктурирующее присваивание. Это значит, что мы можем взять сразу ряд переменных и сопоставить им значения некоторого массива. В данном случае аргумент у нас один, и в результате в консоли выведется значение первого аргумента массива myarray, то есть 0.

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

К чему приведёт выполнение кода:

Ответ: сначала консоль выведет строку Hi, Petr Ivanov. Далее выполнение функции person() завершено, но неугомонный кодер решил вызвать функцию, которая определена внутри другой функции, а снаружи не видна. Поэтому на второй строке он закономерно получит ошибку, возникающую при обращении к несуществующей переменной.
Uncaught ReferenceError: printPerson is not defined

Ещё встречаются вопросы, которые заставляют вспомнить, как переменные различных типов ведут себя в разных обстоятельствах.

Что произойдёт при выполнении кода:

Ответ: выведется Infinity (бесконечность — это особое значение, которое больше любого числа).

В чём отличие null от undefined?

Null — это специальное значение, которое означает «пусто» или «значение неизвестно».

Что произойдёт при выполнении кода:

Ответ: в консоли выведется два раза False. Знак == проверяет равенство, но не идентичность типов.

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

Что произойдёт при работе кода (по слухам, такие вопросы задают при собеседовании в Google или Amazon):

Ответ: четыре раза выводится одна и та же строка.

Это произойдёт потому, что в цикле 4 шага, на каждом шаге происходит откладывание функции на 3 секунды. Когда придёт пора выполнять функцию, значение i будет равно 4 (таким оно стало на выходе из цикла). Соответственно, элемент массива arr с таким индексом не определён, поэтому будет указано значение undefined. И так 4 раза!

Что произойдёт, если в предыдущем примере заменить setTimeout на setInterval?
Ответ: всё то же, но каждые 3 секунды будут выводиться эти 4 строчки заново.

Раз уж говорим о Javascript, то нельзя не вспомнить задачи типа «какой скрипт в коде загрузится быстрее»:

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

Несомненно, большим плюсом станет размещение решения тестового в Github со ссылкой на репозиторий. Независимо от того, знания каких технологий проверяются. Очень хорошо не только знать, что бывает VCS (Version Control Systems, системы контроля версий), но и уметь выполнять базовые команды: взять ветку из репозитория, создать новую ветку, сделать коммит, отправить в репозиторий, решить конфликты. Хотя бы на пальцах объяснить, что такое конфликт и в чём он проявляется. Также работа с командной строкой не должна ввергать человека в ужас. Все эти модные сборщики фронта требуют работы в командной строке. Обычно тестовые не оплачиваются. С платным тестовым я встретилась один раз, в тот момент это оказалось очень кстати. До сих пор думаю, как бы мне там работалось, но выбрала другого работодателя.

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

Как готовиться к собеседованию

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

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

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