Чим займаються fullstack-розробники: запитуємо в них
Що потрібно, щоби стати фулстеком
Fullstack-розробники — це універсальні фахівці, які можуть самостійно створити продукт, тому що розуміються й на програмно-апаратній частині сервісу, і на побудові інтерфейсу користувача.
Компанії відкривають вакансії для FullStack Developers, оскільки часто потрібно розробити MVP або підтримувати технічно нескладний сайт. У таких випадках одній людині простіше розібратися в логіці й вона може швидко вносити зміни.
Ми запитали в Кирила Козака, Co-founder Lambda Team, Данила Толмачова, Fullstack Engineer та Team Lead у Techstack, й Олега Більки, Fullstack-розробника у Grid Dynamics, які завдання вони вирішують, як стати фулстеком і в чому плюси та мінуси професії.
Базові знання fullstack-розробника
Fullstack повинен знати вдвічі більше, ніж frontend- або backend-розробник, і швидко розбиратися в нових інструментах. І тому йому потрібна технічна база: основи ООП, знання алгоритмів і структур даних, основи мережевих систем. Також для fullstack обов’язкові знання баз даних. Для того, щоби «закрити» весь стек веброзробки, програміст повинен мати хоча б базові знання DevOps.
Кирило Козак:
«Є фулстек-розробники, які розуміють не лише фронтенд та бекенд, а ще й DevOps. Вони закривають цикл розробки самостійно, роблять архітектуру на бекенді, приєднують до дашборду, щоб усе працювало. Отже, середовище розробки та деплою в продакшн будує одна людина.
Завдання та обов’язки fullstack-розробника
Fullstack-розробники — експерти в зовнішньому та внутрішньому інтерфейсі з повним набором технологій, з яких складається вебсайт. Вони працюють як із клієнтськими, так і із серверними мовами та фреймворками в серверних, мережевих та хостингових середовищах.
Олег Білька:
«Навколо концепції розробника повного стеку багато суперечок, бо деякі люди сумніваються, чи може така людина існувати.
З’являється все більше елементів та функцій для вебсайтів та вебзастосунків. Їхня кількість зросла настільки, що бути по-справжньому “повним стеком” неможливо.
Термін fullstack означає різні речі для різних людей, залежно від ніші. Він може бути чудовим варіантом для стартапів та команд з обмеженим бюджетом. Як член команди fullstack-розробник може взяти на себе відповідальність за проєкт, швидко ітерувати продукт та усунути проблеми в міру їхнього виникнення.
Цей спеціаліст повинен мати навички в різних нішах розробки: від баз даних до графічного дизайну UI/UX. Він може замінити кількох вузьких спеціалістів».
Основні обов’язки fullstack-розробника:
- допомога в проєктуванні та розробці програмного забезпечення;
- написання чистого коду для frontend- та backend-частин;
- тестування та налагодження;
- проєктування моделі даних та архітектури;
- обслуговування серверної частини;
- тестування та підтримка адаптивного дизайну додатків;
- робота з графічними дизайнерами над створенням нових фіч;
- розробка API та сервісів RESTful/GraphQL;
- турбота про безпеку, обслуговування, масштабованість продукту.
Fullstack-розробники також знаються на бізнес-логіці та користувацькому досвіді, а це означає, що вони можуть брати участь у розробці стратегії.
Які інструменти потрібні фулстеку?
З frontend-інструментів потрібно знати HTML і CSS, вміти згорнути та стилізувати вебсторінку. Й оскільки «монополіст» у фронтенді — мова JavaScript, знати її теж потрібно.
Для того, щоби вебсторінка не тільки показувала інформацію, але й мала функціональність, розробнику потрібні frontend-фреймворки. Зараз популярні Angular, Vue.js та React. Для fullstack-фахівця достатньо знання одного з фреймворків.
У backend-частині великий вибір мов. Варто розглянути:
- — спеціально розроблену для вебу PHP;
- — «класичні» для enterprise інструменти: Java та ASP.NET;
- — молодий та популярний серед стартапів Node.js;
- — Ruby, Python, Scala та інші.
Після того, як визначилися із серверною технологією, потрібно зрозуміти, де зберігати дані. Бази даних поділяються на два типи: реляційні (підходять для більш структурованих даних, які легко поділити на пов’язані між собою таблички) та нереляційні (дані зберігаються без чіткої структури). Реляційні бази підтримують мову запитів SQL. Найпопулярніші реляційні бази: PostgreSQL, MySQL, MicroSoft SQL Server, Oracle Database. Серед нереляційних (або NoSQL) баз даних відома MongoDB.
Для fullstack-розробника корисні й інші інструменти:
- — для зберігання, версіювання та побудови безперервної інтеграції та постачання (CI/CD) — Github, Gitlab, Bitbucket;
- — для запуску додатків — Docker, Kubernetes;
- — для документування та тестування API — Postman, Swagger;
- — для хостингу додатків — хмарні сервіси AWS, MS Azure, GCP, Heroku.
Переваги професії
Серед плюсів для самого розробника — гнучкість у виборі кар’єрного розвитку. Він працює і з фронтенд-, і з бекенд-частинами вебдодатка, а отже, поглиблюється то в одну, то в іншу сферу, тому може вибрати, у якій ролі розвиватись.
Розробнику можна бути гнучким у виборі напряму, тому що фулстеки — T-shaped .
Серед переваг для проєкту — швидкість розробки та самостійність девелопера.
Данило Толмачов:
«Фулстек-розробник — мультифункціональна людина. Багато бекенд-розробників хочуть писати код на фронтенді, тому що результат роботи видно. І навпаки, деякі люди не хочуть займатися фронтенд-розробкою та зв’язуватися з дизайнерськими завданнями.
Коли працюєш фулстеком, доводиться стикатися з усім одразу і відповідати за все. Це водночас і перевага, і недолік роботи.
Але маленький проєкт фулстек-розробник може зробити без допомоги. Це буде повноцінний проєкт, що включає фронтенд-частину (наприклад, HTML/CSS), яку можна буде презентувати або включити до резюме, та бекендівську частину, яка матиме складну бізнес-логіку, підтримуватиме стан або працюватиме з базою даних».
Олег Білька:
«Fullstack-розробник не обов’язково повинен мати глибокі знання у всіх технологіях, які використовуються. Він може швидко створити прототип продукту або MVP, а також допомогти кожному в команді заощадити час на спілкування та інтеграцію між шарами. Багато хто з фулстеків стають підприємцями або технічними партнерами в стартапах».
Недоліки професії
Для розробників є явний мінус: усіх технологій і так не наздогнати, а фулстеку доводиться бігти вдвічі швидше — вивчаючи як бекенд-, так і фронтенд-технології. І хоча ширина знань — не мінус, потреба вивчати все і відразу забирає більше часу та сил.
Кирило Козак:
«Фулстек-розробник розуміється краще або у фронтенді, або в бекенді. Такі розробники потрібні ринку. Їх буде дедалі більше, бо зарплати в них вищі, ніж у фронтендера чи бекендера.
Недоліки для проєкту — усе пов’язане навколо однієї людини, і коли вона зникає, проєкт зупиняється. Я вважаю, що на проєкті мають бути люди з різними ролями — тімлід, DevOps, фронтенд та бекенд-розробники.
Фулстек — це швидкість, яка потрібна стартапам. Він хороший на early-stage, але коли проєкту потрібна стабільність, слід розділяти ролі».
Також часто замовники дають занадто багато вимог, не знаючи, що входить до компетенції фулстек-розробника. Наприклад, оцінюють роботу одного фулстека в такі ж терміни, якби над проєктом працювали два окремі фахівці — фронтендер та бекендер.
Данило Толмачов:
«Якщо порівнювати хороших фронтенд- і фулстек-розробників, то фронтендник може бути трохи кращим у нюансах, у яких фулстек може бути поверхневим. Тут грає роль і досвід, і те, як часто він стикається з певними завданнями та як їх розв’язує. Але це не означає, що фулстек виконає завдання гірше — йому просто знадобиться більше часу.
Фулстек-розробник програє бекендникам та фронтендникам, коли потрібен вузькоспеціалізований спеціаліст. Замінити фронтендника фулстеком можна, але на практиці все залежить від технологій».