JavaRush /Java блог /Random UA /І швець, і жнець. Хто такий Full Stack розробник та як ни...

І швець, і жнець. Хто такий Full Stack розробник та як ним стати?

Стаття з групи Random UA
І швець, і жнець.  Хто такий Full Stack розробник та як ним стати?  - 1Є у сфері комп'ютерної розробки позиція, яка є таємничою і малозрозумілою, але водночас принадно-привабливою. Це, як ви, напевно, вже зрозуміли, позиція Full Stack розробника. Таку контроверсійну репутацію вона заслужила з низки причин, про які нижче, але якщо коротко, все тому, що розробники та інші технічні фахівці не можуть дійти єдиної думки про те, що має бути справжнім Full Stack розробником. І швець, і жнець.  Хто такий Full Stack розробник та як ним стати?  - 2

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

Іен Пітерс-Кемпбелл (Ian Peters-Campbell),
досвідчений розробник та засновник софтверної компанії Stickbuilt.

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

Отже, хто такий Full Stack розробник у традиційному розумінні? Найбільш поширене визначення говорить нам, що це фахівець, відповідальний за розробку всіх частин функціоналу системи, включаючи як сторону користувача продукту (фронтенд), так і внутрішній код, що виконується на розподілених серверах (бекенд). Як правило, якщо в оголошенні про відкриту вакансію фігурує словосполучення "full stack," мається на увазі саме те, що розробник повинен мати знання і вміння в бекенд-і фронтенд-розробці одночасно. Втім, багато компаній йдуть далі, і під Full Stack розробником розуміють універсального солдата, який не тільки здатний займатися розробкою всіх складових частин програмного продукту, але також може взяти на себе все інше, від продакт-менеджменту до налаштування операційної системи на серверах та ремонту офісного принтера. Фактично, у більшості випадків від full stack розробника потрібно володіти на гідному рівні тим набором технологій, які необхідні для успішного завершення проекту. Отже, у разі “стек” означає сукупність програмних модулів і компонентів, об'єднаних разом задля досягнення необхідного функціоналу. І швець, і жнець.  Хто такий Full Stack розробник та як ним стати?  - 3

Чому ця тема така неоднозначна?

Суперечка про те, що реально повинен бути Full Stack розробник, і чи водиться взагалі такий звір у кількостях, достатніх для того, щоб виділяти таких спеців в окрему групу, ведеться досить давно. Як зазначають досвідчені програмісти, з новою силою він розгорівся після того, як представники компанії Facebook, ще на зорі її становлення в нульових, під час виступу на одній із профільних конференцій для розробників заявабо, що беруть до себе на роботу тільки і виключно Full Stack девелоперів. . “Якщо традиційні визначення Full Stack девелопера викликають здивування, то все правильно. Це тому, що Full Stack розробник це щось ефемерне. Немає наукової моделі, що описує, що таке “фулл стек. Немає однозначного способу виміряти рівень full stack розробника в порівнянні з іншими такими ж девелоперами. Єдиний консенсус щодо Full Stack-а полягає в тому, що ніхто не погоджується з єдиним визначенням суті цього явища. Саме тому все, що ви читаєте з цього приводу, є не більш ніж суб'єктивною думкою,” – зазначив Райланд Гольдштейн (Ryland Goldstein), досвідчений розробник та архітектор ПЗ. І швець, і жнець.  Хто такий Full Stack розробник та як ним стати?  - 4

Чотири стовпи Full Stack розробки

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

    Зазвичай до фронтенду відносять технології та мови програмування веб-розробки, такі як HTML, CSS та JavaScript. Також включає JavaScript-фреймворки, такі як React, та й інші технології, що відносяться до "клієнтської" стороні продукту.

    З чого розпочати вивчення:

    Почати можна з фреймворків Create React App або Gatsby , за допомогою яких досить легко створити повноцінний React додаток. Хорошою ідеєю буде освоїти CSS препроцесори, базові інструменти для роботи з CSS типу CSS-in-JS , а також інструменти типу Sass .

  2. Бекенд розробка.

    До бекенд відноситься весь код, що працює на серверах, включаючи додатки і API, які забезпечують роботу сайту. Основними мовами програмування для бекенду є Java, Python, Ruby та інші. Крім цього, в бекенд розробку також входить управління базами даних, для чого потрібне знання SQL.

    З чого розпочати вивчення:

    Насамперед, рекомендується почати з поглиблення ваших знань JavaScript, як свого роду сполучної ланки між фронтендом та бекендом у багатьох випадках. Зокрема, гарною ідеєю буде освоїти NodeJS - це програмна платформа, заснована на двигуні V8, що перетворює JavaScript з вузькоспеціалізованої мови на мову загального призначення.

    Також для того, щоб мати максимально повну кваліфікацію в бекенді, рекомендується, окрім Java, поступово освоювати такі мови програмування, як Python (насамперед), PHP та Ruby.

  3. Проджект-менеджмент.

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

    З чого розпочати вивчення:

    Для успішного розвитку як проджект-менеджер не завадить вивчити найбільш популярні інструменти в цій сфері. Основними можна назвати: GanttPRO (сервіс для планування та управління проектами за допомогою діаграми Ганта), Jira Software (популярна система для планування та відстеження agile-проектів), LiquidPlanner (інструмент для проджект-менеджменту в реальному часі), Basecamp (ще одна система управління) проектами та спільною роботою) і т.д.

  4. DevOps.

    Ну і, нарешті, четвертим стовпом фулстек-девелопменту є знання DevOps. Обов'язки DevOps можуть сильно відрізнятися в залежності від проекту, але як правило до них відноситься все, що стосується запуску програмного коду в продакшн, включаючи, наприклад, налаштування серверів, на яких функціонуватиме додаток, і забезпечення злагодженої роботи фахівців команди разом з технічними. рішеннями, що вони використовують.

    З чого розпочати вивчення:

    Сфера DevOps також включає досить багато всяких інструментів. Ось ті, з вивчення яких має сенс починати: інструменти керування вихідним кодом ( GitLab , GitHub , Bitbucket ), CI/CD-інструменти (Ansible, Jenkins, Chef), тулзи для комунікації та колаборації (Slack та Microsoft Teams), а також сервіси хмарних обчислень та зберігання даних (AWS, Azure та GCP).

    І швець, і жнець.  Хто такий Full Stack розробник та як ним стати?  - 5

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

Зарплати Full Stack розробників

Що стосується зарплат full stack девелоперів, то вони не так, щоб багато вище в середньому, ніж у колег з більш конкретною спеціалізацією в розробці. У США середня зарплата фулстек-розробників становить майже $75 тис. на рік, згідно з даними ресурсу PayScale. При цьому мінімальна зарплата (для програмістів на фулстек-позиціях) становить близько $46 тис. на рік, а максимальна — близько $114 тис. на рік. Що стосується ex-USSR країн, то в Україні, згідно з даними ресурсу Work.ua, середня зарплата full stack девелоперів становить 35 тис. гривень (близько $1300) на місяць, тоді як у Києві вона дорівнює 45 тис. (близько $1650). У Росії, згідно з цимДаним, зарплати фулстек-розробників, у середньому, становлять від 40 тис. рублів ($530) до 150 тис. рублів. ($2000). Якщо говорити про середні показники по світу в цілому, то фахівці, які працюють на позиції, яку ми розглядаємо сьогодні, заробляють близько $45 тис. на рік. А у Європі найвищі зарплати full stack девелопери отримують у Данії та Швеції. І швець, і жнець.  Хто такий Full Stack розробник та як ним стати?  - 6

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

А тепер коротко пройдемося за тими навичками, уміннями та технологіями, якими потрібно володіти для того, щоб називати себе full stack розробником з повною впевненістю та без тіні іронії.
  1. Мови програмування.

    Full stack девелопер має добре володіти відразу кількома мовами програмування. Насамперед, звичайно, йдуть основні: Java, PHP, C#, Python, Ruby, Perl і т.д. Словом, ті найбільш популярні ЯП, на яких, швидше за все, будуть писатися основні бізнес-процеси продукту. Звичайно, вивчити цілу низку таких мов досконало буде вкрай складно. Але потрібно принаймні освоїти граматику мови, яка відіграватиме важливу роль у розробці, а також добре знати, як структурувати, проектувати, реалізовувати та тестувати проект на основі одного або кількох ЯП.

  2. Фреймворки та бібліотеки коду.

    Ну а хороше знання основних мов програмування в більшості випадків включає в себе і вміння застосовувати популярні фреймворки та бібліотеки, такі як Java Spring, Hibernate, Python Django, PHP thinkphp, MyBatis та інші.

  3. Фронтенд-технології.

    Важливість знання фронтенд-технологій для фуллстек-розробників також велика, і з часом зростає. Сьогодні, коли зручність і загальна обгортка продукту стають не менш значущими, ніж функціонал, значна частина загального успіху проекту лягає на плечі фронтненда. Для Full stack треба як мінімум знати базові фронтенд-технології, тобто HTML5, CSS3 та JavaScript, а також володіти основними фронтенд-фреймворками та бібліотеками, а саме JQuery, LESS, SASS, AngularJS та раніше згаданим React.

  4. Бази даних.

    Бази даних є ще однією важливою складовою "повного стека", адже будь-якому продукту або сервісу потрібно зберігати десь інформацію. Відповідно, фуллстек-девелоперу належить знати хоча б кілька найпопулярніших систем баз даних і те, як з ними працювати. Найбільш популярні на сьогоднішній день системи баз даних - це MySQL, MongoDB, Redis, Oracle, SQLServer та інші. Серед них, MongoDB найбільш популярна як база даних для різних інтернет-проектів, MySQL та Oracle — для бекенду у сфері корпоративних продуктів, а Redis часто використовується для кешування та підвищення продуктивності системи.

  5. Менеджмент та soft skills.

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

  6. Базові знання дизайну.

    І нарешті, знання дизайну, а саме UX/UI-дизайн, хай і на базовому рівні, також входять до компетенції full stack девелопера.

    До речі, ось непогано складений роадмап , покликаний графічно відобразити всю різноманітність перерахованих вище технологій.

Висновки та перспективи

Як можна укласти з усього сказаного вище, щоб стати повноцінним і може навіть еталонним фулстек-розробником, доведеться витратити чимало часу і сил. Втім, постійна і регулярна практика дозволяє з часом освоїти і більш складні дисципліни. Головне — розуміти, куди рухатися, працювати над ключовими навичками та не припиняти самонавчання. А ось чи потрібно прикладати такі зусилля, щоб стати розробником, що реалізувався Full stack — це вже інше питання. Якщо говорити про переваги і недоліки такої роботи, то мінуси очевидні — треба дуже багато вчитися і розумітися на купі різних речей. Із плюсами складніше. Full stack розробник, як правило, має можливість значно впливати на проект в цілому, в порівнянні з вузькоспеціалізованими програмістами. Це для більшості підвищує задоволення від роботи, та й НСВ, знову ж таки, цвіте та пахне. Тоді як розуміння повного спектру технологій та навичок, які потрібні для успішної розробки, відкриває часом справді необмежені можливості. Вважається, що саме фулстек-розробники найчастіше стають успішними ІТ-підприємцями. Та й взагалі, людина з такою колодою скіллів точноне залишиться без роботи , незалежно від будь-яких криз.
Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ