JavaRush /Java блог /Random /И швец, и жнец. Кто такой Full Stack разработчик и как им...

И швец, и жнец. Кто такой Full Stack разработчик и как им стать?

Статья из группы Random
И швец, и жнец. Кто такой 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 разработчик, как правило, имеет возможность оказывать более значительное влияние на проект в целом, по сравнению со узкоспециализированными программистами. Это для большинства повышает удовлетворение от работы, да и ЧСВ, опять же, цветет и пахнет. Тогда как понимание полного спектра технологий и навыков, которые требуется для успешной разработки, открывает порой действительно неограниченные возможности. Считается, что именно фулстек-разработчики чаще всего становятся успешными ИТ-предпринимателями. Да и вообще, человек с такой колодой скиллов уж точно не останется без работы, независимо от любых кризисов.
Комментарии (17)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Jonnius Уровень 7
30 апреля 2020
предлагаю правку: фразу "Наиболее популярные на сегодняшний день системы баз данных — это MySQL, MongoDB, Redis, Oracle, SQLServer и другие" изменить так "Наиболее популярные на сегодняшний день системы управления базами данных — это MySQL, MongoDB, Redis, SQL Server (Oracle, Microsoft, Postgres ) и другие".
Иван Парамонов Уровень 11
30 апреля 2020
Vaadin Framework - как вариант для тех, кто хочет оставаться в рамках Java, и не хочет учить другой язык для фронта. Но красоту без знаний CSS там не наведешь.
Mikola Уровень 36
28 апреля 2020
"ЧСВ цветёт и пахнет", но какая ложиться на Full Stack разработчика ответственность, как специалиста широкого профиля - страшно представить. Вероятность провала проекта ставит такого спеца в невыгодное положение
ram0973 Уровень 41
27 апреля 2020
Напишите плиз статью: блог на Kotlin(Java) + Spring + Vue.js + Postgresql + Docker + CI/CD на гитлабе + Fabric(или аналог) :)
Григорий Уровень 9
27 апреля 2020
ИМХО, если не тратить время на изучение 50 ЯП и связанных с ними технологий, а сосредоточиться на одном, то в итоге, как у спеца по одному языку, зп будет не меньше
Jimmy Уровень 39
27 апреля 2020
Юрий Уровень 31
27 апреля 2020
Как всё это выучить 😲😲😲
Вячеслав Уровень 23
27 апреля 2020
Это звездец!