Напевно ви чули про розробників у Front-end і Back-end. Перший відповідає за обкладинку програми — наприклад, головну сторінка сайту або інтерфейс мобільного додатку. Другий — пише код для сервера, системи безпеки даних, налаштовує вивантаження фронтенду на сайт або в застосунок. Робить так, щоб робота фронтенда працювала.
Програмісти, які роблять і те, і інше — full-stack розробники. У статті розповімо: хто це, чим займаються, яка зарплата і кар'єрні можливості.
Особливості професії — не тільки в знаннях front і back-частин
Розглянемо на прикладі. Уявіть — ви записалися на прийом до терапевта. Це лікар, який знає про все потроху. Він може поставити попередній діагноз або призначити лікування при застуді, алергії, виписати вітаміни. Він дивиться на проблеми загалом:
- У вас серцебиття підвищене. Тримайте талон до кардіохірурга. Він детальніше огляне вас і випише курс лікування.
- Що я вам зараз сказав? Не почули? Записують до отоларинголога.
Терапевт розуміє: він не може допомогти з конкретною проблемою. У нього немає права ухвалювати рішення за кардіолога чи отоларинголога.
Ось інший приклад:
-Ви застудились. Горло червоне, очі сльозяться. Випишу вам курс вітамінів і противірусних препаратів.
У прикладі — звичайна застуда. У терапевта достатньо знань і повноважень, щоб поставити діагноз і прописати лікування. Йому не потрібно бути кардіологом для такого простого завдання у світі медицини.
Full-stack програміст — терапевт в IT. Це людина, яка впорається з проектом наодинці. Може написати код для сервера, зібрати front-end, продумати архітектуру і вести переговори з клієнтами.
Але він не вузькоспеціалізований фронтендер — для складних завдань навряд чи підійде. Далі розповімо, чому.
Завдання розробника — зібрати пазл поодинці
Дехто вважає, що full-stack обмежується знаннями front і back-технологій. І це правда — якщо клієнту потрібно створити сайт на Wordpress за шаблоном. У цьому проєкті знадобиться full-stack Wordpress Developer.
Для хорошого фулстека цього може бути недостатньо. Ось що ще може стати в нагоді.
DevOps. Після узгодження проекту програміст може працювати над ним і далі — шукати помилки, випускати оновлення. Це називається налагодженням коду. Тут допоможуть навички і програміста, і системного адміністратора — DevOps.
Архітектура додатків. У великих проектах розробник може замінити архітектора. Наприклад, з ідеї клієнта продумати каркас для мобільного застосунку. А після узгодження написати код і запустити проект.
Уміння вести переговори. Від цього залежить рівень зарплати. Порівняйте два приклади.
- Програміст пише код за технічним завданням. Здає роботу і починає новий проект, як на конвеєрній стрічці.
- Інший програміст пише код, погоджує роботу з клієнтом та іншими відділами. Якщо потрібно — презентує роботу людям, далеким від програмування. Вносить правки за запитами. Якщо правки зайві — пояснює свою думку.
У якого фахівця зарплата більша?
Основи дизайну, UX\UI. Наприклад, людині потрібно перенести готовий дизайн на сайт. Веб-дизайнер — новачок, тому припустився багатьох помилок:
-
Кольори кнопок і форм зливаються.
-
Розміщення шапки сайту не за правилами.
-
Людина не думала про зручність для користувача. Наприклад, щоб замовити товар, потрібно гортати в кінець сайту. А так роблять не багато хто.
Перенести дизайн за шаблоном не вийде без проблем, які доведеться виправляти не дизайнеру, а програмісту. Перший оплату отримав і займається іншими завданнями.
Якщо розробник вчасно вкаже на проблеми клієнту, то допоможе зробити проект кращим: виправить дизайн на етапі перенесення або підкаже хорошого веб-дизайнера.
Які інструменти потрібні fullstack
Front-end. Потрібно обов'язково знати HTML і CSS — для верстки веб-сторінок. Для переходів, форм та інших інтерактивних елементів потрібно знати ще одну мову програмування. У пріоритеті JavaScript.
Ще стане в нагоді один із фреймворків — шаблонів коду. На вибір: Angular, Vue.js і React. Достатньо одного, бо на інші у фулстека не вистачить часу.
Back-end. Залежить від завдань програміста:
-
Web-проекти, типу сайтів — PHP;
-
Розробляємо програму для бізнесу — Java.
-
Останнім часом популярні Node.js, Ruby, Python та інші.
Бази даних. Після розробки сервера проекту потрібна база даних — місце, де зберігають папки з файлами коду.
Бази діляться за рівнем упорядкованості файлів: структуровані (SQL) і неструктуровані (NoSQL). Для перших підійдуть PostgreSQL, MySQL, MicroSoft SQL Server, Oracle Database. У другому варіанті популярна база MongoDB.
Система контролю версій Git. Програма або мобільний застосунок постійно оновлюється. Одна версія виходить за іншою. Щоб зберегти дані з минулих версій, розробники користуються системою контролю. Наприклад — git від GitHub.
У систему контролю версій можна завантажувати код. Також це знадобиться, якщо над проектом працює команда розробників.
Переваги професії
Фулстек — мультифункціональна людина. Він може написати код для сервера, або перенести дизайн на фронтенд. Справляється із загальними завданнями, як терапевт у лікарні.
Fullstack-розробнику легше знайти роботу. З величезним багажем знань можна влаштуватися як на позицію фулстек, так і на окрему спеціальність. Наприклад, back-end-developer зі знаннями front-end. Або навпаки.
З фулстеків виходять хороші тімліди. Фахівці розуміють весь процес запуску продукту: від стратегії до усунення багів і випуску оновлень. Їм простіше спілкуватися з командою, ставити завдання і стежити за їх виконанням.
Можна почати з фулстек, а потім заглибитися в одну нішу. Хороший варіант, коли ще не розумієш коло інтересів: front-end, back-end або бази даних. Навчання fullstack розробки займе більше часу, ніж на одній спеціальності. Але в людини з'являється кілька варіантів, куди рухатися далі.
Економія ресурсів для клієнта. Допомагає на невеликих проектах — клієнт тестує ідею або ж запускає стартап. Грошей на фронтендера і бека в нього немає. Дешевше заплатити фулстеку.
Менше часу на розробку продукту. Fullstack-розробник — один у полі воїн. Йому не потрібно надсилати запити на правки для front-end, а потім вносити їх у базу даних. Іноді на такі правки йдуть місяці, якщо їх довго обговорювати і перекидатися запитами. Він не чекатиме, а зробить усе сам.
Недоліки професії
Фахівець знає всього потроху. Практика показує: фулстеки знають багато з різних спеціальностей. Тому вони програють перед вузькоспеціалізованими програмістами.
Згадайте приклад із лікарні: з терапевтом і кардіологом. Терапевт може направити на обстеження. Але поставити точний курс лікування і діагнозу не зможе, оскільки не вчився конкретно на кардіолога.
У фулстека не вистачить часу, щоб вивчити всі спеціальності досконально. Потрібно знати і фронт, і бек, і бази, і фреймворки. Для простих завдань це корисно, але для великих проектів частіше беруть кількох програмістів — фахівців у своїй ніші.
Стереотипи. До фулстек-розробників іноді звертаються з пропозиціями: «У нас є ідея, продукт. Ти ж fullstack — усе вмієш, тож розберешся». Хоча в реальності спеціалізуються на конкретній ніші: fullstack розробник на javascript; wordpress, mobile-dev, web. Пояснити це буває важко.
Немає зони відповідальності. У компаніях часто не фіксують конкретні завдання програміста: наприклад, відповідає за все на JavaScript і MongoDB. А що таке «все» — розібратися важко. Якщо потрібно замінити фахівця, доводиться розкладати роботу по поличкам. Це викликає складнощі.
Вигорання. Якщо звалити на себе великий проект або кілька менших, можна не розрахувати сил. Від цього людина погано спить, втомлюється. Порушується ритм життя. У результаті страждає не тільки здоров'я фахівця, а й якість коду.
Доведеться весь час вчитися. Виходять нові фреймворки, оновлення мов програмування, змінюються тренди. Тому потрібно перенавчатися не в одній ніші, а в усьому одразу. Хороші фулстеки — це люди, які отримують задоволення від навчання.
Скільки заробляє fullstack-програміст
Зарплата розробника залежить від кількох факторів. Наприклад, працювати на PHP зараз дешевше. А програміст у банківському секторі може отримувати в півтора раза більше, ніж у сфері розваг. Ось невелика статистика.
—В Україні середня зарплата за вакансією «fullstack розробник» — 2-3 тисячі доларів щомісяця (дані з work.ua за 2022 рік).
—Якщо працювати на американську компанію — фахівці з досвідом роботи до року отримують 6300 доларів на місяць (дані з indeed).
JavaScript зараз у пріоритеті серед європейського ринку IT, а на PHP заробляють менше.
—Якщо працювати на фрілансі — від клієнтів можна отримувати 130-8000 доларів за проект (інформація з сайту UpWork за 03.10.2022).
З чого починати шлях у фулстек
Новачкові. Почати можна двома способами:
-
Засвоїти одну спеціальність досконально, а інші — під час роботи. Наприклад, вибрати курс «Front-end-розробка». Отримати диплом і поступово вникати в завдання суміжних спеціальностей.
-
Навчатися в комплексі — в Академії працює програма «Розробка програмного забезпечення». Вчимося технологіям для програм, мобільних додатків, Web, системам безпеки. Але це довше для всіх спеціальностей — навчання триває 2.5 роки.
-
Окрім цього є окремий, новий курс саме для навчання full-stack розробників - https://cloud.itstep.org/full-stack - на якому ви можете стати тим самим універсальним спеціалістом в розробці.
Коли знаєш front-end або back-end: краще одразу не занурюватися в нові технології. Якщо хапатися за все одразу, не вистачить часу на роботу, особисте життя. Мотивація теж згасає від складності завдань.
Почніть із відео або книжок. Краще — спілкуватися з фахівцями з інших ніш: у соціальних мережах, на конференціях. Якщо ви вчили front-end, підходьте до фулстеків або back-end-розробників. Запитуйте, з чого вони починали і що вчили першим. Це допоможе зануритися в контекст, набути першого досвіду.
Коли захопилися професією, можна шукати курси. Наприклад, людині зі знаннями Front-end потрібно вчитися серверного програмування, базової аналітики. Підійдуть курси «Розробка на Python» і «DevOps (базовий)».
А для людини зі знаннями Back-end — варто опанувати нові навички з програми «Front-end-розробка». Далі засвоюйте знання за принципом: «Вчимо для роботи під час роботи» (learning by doing).
Як закріпити знання фулстек — розробити проект з нуля: від стратегії до кодингу і презентації перед колегами, аудиторією. Після декількох успішних проектів засвоїте концепцію або ж зрозумієте, що це не ваше.