Найти в Дзене
Портал Выбираю•IT

Вакансия: разработчик Node.js

Большую популярность во фронтенде (Frontend) и бэкенде (Backend) приобрели технологии, основанные на JavaScript. Одна из них – программная платформа, основанная на движке V8, которая называется Node.js. Она позволяет создавать и настольные оконные приложения (например, с помощью Electron). Среди примеров – Microsoft Visual Studio Code, Atom. Обеспечивают реализацию и поддержку решений на данной платформе специализированные разработчики. Мы обратились к экспертам и представителям различных компаний, чтобы выяснить, каких кандидатов они видят на позиции разработчик Node.js. Всеволод Родионов, ведущий разработчик, стартап 1. Стандартный встречный вопрос: а что нужно делать при помощи Node.js? Вариантов бесконечно много. Я знаю людей, которые пишут под raspberry pi. Есть многие исследователи данных, которые пользуются JS как одним из основных инструментов как анализа, так и визуализации, даже блокчейн-технологии отлично взаимодействуют с Node.js. Почти все фронтенд-разработчики используют
Оглавление

Большую популярность во фронтенде (Frontend) и бэкенде (Backend) приобрели технологии, основанные на JavaScript. Одна из них – программная платформа, основанная на движке V8, которая называется Node.js. Она позволяет создавать и настольные оконные приложения (например, с помощью Electron). Среди примеров – Microsoft Visual Studio Code, Atom. Обеспечивают реализацию и поддержку решений на данной платформе специализированные разработчики. Мы обратились к экспертам и представителям различных компаний, чтобы выяснить, каких кандидатов они видят на позиции разработчик Node.js.

  • Какими знаниями и навыками должен обладать разработчик Node.js?
  • Каков инструментарий разработчик Node.js?
  • Каковы требования компании к уровню образования потенциальных сотрудников?
  • Какие требования предъявляются к опыту работы?
  • Есть ли особые требования, которые обусловлены спецификой деятельности компании?
-2

Всеволод Родионов, ведущий разработчик, стартап

1. Стандартный встречный вопрос: а что нужно делать при помощи Node.js?

Вариантов бесконечно много. Я знаю людей, которые пишут под raspberry pi. Есть многие исследователи данных, которые пользуются JS как одним из основных инструментов как анализа, так и визуализации, даже блокчейн-технологии отлично взаимодействуют с Node.js. Почти все фронтенд-разработчики используют node для сборки проектов.

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

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

Второй, хотя и менее очевидный, вывод идет оттуда же: поскольку Node.js почти всегда решает задачу оркестрации – в случае с стандартным веб-сервером, например, это оркестрация запросов к redis, sql/mongo, pub-sub-службам, почтовым сервисам, – стоит изучить, как строятся децентрализованные отказоустойчивые системы, хотя бы азы.

2. В отличие от привязанных к платформам языков в Node.js царит вкусовщина. Любая ОС отлично подходит (спасибо Microsoft за Windows Linux Subsystem), из редакторов и IDE – есть платные WebStorm/IDEA, условно-платный Sublime, бесплатные VS Code, Atom и продукты на его основе, и, конечно, можно вспомнить vim. Даже пакетный менеджер можно выбрать на свой вкус – стандартный npm или yarn от Facebook, причем сами модули одинаково доступны и там, и там, отличаются developer experience и мелочи, связанные с Git, продакшн-режимом и дополнительными возможностями. npm, например, умеет делать базовый аудит безопасности, а yarn - экономить место на диске, что полезно для docker-образов. Стоит попробовать и понять, что нравится.

3. У меня самого диплом инженера-судоводителя, так что сказать «в айти без диплома по computer science не попасть» было бы явной ложью.

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

4. Год или два опыта – это уже хорошо. Я шестой год занимаюсь веб-разработкой (и фронтендом, и бэкендом), и последний раз, когда я слышал «у вас мало опыта» был через полтора года после начала карьеры.

Если говорить про себя, то я готов доверить задачи человеку с горящими глазами и с опытом только личных «игрушечных» проектов – при условии, что я проверю результат, конечно. Но критические части, которые могут все сломать, если сделать неправильно – таких 10-20%, не больше, – я себе-то доверяю просто потому, что больше некому. Более того, я знаю компании, где таких ребят с горящими глазами и без опыта прямо-таки хватают и тащат к себе.

5. У нас высокие нагрузки, распределенная инфраструктура и high availability, и пара весьма специфичных технологий. Если бы искали еще и знание всего этого, вряд ли вообще кого-то могли найти, поэтому специфических требований нет, всему приходится учить по ходу дела.

-3

Дмитрий Касьянов, Node.js Developer в компании Aventica

1. Прежде всего необходимо знать на достаточном уровне сам язык JavaScript и его особенности. Так что для front-end-разработчиков начать писать под Node.js не составит проблем. Но лично я перешел на Node.js из мира Java.

Необходимо иметь представление о том, что такое Event Loop, событийно-ориентированное и асинхронное программирование. В противном случае для начинающих Node.js-разработчиков будет очень много магии. С появлением ES6 стало проще писать в ООП-стиле, поэтому знание объектно-ориентированного программирования также приветствуется.

Вообще сейчас не составит проблем изучить Node.js и JavaScript – очень много статей им посвящено, например на Medium и Habrahabr. Было бы желание.

2. Если говорить о средах разработки, то я бы выделил три основных: Atom, Visual Studio Code и WebStorm. Они широко распространены среди JavaScript-разработчиков. Atom и VS Code – это текстовые редакторы с большим количеством плагинов на любой вкус и цвет, WebStorm – полноценная IDE. Я пользовался сначала WebStorm, потом перешел на VS Code. Atom даже не пробовал.

В плане библиотек – стандартные библиотеки JavaScript и Node.js довольно хороши и продолжают развиваться. Для всего остального есть NPM – менеджер пакетов для JavaScript. Если вдруг оказалось, что возможностей стандартной библиотеки не хватает, нужно поискать в NPM – наверняка люди уже столкнулись с вашей проблемой и разработали решение. Работа с БД, очередями, построение REST API, тестирование – для всего этого есть множество пакетов.

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

4. Также, все зависит от компании. Очень мало готовы брать Junior-разработчиков. Но если и готовы, то как минимум нужно иметь начальные навыки программирования, понимание ООП, знакомство с СУБД.

5. И снова: все зависит от того, насколько требования специфичны. Но, в любом случае, все можно свести к тому, что человек должен понимать предметную область и знать, какие модули npm для нее существуют (раз уж мы говорим оNode.js).

-4

Юрий Бушев, Senior Node.js Developer в Zatea ApS и Zedly inc

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

Следующим и одним из основных навыков, которые требуются кандидатам, является опыт интеграции с NPM-модулями абсолютно разных предназначений. Тот факт, что программисты Node.js имеют в свободном доступе огромную кладезь «готовых к употреблению» программных продуктов, написанных сторонними разработчиками, делает умение быстрого понимания API-документации и привычных способов интеграции с такими продуктами неотъемлемым признаком хорошего Node.js-специалиста.

2. Прежде всего это продукт от ребят из JetBrains. Лично я полюбил IDE IntelliJ IDEA, ввиду превосходной интеграции как с JS, так и с другими языками (пишем не только на JS). В ней также имеются удобство запуска и просмотра результата юнит-тестов, превосходный дебаггер и интеграция с Git.

Помимо IDE:

  • в процессе тестирования и отладки API мы используем Postman;
  • для написания регулярных выражений – сайт regex101.com;
  • для просмотра базы данных – Robo 3T или MongoLime (при работе с мобильного устройства).

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

4. Все зависит от позиции. Так, для Junior-разработчиков их необходимым опытом будет знание основ платформы Node.js, понимание работы событийного цикла, за счет чего появляется асинхронность и в чем ее отличие от многопоточности. Для Senior-разработчика это, несомненно, опыт использования самых популярных решений (из NPM) для построения микросервисной архитектуры, распределения нагрузки, логирования и мониторинга.

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

-5

Владимир Громыко, front-end-developer, компания «РТЛабс»

1. Необходимы знания таких технологий, как HTML5, CSS3, JavaScript, понимание того, как работает Node.js (события и т.д.), а также знание хотя бы одного фреймворка, например Express.js или Koa.js.

Необходимо понимать асинхронное программирование (Event-driven-программирование). Также нужны:

  • отличное знание серверных шаблонизаторов, например Pug;
  • опыт работы с препроцессорами (Sass, Stylus);
  • знания в аутентификации пользователей и авторизации между несколькими системами, серверами и средами;
  • знание как минимум одной базы данных (NoSQL, SQL).

Кроме того, паттерны проектирования Node.js, тестирование, Git, практический опыт работы с инструментами разработки Node.js, такими как npm, webpack, grunt, gulp, brunch, broccoli.

Также желательно знание одного или нескольких клиентских фреймворков, таких как angular, react, vue.

2. Инструментарий:

  • npm – менеджер пакетов;
  • gulp, webpack – как сборщики;
  • WebStorm – как вариант мощной IDE;
  • JSDoc – документирование кода;
  • Jasmine Mocha – тестирование;
  • Chrome Dev Tools – отладка;
  • Git;
  • JSLint – проверка кода.

3. Высшее образование, и, как правило, не важно, техническое оно или нет.

4. От трех лет.

-6

Владимир Федоров, глава компании Webcraft.customs

1. JavaScript, желательно хотя бы поверхностное знание Front-еnd-технологий (Vue, React). Администрирование, работа с базами данных.

2. В нашей компании распространены WebStorm и консоль разработчика.

3. Только профильное высшее техническое образование.

4. Никаких. Достаточно желания и высшего технического образования.

5. Да, это желание работать.