Раніше, до широкого розповсюдження інтернету, всі розробники були фулстеками. Застосунки та сайти були простими, тож фактично кожен міг розробити та вдосконалити продукт самотужки. Коли технології розвинулися, з’явився поділ на фронтендерів та бекендерів, а коли інструменти розробників стали ще потужнішими — роль фулстека знову повернулася до переліку затребуваних вакансій. Про позицію єдиного розробника у продукті, його навички, обов’язки та кар’єрний шлях розповідає Антон Пінкевич, Full Stack Team Lead у Universe, компанії з екосистеми Genesis.
Хто такий Full Stack Developer
Full Stack Developer — це програміст, який розуміється і на користувацьких інтерфейсах, і на серверних компонентах. Він може самостійно реалізувати MVP або навіть нескладний повноцінний продукт. Кожен такий розробник володіє певним набором мов програмування, фреймворків, утиліт та бібліотек для фронтенду та бекенду — це його стек. Робота з базами даних чи операційними системами, відправка проєкту на прод, його оновлення також входять до обов’язків фулстек-розробника.
«Моя кар’єра фулстек-розробника розвивалася в два етапи. Спочатку був власний проєкт, а потім великий бізнес. У 2015 році ми з командою запускали онлайн-магазин чаю. Я уже тоді займався програмуванням, тож взявся за технічну частину проєкту. Стек обирали з нуля, тож я мав змогу експериментувати з усім, що було цікаво. Пізніше я потрапив до Universe — як фронтенд-розробник рівня сеньйор. Ми разом з командою з трьох бекендерів працювали над запуском нового напряму. Пізніше бекенд-команда розпалася, а у наймі кількох окремих спеціалістів уже не було бізнес-потреби. Мене запитали, чи впораюся із підтримкою серверної частини — і я погодився, адже мав відповідний досвід. Так я вдруге став фулстеком, уже на боці крупного IT-бізнесу», — розповідає Антон Пінкевич, Full Stack Team Lead в Universe.
Коли компанії наймають Full Stack Developer
Подібна вакансія може з’явитися в кількох випадках. Наприклад, це стартап, якому необхідно швидко запуститися. Або ж продукт уже розробили, і наразі потрібна тільки підтримка. Тоді замість команди з фронтенд- та бекенд-розробників бізнесу простіше найняти одну людину, яка швидко розбереться у логіці продукту та оперативно вноситиме зміни.
«Стартапу чи маленькому бізнесу завжди краще наймати фулстека. Здебільшого, одна людина цілком впорається з потрібним навантаженням. Коли стартап виростає, а бізнес-модель стає більш зрозумілою та виправданою, можна наймати більшу команду», — говорить Антон Пінкевич.
Як з’явилася роль Full Stack Developer
На початку доби інтернету диджитал-продукти були простими та статичними. Для верстки інтерфейсу, налаштування серверів та розміщення проєкту на хостингу не потрібно було місяцями вивчати актуальні технології. Одна людина цілком могла спроєктувати повноцінний застосунок чи сайт, тож всі розробники за замовчуванням були фулстеками.
Пізніше інтернет почав поширюватися серед користувачів, і конкуренція між виробниками ПЗ стала зростати. Аби виділитися серед інших, розробники придумували більш інтерактивний дизайн та комплексну функціональність. Урешті-решт, застосунки та сайти стали настільки складними, що одна людина уже не могла впоратися з підтримкою всього продукту.
Тоді з’явилися спеціалізації. Користувацьким інтерфейсом та скриптами на стороні клієнта почали опікуватися фронтенд-розробники, а серверну частину взяли на себе бекендери. Посиленню спеціалізації сприяла поява фреймворків та бібліотек на кшталт Ruby on Rails, Django та AngularJS.
З часом до роботи над проєктами залучали все більше людей, тож виробництво продуктів та сервісів дорожчало. Не стояв на місці й розвиток технологій. Спочатку обертів активно набирали jQuery, CSS3, HTML5. Пізніше популярним став стек LAMP (Linux, Apache, MySQL, PHP / Python / Perl) з відкритим вихідним кодом усіх компонентів. Рішення для хостингу також ставали доступнішими. Згодом численність та різноманітність технологій знову дали змогу окремим програмістам брати на себе повний цикл створення застосунку.
Обов’язки Full Stack Developer
Роль фулстека передбачає всі аспекти створення вебзастосунків — від проєктування архітектури до інтеграції продукту з базою даних та його підтримки. «Це дуже схоже на роль СТО, але з меншим масштабом, — каже Антон Пінкевич. — Запити від бізнесу можуть бути різними — і аналітика, і верстка, і оптимізація. А вже що робити і як саме, розробник обирає самостійно».
Якщо детальніше, то фулстек:
пише код для фронтенд- та бекенд-частини;
забезпечує інтеграцію продукту з базою даних;
налаштовує серверну частину, зокрема, створює API для взаємодії з іншими службами й застосунками;
підтримує адаптивний дизайн застосунків;
виявляє та виправляє помилки в продукті та оптимізовує його продуктивність;
стежить, щоб проєкт був готовий для тестування;
розгортає продукт на серверах та підтримку його роботи в продуктивному середовищі;
оновлює продукт та відповідає за його функціональний розвиток на основі вимог.
Навички та знання Full Stack Developer
Такий фахівець має хоча б поверхово розумітися на кожному шарі технологічного стека. Йдеться не лише про володіння мовами програмування фронтенду та бекенду, а й обізнаність у базах даних, серверних налаштуваннях, сучасних фреймворках, системах контейнеризації тощо.
Втім, однаково добре розумітися і на фронтенді, і на бекенді не вийде. Фулстек-розробник не може бути майстром у всьому, зазначає Антон Пінкевич. «Подібних людей просто не існує. Навіть у досвідченого фахівця якісь навички будуть сильнішими, а якісь слабшими. У мене, наприклад, фронтенд прокачаний на максимум, а от у плані бекенду ще є куди зростати», — говорить розробник.
Пріоритети для розвитку в конкретний момент варто визначати, залежно від бізнесу, в якому працюєте чи хочете працювати. «Наприклад, у фінтех-продуктах фронтенд часто дуже простий, він може складатися з однієї адмінки. А от «під капотом» — складна інфраструктура, яку підтримують саме бекендери. Якщо це освітній продукт з акцентом на клієнтську частину, все навпаки. Бекенд тут можна легко закрити з допомогою BaaS (backend as a service), а от для фронтенду потрібен досвідчений фахівець», — пояснює Антон Пінкевич.
Хард-скіли
Ось низка навичок, якими варто оволодіти будь-кому, хто прагне стати фулстек-розробником.
HTML та CSS. HTML потрібен, щоб наповнити сторінку контентом, CSS — для того, щоб гарно її оформити. Ці два інструменти дозволяють спроєктувати все, що побачить користувач.
JavaScript. Це мова-«монополіст» у фронтенді, якою можна писати програми майже будь-якої складності — від бота для відправки повідомлень до багатошарових ecommerce-проєктів. JavaScript повністю інтегрується з HTML, CSS й серверною частиною, підтримується основними браузерами та суттєво знижує навантаження на сервер.
Angular, Vue, React або ж Next.js. Перші три — це взаємозамінні фреймворки, тож фулстек-розробнику достатньо знати хоча б один із них. Вони потрібні, аби вебсторінка була функціональною, а не лише відображала інформацію. Next.js дає можливість писати фулстек-застосунки «з коробки».
Git. Система контролю версій допомагає відстежувати зміни у коді, повертатися до попередніх версій та працювати над кількома гілками розробки паралельно.
Мови бекенду. Від мови бекенду залежить спеціалізація фулстек-розробника. Вибір мов доволі великий, розглянемо декілька найбільш популярних.
PHP. Ця потужна та гнучка мова стала однією з найпопулярніших мов у бекенді завдяки тому, що її використовували популярні CMS, як-от WordPress. Його використовують, щоб надати динамічності та інтерактивності вебсайтам. Найперше варто вивчити фреймворки Laravel або Symfony.
Java. Мова, яка уже стала класичною у програмуванні. Зазвичай її використовують для створення ігор, застосунків для операційної системи Android, а також серверних застосунків. Найперше варто вивчити фреймворки Spring або Hibernate.
Python застосовують в аналізі даних, при машинному навчанні, веброзробці, геймдеві та багатьох інших сферах. Ключові фреймворки Django, Flask та FastAPI.
Node.js. Відносно новий інструмент, який дає змогу виконувати JavaScript-скрипти на сервері, уже став популярним серед стартапів. Окрім роботи із серверними скриптами для вебзапитів, також використовується для створення клієнтських та серверних програм. Саме Node.js перетворила JavaScript на розповсюджену мову програмування з великою спільнотою розробників. Він має бути знайомий із фреймворками Adonis.js та Express.js.
інші мови — C#, Scala, Go, Ruby.
HTTP і REST. Аби системи легко обмінювалися даними, а застосунок можна було б швидко масштабувати, фулстек-розробник повинен базово розумітися на протоколах взаємодії мережі та користувача.
Бази даних. Фулстек може підібрати оптимальну систему для зберігання даних та оптимізувати роботу з ними. Для цього він вивчає реляційні, як-от MySQL або PostgreSQL та не реляційні БД на кшталт MongoDB, Cassandra чи Redis.
Базові знання DevOps дають змогу закрити увесь стек веброзробки. Ключове тут — знати основи системного адміністрування, Docker та Kubernetes для запуску застосунків, AWS MS чи Azure для хостингу застосунків.
Софт-скіли
Упередження про те, що для вдалої кар’єри розробнику потрібні лише хард-скіли потроху залишається у минулому. Саме «гнучкі» навички можуть стати визначальним фактором під час влаштування на роботу. Ось декілька ключових:
вміння брати на себе відповідальність та шукати рішення;
робота в команді;
розуміння, як працює бізнес;
гнучкість та адаптивність;
вміння домовлятися;
тайм-менеджмент.
Ґрейди
Попри упередження, що всі фулстеки — це сеньйори, їх кар’єрний шлях також підпорядковується певним ґрейдам. «Фахівець рівня джуніор не може завершити фінальну задачу самостійно, йому потрібне деталізоване ТЗ. Втім, навіть у своїй невеликій зоні відповідальності, він уже має набір інструментів та безліч варіантів, як саме вирішити завдання. Мідл здатний закривати завдання самотужки, якщо з ТЗ чітко зрозуміло, що саме має отримати бізнес. У сеньйора завдання складніші та абстрактніші, на цьому етапі в роботі з’являється більше невизначеності», — говорить Антон Пінкевич.
Переваги напряму
Кар’єрні можливості. Хочеться перемкнутися на чистий фронтен або бекенд? Запросто. Прагнете зростати до СТО? Будь ласка. Мрієте запустити свій продукт? Робота фулстек-розробника підготує вас до цього.
Гнучкість та швидкість. Комунікаційних ланцюжків менше, ніж коли за фронтенд та бекенд відповідають різні люди, а отже процес розробки суттєво пришвидшується.
Менше рутини. Проєкти, завдання та шляхи їх реалізації можуть бути дуже різними, тож фулстек-розробник має менше ризиків вигоріти через рутину.
Недоліки напряму
Знань ніколи не буде достатньо. Сфера IT постійно розвивається, з'являються нові технології, а тренди змінюються. Щоб створювати актуальні продукти, потрібно постійно тримати руку на пульсі. До того ж фулстек не може стати майстром у всьому — тож якийсь з напрямів його роботи, ймовірно, буде «провисати».
Вузькоспеціалізовані фахівці завжди будуть кращими у своїй ніші. Навряд чи вам вдасться повністю зануритися у ту чи іншу мову чи технологію, тож ви завжди будете вміти менше, ніж розробник конкретного напряму.
Складні завдання та високе навантаження. Оскільки одна людина має підтримувати всю архітектуру, більш-менш спокійних днів у вашій роботі буде небагато. Завдання будь-якої складності та напряму буде адресуватися саме вам — і з усім доведеться розбиратися самотужки.
Види фулстек-розробників
Для фронтенд-частини розробники зазвичай вчать приблизно один набір технологій: JavaScript та один з фреймворків. Тому спеціалізація визначається за мовами бекенду. У переліках вакансій можна побачити PHP Full Stack Developer, Java Full Stack Developer, Node.js Full Stack Developer, Python Full Stack Developer. Втім, технологічних стеків набагато більше, ніж мов програмування.
Розглянемо, наприклад, MEAN, MERN та MEVN. Основні компоненти стеків — MongoDB, Express.js, Node.js, до яких доєднуться фронтенд-фреймворки Angular, React, Vue. Крім того, є LAMP — набір з чотирьох технологій: операційної системи Linux, вебсервера Apache, сервера баз даних MySQL й мови програмування PHP.
Стек RoR чи RoRM призначений для Ruby on Rails. Залежно від запиту, до абревіатури може додаватися буква M, яка означає MySQL чи MongoDB. Останнім часом розробники звернули увагу також на «андеграундний» стек Bun + Elysia + HTMX. В основі — перспективний інструмент Bun, який прагне замінити Node.js. Це швидке середовище виконання JavaScript, бандлер, транскриптор та менеджер пакунків, подібний до Node.js та Deno.
Чотири міфи про фулстек-розробників
Фулстек-розробнику потрібні лише технічні знання. Фулстек-розробник також має вміти працювати в команді разом з дизайнерами, тестувальниками та продакт-менеджерами, планувати, оцінювати завдання, визначати пріоритети та грамотно розподіляти час, аналізувати дані та ухвалювати рішення тощо.
Фулстек розробники вміють писати код будь-якою мовою. Завдання фулстека — спроєктувати клієнтську та сервісну частину. Для цього не потрібно знати безліч мов. Достатньо працювати з JavaScript з ключовими фреймворками фронтенду й одну чи дві мови бекенду.
Фулстек — це завжди сеньйор. Насправді ні, все залежить від вимог проєкту. Якщо, наприклад, для підтримки продукту достатньо початкових знань в обох ключових напрямах, то позицію можна обійняти й з ґрейдом джуна.
У всіх фулстеків — однакові навички. У реальності існує багато варіантів стеку, а розробник обирає стек відповідно до своїх завдань та проєктів. Наприклад, один програміст може використовувати Python та Django, другий — JavaScript та Node.js, третій — Ruby on Rails. Не варто забувати й про спеціалізації: мобільний, веб- чи SaaS-розробник будуть користуватися стеками відповідно до своїх професійних інтересів.
Як стати фулстек-розробником
«Я б радив розпочинати кар’єру з фронтенду, адже тоді ви самотужки зможете надати клієнту чи користувачу фінальний продукт у будь-якій ніші. Фахівці з бекенду більше затребувані у B2B-секторі, тож подібних бізнесів суттєво менше», — говорить Антон Пінкевич.
Він додає, що для початку варто вивчити конкретний фреймворк. Наприклад, Next.js або ж React. «Останній зараз дуже популярний, зустрічається у вимогах приблизно 80% вакансій. Коли вже зрозуміло, як він працює, можна «закопуватися» далі — розбиратися з JavaScript, в багатопотоковостях, вебворкерах у браузерах тощо. Далі я б радив заглиблюватися у софтверну розробку, починати вчити бази даних та мови бекенду, такі як PHP чи Python», — — каже розробник. Коли ви добре засвоїте більшість основних інструментів для обох напрямів, то зможете претендувати на сеньйорні посади.