Що має знати Senior Node.js Developer і які червоні прапорці виникають на співбесіді
Це
Тож я проаналізував 24 вакансії 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-розробнику з
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-розробник