Александр Майоров, руководитель отдела Frontend-разработки в Tutu.ru
1. Обязательно следить за стандартами JavaScript (ES5, ES6, ES7) и за поддержкой этих стандартов в браузерах и платформах Node.js, io.js. Сейчас JS-разработчик выполняет сложные задачи и пишет сложную бизнес-логику. Поэтому он должен иметь ту же базу знаний, что и программисты на других языках, уметь делать оптимальные алгоритмы, оптимизировать скорость работы (как в браузере, так и на серверной стороне, если это Node.js).
Также стоит знать хотя бы несколько JS-фреймворков, разбираться в CSS-фреймворках, чтобы в случае необходимости быстро набросать прототип.
Еще стоит не забывать о знании верстки, которые заключаются в знании спецификаций HTML5/CSS3, особенностей браузеров. Понимать, как реализовывать адаптивные и отзывчивые сайты.
Также важно уметь проектировать и создавать сложную архитектуру больших проектов. Сегодня JavaScript-разработчику нужно знать различные парадигмы программирования (ООП, функциональное), так как JavaScript – это место, где встречаются программисты из совершенно разных миров. Сейчас много бывших бэкендеров и разработчиков на других языках подтягиваются в эту область. При этом они несут с собой свои знания и какие-то отпечатки от тех языков программирования, на которых писали раньше.
2. Система сборки проекта на выбор: Grunt, Gulp, webpuck.
Транспилятор (transpiler), помогающий переводить неподдерживаемые инструкции браузера или nodejs стандарта ES6/ES7 в стандарт ES5: Babeljs, TypeScript.
CSS-препроцессоры (на выбор) – LESS, SASS/SCSS, Compas.
Современная IDE с инструментами отладки и взаимодействия с браузерами.
Инструменты тестирования (юнит-тесты, функциональные тесты).
Автопрефиксиры, анализаторы кода, различные инструменты отладки, DevTools.
JS-фреймворки и библиотеки: Angular, React, Flux, Backbone.
3. Общие требования простые: делать свою работу хорошо. При этом желательно высшее техническое образование (можно неоконченное). Потенциальный сотрудник должен обладать как минимум базовыми знаниями по трем технологиям: JS, HTML5, CSS3. Даже если нет опыта работы, всегда можно делать что-то для себя, набирая опыт.
4. В связи с высоким темпом роста компании, мы всегда открыты для профессионалов со стажем работы от двух лет и более. При этом готовы рассматривать перспективных молодых разработчиков с минимальным опытом работы. Таких специалистов берем с перспективой развития и роста. У нашей компании есть опыт преподавания курса разработки веб-приложений на JavaScript в МГУ на факультете ВМК. Это позволяет давать будущим специалистам правильную базу в области Frontend-разработки и приглашать к себе на работу наиболее перспективных и заинтересованных студентов.
5. В зависимости от проекта могут быть желательные навыки, такие как умение работать с ReactJS, писать на TypeScript, работать с RequireJS, Backbone, jQuery, Angular, Gulp. Общие требования: знание JavaScript, умение верстать и желание развиваться. Всему остальному мы учим.
Александр Шумский, начальник отдела разработки компании NetUP
1. Самый главный навык, как и в любой другой динамично меняющейся области, – способность быстро и самостоятельно разбираться в новых технологиях, фреймворках, API.
Набор необходимых знаний сильно зависит от проекта.
Для фронтенда это будет хорошее знание HTML/CSS и нескольких актуальных фреймворков (например, Angular и Backbone).
Для бэкенда – Node.js и backend/fullstack-фреймворки.
2. Удобная среда разработки (например, Jetbrains *, Netbeans, atom, brackets, vim, emacs, sublime – кому что удобнее).
Система контроля версий (Git/Subversion).
Системы тестирования и анализа кода (karma, jslint).
Менеджеры пакетов и сборки в зависимости от проекта (npm, bower, grunt).
3. Специфичных требований к уровню образования нет. Уровень знаний зачастую не зависит от уровня образования.
4. Опыт работы – от 1 года. При обсуждении опыта нас в первую очередь интересуют задачи, выполненные непосредственно кандидатом, и проекты, в которые он внес значительный вклад, а не количество опыта в годах.
Плюсом является участие в Open Source-проектах (например, наличие аккаунта на Github, в котором можно увидеть проекты кандидата)
5. Специфичных требований нет.
Евгений Успенский, разработчик Application Packaging Standard в Parallels
1. В первую очередь он должен иметь представление о том, как работает браузер. Например, понимать, что такое main loop и почему, несмотря на всю свою асинхронность, JavaScript выполняется в одном треде. Превосходно владеть VanillaJS и знать верстку. Уметь работать с системами модулей, например, с AMD. Знать хотя бы один популярный фреймворк (Angular/React/...). Это не считая стандартных для разработчика навыков типа систем контроля версий. Из специфических требований у нас, пожалуй, только одно: мы используем мало популярный в России фреймворк Dojo, и его знание является очень большим плюсом для кандидата. Ну и еще: мы не любим CoffeeScript.
Собеседования на такую должность я обычно начинаю с общего разговора о веб и JavaScript. Мне интересно понять, следит ли кандидат за современными тенденциями, насколько ему вообще интересна область, в которой он хочет работать. Например, если человек не знает, что такое стандарт ES2015, и ничего не слышал о WebComponents, то вряд ли он действительно получает кайф от того, что делает. Если кандидат не только в теме, но и вносит какой-то вклад в сообщество, то это большой плюс для него. Потом даю задачи про JavaScript: начинаю с простых, демонстрирующих именно знания, затем перехожу к более сложным, которые призваны показать, как человек мыслит.
2. Сейчас сложно представить себе JavaScript-разработчика без Node.js. Почти все основные инструменты Frontend-разработчика написаны на нем. В частности, системы сборки, которые прогоняют автотесты, делают статическую проверку кода и прочее. Мы используем Grunt. Среди используемых редакторов кода сейчас, субъективно, самым популярным является Sublime Text, но в Parallels все используют разное, некоторые даже прямо в developer tools в Chrome код пишут.
Еще сейчас набирают популярность так называемые транскрипторы, которые позволяют писать код, используя последние возможности языка, после чего транслировать его в тот, что поддерживается браузерами. Самый популярный из таких транскрипторов сейчас Babel.
3, 4. У нас в компании много выпускников ведущих технологических вузов страны, поэтому хотелось бы, чтобы новые сотрудники были с нами на одной волне и использовали стандартные термины, но это необязательно. Полезный и разнообразный опыт часто намного важнее, чем красивый диплом без реальных знаний.
5. Конкретно наша команда разрабатывает фреймворк, который используют сторонние разработчики для создания своих APS-приложений (APS – Application Packaging Standard), то есть унификации собственных приложений в целях дальнейшего предоставления из дата-центров различных сервис-провайдеров – партнеров Parallels Большая часть создаваемых нами API публичные, и поэтому для нас очень важно, чтобы у разработчика было развито чувство прекрасного в отношении своего кода.
Юрий Трухин, эксперт по облачным технологиям InfoboxCloud
1. JavaScript-разработчик должен уметь писать клиентский и серверный код на JavaScript, глубоко понимать ядро JavaScript (прототипирование, замыкания, ООП), системы модуляризации (RequireJS, CommonJS), иметь опыт работы с архитектурами MVC, MVVM, фреймворками React+Flux, Backbone, AngularJS, Ember, системами шаблонизации Handlebars, DustJS. Важно понимание, как работают фреймворки и какие преимущества и недостатки есть у каждого из них. Необходим опыт работы с системами сборки Grunt, Gulp, знание методик оценки и оптимизации производительности JavaScript, понимание DOM, опыт разработки RESTful API, CORS, написание безопасного кода и умение оценивать безопасность кода, опыт написания юнит-тестов (Jasmine, Jest, Karma, QUnit), отладка и профилирование кода.
Будет полезен опыт разработки на TypeScript, EcmaScript 6, опыт использования WebSockets, WebWorkers, LocalStorage, Web Notifications.
Плюсом будет наличие Open Source-проектов разработчика, умение быстро разбираться в новых технологиях, подходах и методологиях, умение отстаивать точку зрения и работать в команде.
2. Голова, консоль, IntelliJ IDEA/WebStorm, SublimeText, инструменты Atlassian для совместной работы, GIT.
3. Высшее образование будет плюсом при прочих равных.
4 Приветствуется опыт работы над высоконагруженными отказоустойчивыми проектами, опыт работы в сфере хостинга.
5. Плюсом будет знакомство с разработкой APS-пакетов (appstandard.org), понимание принципов работы платформ Odin Automation и Azure Pack, умение работать в Linux-окружениях, опыт работы с системами автоматизации развертывания (puppet/ansible) и docker.
Евгений Кузин, начальник отдела сетевых проектов, ООО «Доктор Веб»
1. Уверенное знание чистого JavaScript, HTML, CSS. Знание особенностей браузеров в части поддержки языка и технологий. Знание AJAX, протокола HTTP. Понимание модели DOM. Не помешает быть в курсе состояния языка, перспектив развития его и популярных его фреймворков, это позволит более эффективно решать свои задачи. Обязательно уметь писать читаемый и поддерживаемый код, а также уметь читать код, написанный другими.
2. Браузерные инструменты: Firebug/Firefox/Chrome developer tools и другие расширения для веб-разработки, система контроля версий, CSS и JS-фреймворки, ну и, конечно же, любимый блокнот/IDE.
3. Большинство работодателей не готовы взять на работу человека без высшего образования. Тем не менее довольно часто встречаются случаи, когда опыт и знания соискателя позволяют компании закрыть глаза на это требование.
4. Формально минимальный опыт, требуемый от соискателя, – от года. Впрочем, правило это не железное, уровень кандидата не всегда линейно коррелирует с опытом. Портфолио гораздо лучше ответит на этот вопрос, чем цифра.
5. Умение писать безопасный код. Для «Доктора Веб» это особенно важно, т.к. по специфике нашей деятельности мы постоянно противостоим вирусописателям и вообще киберпреступникам. JavaScript – это Open Source по дизайну, что также часто играет на руку злонамеренным исследователям. Зашитые в код или получаемые извне данные, используемые в коде интерфейсы – все это нужно уметь критически оценивать с точки зрения безопасности.
Алексей Киреев, фронтенд-разработчик веб-ресурсов JetBrains (Frontend Developer в команде WebDevelopment)
1. JavaScript-разработчик – обобщенное определение разрабатывающих на этом языке специалистов. Язык применяется для написания приложений разной сложности – веб-сервисов, мобильных приложений и инструментов разработки. Основная среда исполнения JavaScript – это браузер, но с появлением платформы Node.js стало возможным применение языка на стороне сервера. Исходя из разнообразия задач требования к разработчикам отличаются.
Разработчик должен хорошо знать JavaScript и шаблоны проектирования, уметь оценивать и улучшать производительность приложения, понимать работу среды, в которой будет выполнен его код. Для разработчиков клиентской части обязательно знание HTML/CSS, опыт работы с библиотеками и фреймворками, умение минимизировать нагрузку на браузер при выполнении кода. Разработчикам серверной части необходимы знание работы стека протоколов TCP/IP, HTTP и навыки работы с базами данных.
Ценятся понимание объектно-ориентированного подхода и стремление к разработке через тестирование.
2. Основные инструменты – IDE (WebStorm) или текстовый редактор, консоль и браузер. Для проектов с двумя и более разработчиками нужна система контроля версий, трекер задач (YouTrack) и сервер непрерывной интеграции (TeamCity).
Также в работе применяются различные консольные инструменты – NPM и Bower для управления зависимостями; Gulp, Grunt и WebPack для сборки проекта; Karma, Jasmine для тестирования.
3. Как правило, в компанию устраиваются разработчики с высшим образованием, но формальных требований к уровню образования нет. В специалисте более важны его профессиональные качества и стремление развивать и углублять свои знания.
4. Чаще всего для приобретения навыков, описанных выше, требуется профильный опыт работы от двух лет. Показателем опыта являются готовые проекты, которые кандидат может продемонстрировать (в своем резюме) – приложения или высоконагруженные веб-сайты.
5. JetBrains – международная компания, и основной язык общения внутри нее – английский, поэтому каждый сотрудник должен уметь общаться на нем. Очень ценно умение ясно и грамотно излагать свои мысли как на русском, так и на английском языках.
Поскольку в нашей компании нет явно выраженной системы начальник – подчиненный, а все участники команды – равноправные специалисты, кандидату нужно быть самостоятельным, ответственным и добросовестным.
Баграт Гобедашвили, руководитель фронтенд-команды LinguaLeo (Head of frontend LinguaLeo)
1. Есть отличие JavaScript-программиста от программиста, знающего JavaScript. Мы любим вторых. Человек может знать синтаксис языка, но не знать основные паттерны программирования, знать, что в JavaScript есть массивы, а о других структурах данных даже не иметь понятия, и т.д.
2. Инструментарий: удобный текстовый редактор (PhpStorm, SublimeText), система контроля версий (Git), умение работать со средствами отладки и профилирования кода (Chrome DevTools).
3. Особых требований к соискателям у нас нет, не важно даже наличие высшего образования. Базовую верстку и базовый JavaScript вполне можно освоить самостоятельно на сайтах типа htmlbook.ru и javascript.ru. Эти знания хорошо закрепляются в процессе работы над настоящим проектом, например, на позиции Junior. Главное для нас – опыт.
4. Наш человек знает практически все особенности и хитрости JavaScript, отличия и сходства разных движков браузеров, хорошо представляет процессы отрисовки страницы. Также он разбирается в паттернах проектирования, понимает основные принципы работы популярных библиотек. Если конкретнее, то JS-разработчик знает, что такое reflow и repaint и как помочь JIT-компилятору. Он уместно использует паттерны «фабрика», «синглтон» и «модуль», может построить событийную модель с паттерном «обсервер» и так далее. Будет прекрасно, если на собеседовании соискатель нам расскажет, как работают AngularJS, React, Polymer, разные библиотеки, реализующие методологию БЭМ.
5. Тот факт, что мы занимаемся сервисом изучения иностранного языка, не подразумевает никаких специфических требований. А вот то, что мы делаем массовый сервис для миллионов человек, обязывает каждого разработчика чувствовать ответственность за свою работу перед конечными пользователями.
Антон Герасимюк, ведущий разработчик компании «1С-Битрикс»
1. Должен знать сам язык JavaScript (ECMAScript). Уметь работать c объектами DOM, а также знать API, предоставляемый браузером (localStorage). Кроме этого, программирование веб-страниц напрямую связано с версткой. А это HTML5 и CSS3.
2. IDE – WebStorm/PhpStorm или текстовый редактор (Sublime Text, Notepad++).
3. Желательно профильное, но у нас есть примеры, когда на JavaScript пишут не технари.
4. Обычно требуют опыт, чтобы не заниматься обучением.
5. Обычно компании исходя из своей специфики требуют знания JavaScript-библиотек. Например, jQuery, AngularJS, ReactJS и других.
Александр Потеренко, Senior Software Developer в компании Acronis
1. Компания Acronis разрабатывает программное обеспечение, которым пользуются десятки, а может, и сотни миллионов пользователей по всему миру – от Америки до Азии. У них разное образование и разный уровень технических знаний. Поэтому основное внимание мы уделяем удобству и надежности ПО. Люди, умеющие создавать такие решения, – нам наиболее интересны. Технологии важны, но они вторичны.
Знания:
В первую очередь знание основных языков разработки – JavaScript, HTML/CSS (ECMAScript 5/6 версий, знать специфику применимости в различных браузерах, HTML 4/5, CSS 2/3).
Во вторую – понимание работы и специфики браузеров (DOM-модель, события, Strict mode, асинхронность).
В третью – хорошо знать ООП, паттерны проектирования софта, прикладные протоколы, подходы к обеспечению безопасности.
Знать протоколы, инструменты и подходы, применяемые в промышленной разработке frontend-проектов.
Нужно знать обо всех популярных вещах, которые появились в мире JavaScript за последние лет пять – семь: модуляризацию, инструменты статической типизации, шаблонизаторы, пакетную систему NPM и т.д.
Желательно знать и о Node.js.
Навыки: иметь навыки разработки архитектуры single-page-приложений; уметь составлять сложные структуры данных и алгоритмы; уметь покрывать код тестами; умение проектировать, реализовывать читаемый оптимальный (по памяти/скорости) сопровождаемый код.
2. Отладочные средства браузера, плагины, расширения: Firebug, Chrome DevTools, различные облачные решения для кросс-браузерной отладки кода.
Серверные среды исполнения (Node.js).
Интегрированные средства разработки (IntelliJ WebStorm).
Среды тестирования (PhantomJS, Jest и т.д.).
Средства автоматизации сборки/компиляции проекта (Grunt, Gulp, Mvn).
Различного рода веб/фуллстек-фреймворки (ExtJS, Angular.js, FLUX и т.д.).
3. Высшее инженерно-техническое/математическое образование. Умение самостоятельно учиться и изучать подходы к промышленной разработке вне мира JavaScript. Знание как минимум одного back-end/системного языка программирования.
4. Опыт работы full-time JavaScript-разработчиком более двух лет, опыт разработки больших single-page-приложений. И, конечно, опыт самостоятельной разработки библиотек/модулей на «голом» JS.
5. По большому счету наши приложения по сложности ближе к полноценным десктопным продуктам, чем к веб-сайтам, поэтому специфика близка к системным разработчикам – нужно уметь искать узкие места в коде, следить за использованием памяти, думать об оптимальности алгоритмов. И, конечно, уметь держать в голове большое количество сущностей и продумывать механизмы их взаимодействия, не превращающие код в лапшу.
Более подробно к требованиям при конкурсном отборе в команду разработчиков Acronis можно ознакомиться по адресу: http://special.habrahabr.ru/acronis/hr.
Денис Шеко, Web Developer, и Юлия Гацура, Recruiter, СООО «Гейм Стрим», минский центр разработки Wargaming
1. JavaScript-разработчик – это в первую очередь разработчик ПО. Поэтому он должен обладать основными инженерными навыками: уметь анализировать требования, работать с технической документацией, декомпозировать задачи и использовать системный подход в проектировании.
JavaScript-разработчик – это и веб-программист. Ему необходимо знать, как работает интернет, что такое веб-сервер, какие бывают форматы данных, протоколы и стандарты (TCP/IP, HTTP, HTML, CSS). Также он обязательно должен знать Linux, поскольку именно эта ОС установлена на большинстве серверов в интернете. Не обойтись и без понимания принципов работы различных браузеров.
Кроме этого, сфера деятельности JavaScript-разработчика находится на стыке графического/UX-дизайна и технической реализации, поэтому специалисту необходимо понимание и основ дизайна в целом и UI в частности.
Также важно уметь прототипировать, выделять главное и быстро реализовывать каркас. Это позволит здраво оценить трудозатраты в условиях, когда четкие требования отсутствуют.
2. Главный инструмент JavaScript-разработчика – браузер. Именно в нем исполняется код и есть все инструменты для его отладки. Важно использовать именно браузерные инструменты (Chrome Dev Tools, Firefox Development Tools), а также знать, как исправить код, если эти инструменты недоступны (alert, вывод отладочной информации на страницу). На практике полезными оказываются и навыки работы в консоли браузера.
JavaScript-разработчику нужно хорошо знать хотя бы один сборщик проектов (Grunt, Gulp, WebPack) и понимать, как его применять для оптимизации своего проекта (сжатие картинок, обфускация, транслирование).
Для JavaScript существует не так много IDE (WebStorm, Sublime Edit, Atom, Vim, Emacs, Far), но важно уметь их использовать и настраивать под себя – это значительно увеличивает продуктивность, помогает меньше ошибаться, оперативно делать рефакторинги и в итоге – писать качественный код.
3. В первую очередь мы обращаем внимание на практический опыт и вовлеченность кандидата в профессию, его стремление развиваться и применять свои знания. Наличие высшего технического образования, безусловно, будет плюсом, ведь оно дает академическую базу, с помощью которой проще и быстрее приходит понимание процесса разработки, однако наличие «корочки» не является ключевым параметром.
4. У каждой позиции свои требования. В Wargaming мы рассматриваем как кандидатов со значительным практическим опытом использования JavaScript и современных фреймворков (Angular, Backbone, Ember и др.), так и начинающих специалистов почти без опыта, но с высокой мотивацией, которая позволит быстро восполнить пробелы в знаниях.
5. Wargaming – игровая компания, которая быстро осваивает новые рынки. Поэтому для JavaScript-разработчика важно понимать особенности создания массовых продуктов, которые будут использоваться почти во всех странах мира, и не забывать о межкультурных различиях (например, понимать логику перевода интерфейсов на разные языки).
Помимо этого, наша компания уделяет много внимания мобильному рынку. Наши JavaScript-разработчики прекрасно разбираются в работе различных браузеров и платформ, а также плотно взаимодействуют с UX и UI-дизайнерами на стадии создания интерфейса. Это позволяет проектировать производительные, удобные и понятные для пользователя приложения.
Подготовил Игорь Штомпель