Що має знати Senior Node.js Developer і які червоні прапорці виникають на співбесіді

Це 13-й випуск проєкту «Що має знати Senior», і нарешті ми дійшли до Node.js. За даними DOU, кількість вакансій для фахівців з Node.js поступово зростає. В серпні для них було 187 пропозицій — це найвищий показник за останні два роки.

Тож я проаналізував 25 вакансій Senior Node.js Developer, відкритих в Україні та опублікованих на DOU, Djinni, LinkedIn та Indeed. Крім того, я звернувся до експертів і попросив розповісти про відмінності в наборі технічних навичок для Middle та Senior в Node.js, а також про те, що може стати червоним прапорцем на співбесіді Senior Node.js Developer. Поділ технологій на групи є умовним.

Вакансії, що потрапили в дослідження: (розгорнути)

DOU — Accellabs, Artkai, Avenga, Enjoy Gaming Ukraine, Delphi Software, Geniusee, Intellias, Lacero, LineUp, Nestlogic, Newxel, N-iX, SoftHouseGroup, Solidgate, TechMagic, Vayyar

Djinni — Adaptiq, Gemicle, GetProspect, Sloboda studio, Top Tier Authentics, Volindo

LinkedIn — EPAM

Indeed — Glorium Technologies, Proffiz

Досвід роботи бекенд-розробником

Не стало сюрпризом, що більшість вакансій вимагають від п’яти років досвіду. Ця тенденція повторюється від спеціалізації до спеціалізації. Я помітив, що не завжди у вакансіях очікують, щоб весь досвід був здобутий саме в Node.js. Головне, щоб це була бекенд-розробка.

Освіта

Вимоги до освіти є плюс-мінус стабільними для різних бекенд-спеціалізацій. Так, ще 2020 року вимога мати ступінь бакалавра для Senior Python Back-end Developer була у 16% вакансій. Для Node.js ця цифра становить 24%.

Комп’ютерні науки

Про теоретичні знання комп’ютерних наук у вакансіях згадують радше як виняток. Найімовірніше, причина в тому, що такі знання очікують від Senior за замовчуванням.

Мови програмування

Як зазначив Богдан Рутило, Project Manager в Intellias: «TypeScript вже де-факто став стандартом під час використання Node.js, а отже є невіддільною ознакою розробника рівня Senior».

Профільні технології

Nest виявився найбільш популярним фреймворком серед роботодавців.

Мережеві технології

Зверніть увагу на інтерес роботодавців до GraphQL.

Технології персистентності

PostgreSQL — must-have, але знання максимальної кількості технологій персистентності стане вашою перевагою.

Message brokers

Хмарні технології

AWS потрапила до трьох головних навичок для Senior Node.js Developer разом з TypeScript та англійською.

Контейнеризація

Знання Docker може бути вашою перевагою, адже як плюс роботодавці найчастіше зазначають Docker і AWS.

Front-end

Оскільки в дослідження я брав суто вакансії Senior Node.js Developer, а не Senior Full Stack Developer, Front-end як вимогу у вакансіях вказують нечасто. Senior Node.js Developer може існувати і без знання фронтенду.

Тестування

DevOps

Continuous Integration and Continuous Delivery у топі вимог для Senior Node.js Developer.

ML & AI

Багато вакансій передбачають роботу на проєктах, пов’язаних з ШІ. Утім ніхто не вимагає від Node.js-розробників бути експертами в штучному інтелекті.

Інше

І від спеціалізації до спеціалізації роботодавці приділяють багато уваги вмінню спілкуватися та працювати в команді.

Рівень англійської

Вимога знати англійську є в 60% вакансій.

Цікавинки, знайдені у вакансіях

Accellabs пропонує винагороду до $8000 на місяць. Розробляють рішення, засновані на ШІ.

Adaptiq пропонує до $7000. Проєкт з використанням ШІ у сфері відновлювальної енергетики.

LineUp готова запропонувати Senior-розробнику з 5-річним досвідом в Node.js та англійською Upper-Intermediate максимум $3600.

N-iX шукає розробника для ШІ-стартапу, який працює над SaaS-рішенням для бізнесу.

Найвищі вимоги до досвіду має компанія Proffiz: 7 років.

Delphi Software шукає розробника для клієнта, що отримав понад 100 мільйонів доларів фінансування.

Gemicle шукає досвідченого розробника суто у Вінниці через гібридний формат роботи. Знайомство з ШІ буде плюсом.

GetProspect готова розглянути Node.js-розробника без знання англійської, а за замовчуванням вакансія вимагає рівень Pre-Intermediate, що теж небагато.

«Червоним прапорцем на співбесіді можуть стати прогалини в базовій теорії програмування»

Богдан Рутило, Senior JavaScript Engineer (NodeJS) / Project Manager в Intellias

Головним для будь-якого Senior Node.js розробника є глибоке розуміння JavaScript. Від примітивних типів до прототипної моделі, менеджменту памʼяті і, звісно ж, event loop. І вже на міцній базі js можна виділити специфічні навички з Node.js:

  • Розуміння архітектури Node.js, її компонентів, особливостей event loop та V8. Наприклад, Middle-розробникам часто бракує знань, щоб знайти проблему в продуктивності певного коду, здебільшого через те, що немає розуміння, як цей код виконується «під капотом». Що делегується на ОС, що блокує потік тощо.
  • Multiprocessing. Наприклад, робота з worker thread тощо. Часто на реальних проєктах використовують інфраструктурний підхід на відміну від того, що дає сам Node.js, але це не повинно викреслювати таку навичку для Senior-рівня.
  • Senior має знати, як працювати з більшістю стандартних Node.js-модулів, HTTP, events, stream тощо, вільно орієнтуватися в документації.
  • Senior-розробник зазвичай має досвід хоча б з 2+ Node.js-фреймворками. Зазвичай це Express + (Nest/Fastify/Hapi/інше).
  • Окрім прямо повʼязаних навичок з Node.js, варто зазначити, що в нинішніх реаліях Senior добре володіє щонайменше 1 БД, має досвід з розподіленими системами, а ще орієнтується в методах комунікації та меседж-брокерах.

Senior добре знає, як структурно ефективно побудувати проєкт і проконфігурувати все найнеобхідніше, щоб сфокусуватися на розробці саме бізнес-логіки. Тут мова про логування та моніторинг, той же TypeScript, CI.

Тестування та покриття коду тестами є важливою ознакою рівня розробника. Написати код — це одне, а написати його так, щоб його можна було зручно та швидко покрити тестами, — це інше. Extensibility, Maintainability, Readability and Code Formatting, Clarity, Well-documented, Well-tested, Efficient — це все ознаки коду, створеного справді Senior-розробником. Такий фахівець вміє створювати якісну технічну документацію.

Червоним прапорцем на співбесіді Senior Node.js Developer можуть стати суттєві прогалини в базовій теорії програмування і знаннях JavaScript. На мою думку, це відіграє навіть більшу роль, ніж прогалини в знанні самого Node.js. Також часто трапляється, що розробник подається на Senior-вакансію, маючи лише досвід роботи з Node.js на рівні Express: підняв сервер, додав контролер — відтепер я Node.js-розробник 🙂. Упускаючи роботу з ORM для баз даних, безпеки, продуктивності тощо.

«У компаніях FАANG не послуговуються терміном Node.js-розробник»

Нікіта Галкін, засновник спільноти Node.js Recipes

80% навичок не залежать від спеціалізації. Насамперед це навички програмування, розуміння алгоритмів. Хоч це Node.js-розробник, хоч Java, якщо йому потрібно розповідати, що він має робити раннє повернення з функцій, тоді ви не з сеньйором спілкуєтеся. Спільні навички включають також м’які навички та вміння комунікувати, в тому числі комунікувати через код.

Потрібне вміння збирати вимоги. Важливо, як спеціаліст вміє користуватися інструментами розробки, прискорюючи свою роботу. Я кажу не лише про штучний інтелект, але і про гарно налаштовану IDE.

Якщо говорити про суто технічні навички, вони будуть здебільшого спільними між Node.js, Python та іншими технологіями бекенду. Дуже рідко буває, що Node-js-спеціаліст розробляє код для запуску на дроні чи іншому пристрої. Здебільшого Node.js-розробники пишуть бекенд для вебу та мобільних застосунків. Також виконують частину DevOps-роботи, зокрема налаштовують CI/CD. У компаніях FАANG не послуговуються термінами Node.js-розробник, Java-розробник тощо. Ти — інженер, а технічний стек може змінюватися.

Якщо говорити про 20% навичок, які є специфічними для Node.js-розробника, то це насамперед досвід з такими фреймворками, як Nest.js та Express.js. Якщо у вас є легасі на Express.js, і ви можете до цього моноліту додати Nest.js, це рівень Senior-розробника. Конкретна матриця навичок завжди залежить від проєкту, але TypeScript став стандартом де-факто для продуктової розробки.

Senior може приймати більш правильні рішення стосовно технічного стеку для проєкту. Наприклад, зараз я переводжу проєкт з PDFKit на PDF-LIB. Під час збору вимог розробник запропонував використовувати PDFKit, але не врахував, що ця бібліотека не може зробити анотацію файлу, тобто ми не можемо розробити одну з фіч. Нам потрібно використовувати більш низькорівневу бібліотеку.

Senior розробник зазвичай краще вміє структурувати код. Крім того, як відомо, 5 хвилин читання документації можуть зекономити вам 2 години дебагінгу. Senior-розробник є більш начитаним в документації: він знає, де можна подивитись відповідь на своє питання.

👍ПодобаєтьсяСподобалось14
До обраногоВ обраному8
LinkedIn



1 коментар

Підписатись на коментаріВідписатись від коментарів Коментарі можуть залишати тільки користувачі з підтвердженими акаунтами.
комунікувати через код

бажано зразу із всесвітом

Підписатись на коментарі