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, 12:43
предлагаю правку: фразу "Наиболее популярные на сегодняшний день системы баз данных — это MySQL, MongoDB, Redis, Oracle, SQLServer и другие" изменить так "Наиболее популярные на сегодняшний день системы управления базами данных — это MySQL, MongoDB, Redis, SQL Server (Oracle, Microsoft, Postgres ) и другие".
Иван Парамонов
Уровень 11
30 апреля 2020, 11:30
Vaadin Framework - как вариант для тех, кто хочет оставаться в рамках Java, и не хочет учить другой язык для фронта. Но красоту без знаний CSS там не наведешь.
Евгений
Уровень 41
7 мая 2020, 22:29
Vaadin подходит для старта фронтэнд разработки или для небольших задач, например админка приложения но не более. Чем больше проект тем сложнее его поддерживать. Лучше уж тогда Angular сразу использовать и не заморачиваться с Vaadin.
Mikola
Уровень 36
28 апреля 2020, 11:15
"ЧСВ цветёт и пахнет", но какая ложиться на Full Stack разработчика ответственность, как специалиста широкого профиля - страшно представить. Вероятность провала проекта ставит такого спеца в невыгодное положение
ram0973
Уровень 41
27 апреля 2020, 20:51
Напишите плиз статью: блог на Kotlin(Java) + Spring + Vue.js + Postgresql + Docker + CI/CD на гитлабе + Fabric(или аналог) :)
Григорий
Уровень 9
27 апреля 2020, 20:28
ИМХО, если не тратить время на изучение 50 ЯП и связанных с ними технологий, а сосредоточиться на одном, то в итоге, как у спеца по одному языку, зп будет не меньше
Jimmy
Уровень 39
27 апреля 2020, 15:18
Юрий
Уровень 31
27 апреля 2020, 11:30
Как всё это выучить 😲😲😲
Aleksandr Liadov
Уровень 40
27 апреля 2020, 11:57
начни с чего-то одного ) например с Java 😄
Lev Afanasov
Уровень 28
27 апреля 2020, 12:07
как раз всю статью читал и думал - выучить один язык програмирования и разобраться в одной узкой специализации по максимуму, а дальше слоями накладывать остальные области
hidden #2144272
Уровень 9
28 апреля 2020, 11:23
Я тебя уверяю, месяцок курсов на Python и ты забудешь обо всех проблемах) Мне как-то надо было из pdf-документа "выдрать" один лист, я не стал качать специализированные ПО, я прост нагуглил соответствующую библиотеку в python и за 15 мин в 10 строчек реализовал задуманное.
Pavel
Уровень 40
29 апреля 2020, 10:48
Самое смешное, что тебе все равно так или иначе многое из этого придется если не "выучить", то как минимум потрогать, даже если хочешь быть бэкенд-разработчиком. Кстати, если хочешь чего-то добиться в Java и еще не трогал фронтенд, то на 22-м уровне самое время пойти читать про HTML, CSS и JS, потому что иначе при попытке сделать что угодно или утроиться на работу ждет приземление с небес на землю. Правда в том, что чистой работы с бэкендом или фронтэндом не бывает так же, как настоящих фуллстэк. :)
Юрий
Уровень 31
29 апреля 2020, 15:13
какие курсы по Python посоветуешь?
hidden #2144272
Уровень 9
30 апреля 2020, 08:47
Например эти: 1. Программирование на Python (stepic) 2. Основы программирования на Python (coursera) ... таких много Далее уже то что тебе нужно(по работе, например): Python для анализа данных (coursera) Spark (платный, очный) Scala(платный)
Pavel Kulkov
Уровень 4
30 апреля 2020, 12:02
Просто попробуй свой проект в одиночку от идеи до реализации протащить, а потом его продать целевой аудитории. В частном случае поднимаешь локальный виртуальный сервер, накатываешь на него веб-сервер, базу данных, среду разработки. Пишешь код, тестируешь. Упираешься в ресурсы, делаешь бэкап, переносишь все на другую машину, возможно и на другу БД, веб-сервер, язык... И вот вроде уже что-то есть толковое, пора в продуктив выкатывать и встает вопрос куда? AWS, Azure, Яндекс.Облако или вообще свой сервак дома держать и оборонять. А потом как организовать процесс разработки и быстрого деплоя изменений на тестовую среду и на продуктивную(DevOps), а ведь эти среды должны быть идентичными и атвоматизировать все нужно. А потом еще пойди всем расскажи и объясни что, как и для кого твой продукт. Наладь обратную связь с пользователями, собирай из них новые идеи, баги и т.п. и снова отправляй в разработку и т.д. по кругу. После первого круга уже можно думать о себе как о фулл-стэк разработчике, но это не точно ))
Юрий
Уровень 31
1 мая 2020, 05:56
Спасибо
Вячеслав
Уровень 23
27 апреля 2020, 10:48
Это звездец!