Full Stack: зайві ускладнення чи найближче майбутнє розробки

Чи є у мене майбутнє в розробці? Чи можу я зі своїми скілами конкурувати з молодшими розробниками? Що робити, щоб бути потрібним на ІТ-ринку? Може, пора світчнутись в Full Stack? Певен, багато хто ставить собі подібні питання. Тому пропоную розглянути загальні принципи Full Stack розробки та відповісти собі, чи є бажання рухатись в цьому напрямку.

Як Back-end розробник компанії Innovation Feel з 11-річним досвідом, я часто опиняюсь в ситуаціях, коли потрібно також працювати з Front-end функціональністю. Два роки тому у мене був вибір: змінювати проєкт або перекваліфіковуватись. Вибір пав на другий варіант, хоча досвіду у Front-end розробці не було, оскільки я 10 років працював із Ruby та базами даних. Тому необхідно було вивчати TypeScript та Vue.js на ходу та за необхідності працювати з Node.js та React Native. Тому останні два роки працюю як Full Stack (Ruby+Vue.js) розробник.

Чи є Full Stack дійсно перспективним напрямком для кар’єри в IT? Винятково Back-end чи Front-end вакансій стає дедалі менше. Всім частіше потрібні універсальні розробники, здатні закривати кілька аспектів розробки.

Звісно, Full Stack — це не панацея. Це не завжди приємно та комфортно, але така тенденція і запит ринку. Тому такий скіллсет може стати потужним інструментом розвитку. Іноді клієнти (роботодавці) можуть мати різне уявлення, що таке Full Stack: від поєднання скілів Front-end та Back-end розробки до фул сета (Front-end + Back-end + Mobile + DevOps, але таке трапляється дуже рідко).

В цій статті я розповім, що таке Full Stack у класичному розумінні Front-end + Back-end, чи є попит на таких розробників, і які скіли вони повинні мати у своєму арсеналі, щоб вийти на новий рівень.

Хто такі Full Stack розробники

Full Stack розробник — це програміст, який може працювати з різними елементами кодової бази та технологіями.

Звіт LinkedIn за 2023 рік показує, що такі спеціалісти входять у топ-10 найбільш популярних ІТ-спеціалістів у світі. Можна сказати, що це «універсальний розробник», який за необхідності може працювати над різними сторонами проєкту, а також прискорювати й покращувати взаємодію між Front-end і Back-end частинами застосунку.

Переваги для компанії

  • Швидкість розробки.

Замість того, щоб наймати кількох розробників для Front-end та Back-end, можна покластися на одну кваліфіковану людину, яка впорається з усім. Це призводить до зниження витрат на управління проєктом, скорочення часу на комунікацію та відсутність непорозумінь, що робить процес розробки більш ефективним загалом.

  • Універсальність.

Завдяки Full Stack розробникам компанія може оптимізувати комунікацію та управління проєктами. Також думка такого розробника під час планування, грумінгу чи технічного дослідження може бути більш цілісною.

  • Зниження витрат.

Залучення Full Stack розробників допомагає компаніям заощадити кошти, оскільки вони усувають потребу в більшій команді. Це особливо корисно для стартапів, коли компанія тільки починає свій проєкт і має обмежені ресурси. Також це знижує навантаження на HR-департамент, хоча при цьому трохи ускладнює їм завдання.

Переваги для розробника

  • Розширення кругозору.

Full Stack розробник може мати знання у більшій кількості технологій, що допомагає краще розуміти та вирішувати технічні завдання.

  • Підвищення конкурентоспроможності.

Український ІТ-ринок цінує фахівців, які володіють повним стеком. Це дає більше можливостей для кар’єрного зростання.

  • Можливість бачити й направляти розробку з обох сторін.

Досвідчені Full Stack спеціалісти можуть приймати рішення на будь-якому рівні реалізації проєкту.

Міфи про Full Stack розробників

Міф 1: ці розробники знають все про все

Хоча Full Stack спеціалісти мають широкий набір навичок, нереально очікувати, що вони будуть експертами в кожному аспекті розробки програмного забезпечення. Вони можуть мати глибоке розуміння як зовнішніх, так і внутрішніх технологій, але не обов’язково є експертами в кожній ніші чи структурі цих областей.

З мого досвіду, коли ти вивчаєш одну мову програмування або технологію до рівня самостійної розробки (в моєму випадку це був Vue.js), а потім, з різних причин, змушений вивчати іншу і працювати з нею протягом тривалого часу (у моєму випадку це React Native), то з часом попередні навички частково втрачаються. А уявіть, якщо така ситуація виникає не раз і не два.

Це відбувається тому, що такий розробник працює з мовою чи технологією недостатньо довго, щоб відпрацювати навички до рівня автоматизму. Зворотна ситуація у світчерів у fullstack з мовами, які тривалий час були основними. Саме тому варто концентруватись на кількох технологіях і намагатись довести навички саме до цього механічного рівня.

Міф 2: Full Stack розробники знають мало, але в багатьох технологіях

Попри те, що таким спеціалістам потрібно мати практичні знання про різноманітні технології, вони, як і будь-який розробник, також повинні глибоко занурюватися в конкретні предметні області, коли це необхідно.

Потрібно мати цілісне уявлення про взаємодію різних компонентів, але також важливо зберігати фокус на кількох технологіях, не намагаючись охопити всі. Абсолютно справедливою теза про «механічну» памʼять буде і в цьому пункті. Для мене таким стеком став Ruby + Vue.js + React Native.

Міф 3: Full Stack розробники заробляють більше

Хоча розробники з повним скілсетом зазвичай отримують конкурентоспроможну оплату, вона часто буде нижчою за оплату профільних експертів. Але тут все залежить від рівня розробника.

Опитування DOU показує, що у 2023 році заробітна плата Full Stack на позиції Middle впала. Інші тайтли або не змінилися, або зросли.

Згідно Glassdoor, середня зарплата Full Stack розробників за 2023 рік становила близько $106,000 в США, водночас Back-end спеціалісти в середньому заробляли $110,000. Отже, хоча Full Stack можуть отримувати хороші зарплати, вони не завжди випереджають профільних спеціалістів.

Міф 4: Full Stack — це майбутнє розробки

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

Що з оплатою у 2024 році

Джерело

Згідно з останніми галузевими звітами, середня зарплата Full Stack розробників у Європі стартує від $8000. В Україні таку заробітну плату може отримувати Senior, а Middle може розраховувати на $2200 — $4300.

Джерело

Заробітна плата залежно від мов програмування

Ruby Stack розробники (зазвичай Ruby + React/Vue.js) у США в середньому отримують близько $7250. В Україні ті самі спеціалісти дістають $2500. Йдеться саме про середню оплату без привʼязки до рівня.

MEAN Stack розробники (JS-based: AngularJS, Node.js, Express.js тощо) у США в середньому заробляють трохи менше — $6000. В Україні вони отримують таку ж суму, як і спеціалісти з Ruby — $2500. Альтернативою може бути MERN-стек, який також базується на JS, але з React замість AngularJS.

LAMP Stack розробники (Linux, Apache, MySQL, PHP — не зовсім Full Stack, тут лише для порівняння) отримують у США в середньому $6700. В Україні ця цифра — $2500.

Бюро статистики праці прогнозує близько 189 200 вакансій для Full Stack щороку в період між 2020 і 2030. Очікується, що кількість робочих місць суттєво зросте протягом наступних 10 років, і такі розробники зможуть відігравати ключову роль серед найбільш потрібних фахівців.

Як я став Full Stack розробником

Вище я писав, що мій кар’єрний стрибок у Full Stack був вимушений, оскільки цього вимагав поточний проєкт. Та цей перехід стимулював мене рости й розвиватись згідно з потребами ринку та задачами на проєкті. Розуміння поточних трендів на ринку праці є одним з ключових аспектів для того, щоб стати успішним Full Stack розробником.

Що ж можна робити, щоб досягти цієї мети? Ділюся власним досвідом:

  1. Переглядайте вакансії на популярних платформах як-то Djinni, DOU, GitHub jobs, LinkedIn. Це допомагає краще зрозуміти, які технології та навички наразі мають найбільший попит.
  2. Вивчайте популярні фреймворки та мови. Від такого спеціаліста очікують знання Back-end і Front-end одночасно. Також максимально корисними будуть знання хмарних технологій та баз даних. Розвиток розробника дуже важливий і цей процес вічний!
  3. Опануйте DevOps-інструменти хоча б на базовому рівні. Успішний Full Stack часто поєднує не тільки навички Front-end та Back-end розробки, але й DevOps-практики для інтеграції та доставлення коду. Важливими інструментами є Docker, Kubernetes, а також CI/CD як-то Jenkins, GitHub Actions чи Bitbucket Pipeline для автоматизації тестування та розгортання.
  4. Готуйтесь до співбесід. Можливо, пройдіть кілька тестових. Робіть тестові завдання якісно, але лаконічно, щоб максимально показати свої навички. Попросіть більш досвідчених колег провести вам інтерв’ю та оцінити рівень, дати якісь рекомендації. І, звичайно, слідкуйте за трендами.

Підсумки

Перед тим, як ухвалити рішення рухатись в сторону Full Stack, необхідно врахувати довгострокові цілі та готовність освоювати нові технології. Оцініть свої сильні та слабкі сторони та почніть з малих проєктів. Пам’ятайте, що такий перехід потребує часу, але може значно розширити ваші кар’єрні можливості.

Підсумовуючи:

  • необхідно моніторити ринок і слідкувати за трендами. Можливо, тут корисніше буде навіть прогноз трендів, а не тільки їх нинішній стан;
  • треба концентруватись на кількох обраних технологіях, не розпилюватись на велику кількість мов та технологій;
  • час від часу варто практикуватись в мовах, які вже знаєте, але в роботі наразі не використовуєте;
  • потрібно весь час навчатись — ця сфера не терпить застою.

Поділіться своїм досвідом та думками у коментарях. Чи розглядаєте ви можливість змінити напрям або, можливо, вже працюєте в цій сфері?

👍ПодобаєтьсяСподобалось11
До обраногоВ обраному2
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Що скажете про Blazor? Дійсно це потужний фреймворк для фулстеків .net? Мені здається, що для невеликих додатків добре, як і в загальному де максимальна користь фулстеків.

Винятково Back-end чи Front-end вакансій стає дедалі менше. Всім частіше потрібні універсальні розробники, здатні закривати кілька аспектів розробки.

Шо це за вологі мрії фулстеків?

Full Stack розробник — це програміст, який може працювати з різними елементами кодової бази та технологіями.

Власне, в нас так і не розкрита тема що означає «може працювати».
Налагодити взаємодію між шарами, прописати якусь базову логіку, пофіксити баг на стику шарів (а якщо не пофіксити, то якісно вивчити проблему). Все це не відволікаючи інженерів із сусіднього шару, хіба що на код ревью. Це одне, це має право на життя.
Вологі мрії любителів заощадити на людях про те що та сама людина пів-спринта буде як не в себе пиляти фронт, а пів-спринта підпирати бек з тою самою ефективністю — права на життя не мають. Дійсно, потім отака писанина потрапляє на очі більш фаховим інженерам і з них несвідомо вилітає багато грубих слів.

ну успішний фулстек повинен вкладатись в 75% в фронт, особливо в візуал, і 25% в бек. Бо в вебі найчастіше міняється саме фронт, і фронт буде приности основний хліб. Бекенд якщо його нормально написали, він буде десятиліттями жити, як он копроліти на джаві, яким по 20 років.

Переваги для розробника
...
Підвищення конкурентоспроможності.

Це як мінімум спірно. Качка вміє літати, плавати й ходити по суші, але все це вона робить гірше за «спеціалістів в одній дисципліні». З роботою це працює так само: обираючи шлях «jack of all trades» ти автоматом отримуєш перк «master of none» — ти зможеш конкурувати за велику кількість фулстек позицій (більшість з яких при цьому доволі посередні), але завдяки відсутності спеціалізації, й як наслідок глибини, будеш програвати конкуренцію за «вузкі» вакансії (адекватний менеджмент намагається наймати піпл так, щоб заповнювати пробіли саме в глибині загальніх компененцій команди).

Років кілька тому я б додав щось типу «фул-стек шлях трохи виграє з точки зору того, що називається job safety», але сьогодні я й на цей рахунок дуже не впевнений, бо LLM наступають на п’яти й здатність вирішувати _типові_ задачки по всьому стеку перестає бути аж такою унікальною перевагою...

Є думка, що відсутність «спеціалізації» не є обовʼязковою для фуллстека.

Також «глибина» знань у певній галузі не залежить від того, чи ти фуллстек, чи чистий бекенд, а залежить від того, наскільки різноманітними і складними були твої таски.

Також «глибина» знань у певній галузі не залежить від того, чи ти фуллстек, чи чистий бекенд, а залежить від того, наскільки різноманітними і складними були твої таски.

З цим важко сперечатись, але диявол все ж таки в деталях імхо.

На мою думку мало вирішувати ці різноманітні задачи _колись_ - це потрібно робити систематично, бо досвід протухає з часом, набуті знання застарівають та й просто вивітрюються. Щоб цього не відбувалось, потрібно бути в тонусі постійно, систематично переключаючи контекст і вирішуючи задачі «на різних кінцях». Але це очевидно зменшує час, який ти можеш витратити на кожну сферу, ні? Мені здається доволі очевидним, що _при інших рівних_ людина, яка 100% часу присвячує одній темі, буде в цій темі набагато краще від того, хто приділяє їй тільки половину часу в кращому випадку.

Звісно, чим більше часу людина вариться в цій сфері, тим більше шансів, що епізодично доведеться поколупати дуже різні задачки в дуже різних напрямках. Це дозволяє з часом сформувати T-shaped профіль — мати непогане загальне уявлення про те як речі працюють енд ту енд (не обов’язково орієнтуючись при цьому в 100500 новомодних фреймворках), але при цьому виражену спеціалізовану експертизу. Якщо під фул-стеком розуміється щось подібне то я тільки за :)

По-перше, кількість вакансій саме на фулл-стек об’єктивно вища по ринку на даний момент часу. І хто б там що не казав, а подаватись на 20 вакансій приємніше ніж на 2.

По-друге, знання фуллстеку МЕГА допомагає на грумінгу і в загальному розуміти що хоче робити фронт, і як то правильно зрозуміти.
Бачив я вже вдоволь чистих фронтів, які прибігали в паніці, бо ASP.Net їм виплюнув помилку з беку, і вони не знають що робити і куди писати (хоча помилка супер дескриптивна і фіксається запуском 1 команди з Makefile).

По-третє, фуллстеки теж мають спеціалізацію. Я працював 90% бек, а хтось працював 70% фронт. Різна експертиза, різні бенефіти. Більше залежить від спектру задач які ти вирішував, а не від того, що в тебе в тайтлі написано.

Ну і якщо ти рухаєшся в ліди, engineering manager, etc, то від тебе будуть очікувати широку експертизу, включно з фронтом. Як ти збираєшся лідити команду з беків і фронтів, маючи лише вузькі знання з умовного C#?

По-перше, кількість вакансій саме на фулл-стек об’єктивно вища по ринку на даний момент часу. І хто б там що не казав, а подаватись на 20 вакансій приємніше ніж на 2.

Кожному своє. 20 краще за 2 тільки коли їсти нічого, в інших випадках значення мають умови, проект і ще багато чого (медіана зарплат фулстеків чомусь нижча за «вузькі» позиції — цікаво чому?)

Бачив я вже вдоволь чистих фронтів, які прибігали в паніці, бо ASP.Net їм виплюнув помилку з беку, і вони не знають що робити і куди писати (хоча помилка супер дескриптивна і фіксається запуском 1 команди з Makefile).

Це ти бачив не чистого фронта, це ти бачив чистого джуна :)

Ну і якщо ти рухаєшся в ліди, engineering manager, etc, то від тебе будуть очікувати широку експертизу, включно з фронтом. Як ти збираєшся лідити команду з беків і фронтів, маючи лише вузькі знання з умовного C#?

Взагалі-то протиставляти фулстек «вузьким знанням з умовного до-дієз» це трохи маніпуляція — в загальному випадку бекенд будь-якої системи складніше за фронтенд, з більшою кількістю «рухомих частин». Але най вже буде. Але як тільки ти підеш цим шляхом (з IC в менеджери), від твої «широкої експертизи» все одно за кілька років залишаться ріжки та ніжки. Ти будеш мати добре _загальне уявлення_ про те як речі працюють енд ту енд, але щодо предметної експертизи ти будеш покладатись на людей, яких наймаєш в команду. Ніяк інакше це не працює in the long run.

Мене колись зареджектили, бо написала, що можу працювати з фронтендом (якщо сильно потрібно), а їм потрібен був чистий бекендер — це стало приводом не допустити до технічної співбесіди xD

Ну що тут скажеш? Трапляються дивні люди які роблять дивні вчинки.

Full Stack: зайві ускладнення чи найближче майбутнє розробки

Актуальна тема ... для 2010-2015 років.
Описані «міфи» — це навішування квантора загальності автором статті і спростування саме квантора загальності. Сам придумав, сам поборов.

Фулстек часто цікавий (продуктовому) бізнесу, бо він спрощує досягнення бізнес результату для задач малої та середньої складності. Тому стартапи та невеликі продукти часто шукають фулстеків або «продукт інженерів» (десь років 5 воно активно мусолиться, ще 5 до того було трохи чути). Аутсорси та аутстави теж раді таке продавати (бо купують), хоча для перших є невелика проблема.
Проблема з фулстеком проявляється на ресурсному ринку. Виявляється, що Рубі+Реакт не продаси на дотНет+Ангулар, і на Джава+Реакт складно продати.

Для спеціаліста, окрім описаних вище проблем, є ще ризик, що часто (дуже не завжди) рейти у фулстеків нижчі за чистих БЕ, що пояснюється тим, що за рахунок фулствеків часто економлять. Тут основний контр приклад зводиться до різниці в типі помпаній, по типу «от я в стартапі з гарним фінансуванням як фулстек отримую більше ніж Вася в енрепразі».
Але це так було до 2022, зараз це могло змінитися. З того що бачу то попит на фулстеків впав менше ніж на БЕ, але тут знову ж є задача підібрати співпадіння всього стеку.

Fullstack — це від лукавого 😊. Або ти топовий бек із впевненим рівнем DevOps і джун-фрон, або навпаки...

Або ти топовий бек із впевненим рівнем DevOps і джун-фрон, або навпаки...

Дайте визначення «топовий», «впевненим рівнем» та «джун»?
Чому неможливий хоча б «впевнений рівень» на всіх трьох ділянках?

Гляньте скільки всього треба знати для

«впевнений рівень»

скажімо FE, там купа усього, починаючи від фреймворків (які релізяться кожні пів року), закінчуючи зоопарком бібліотек, а ще туди unit/e2e тести, nx (а бо аналоги), архітектура, мікро-фронтед, ssr, ssg, кеш, safari, ui-kit, performance, seo, знати все не реально.

скажімо FE, там купа усього, починаючи від фреймворків (які релізяться кожні пів року)

Так а для чого «знати» всі? Власне одного достатньо, щоб робити продукт.

а ще туди unit/e2e тести, nx (а бо аналоги), архітектура, мікро-фронтед, ssr, ssg, кеш, safari, ui-kit, performance, seo, знати все не реально.

Дайте визначення, як я просив. Бо те що ви перерахували — це просто неструкторовоий потік базвордів. Оптимізація під сафарі — це вже необхідний скіл? Тести, архітектура (мікрофронтенд, ссг, сср це фактично частина архітектури), кешування, оптимізація перформанса — це загальні речі. Білдтул, ну з 1 можна розібратись.
УІКіт ні разу не чув, але схоже на бутстрап. Складно класи накопіпастити з прикладів?

Ну і якщо «знати все не реально», то виходить що і спеціалізований ФЕ не зможе досягнути «впевнений рівень». Тобто всі ФЕ — джуни?

Seo це тобі сеошники скажуть що зробити. Розмітку робити може й неприємно але не прям важко. Safari баги знаходяться тестувальником і лікуються гуглом. Архітектуру треба знати всім... Тести не всі пишуть та й писати їх не так складно. Перший місяць обкатка а потім вже все ок... Що тут такого що не можна вивчити??

В тому то і прикол, ви пишете, це можна не знати, тут погуглю, тут хтось скаже що треба зробити і тд. Але якщо ви в цьому не варитесь постійно, виходить так, що після таких спеців приходиться переписувати майже все...

Але якщо ви в цьому не варитесь постійно, виходить так, що після таких спеців приходиться переписувати майже все...

А тепер прочитайте, що ви написали і подумайте чому воно нерелевантне відносно фулстека

Як .Net + Angular+Azure full stack можу сказати що це ад;) Тому що мажорні версії виходять чи не кожні пів року, при цьому параллельно виходять ще версії самих мов(C# та TS) і підтримувати це все важкувато. Хоча б повезло що на теперішньому місці роботи працюю чисто з беком:)

Бу-гагага Фул стек розробник це не людина комбайн) як на мене

О Тріп ти таки запрацювався)

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