Що має знати Senior Node.js Developer і які червоні прапорці виникають на співбесіді
Це
Тож я проаналізував 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-розробнику з
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 Recipes80% навичок не залежать від спеціалізації. Насамперед це навички програмування, розуміння алгоритмів. Хоч це 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-розробник є більш начитаним в документації: він знає, де можна подивитись відповідь на своє питання.
1 коментар
Підписатись на коментаріВідписатись від коментарів Коментарі можуть залишати тільки користувачі з підтвердженими акаунтами.