“Full Stack разработчик — это технический волшебник, который знает все языки программирования и технологии, а также прекрасно поет и танцует.”
Кто такой Full Stack разработчик?
Итак, кто такой Full Stack разработчик в традиционном понимании? Наиболее распространенное определение говорит нам, что это специалист, ответственный за разработку всех частей функционала системы, включая как пользовательскую сторону продукта (фронтенд), так и внутренний код, выполняющийся на распределенных серверах (бэкенд). Как правило, если в объявлении об открытой вакансии фигурирует словосочетание “full stack,” имеется в виду как раз то, что разработчик должен обладать знаниями и умениями в бэкенд- и фронтенд-разработке одновременно. Впрочем, многе компании идут дальше, и под “Full Stack разработчиком” понимают универсального солдата, который не только способен заниматься разработкой всех составных частей программного продукта, но также может взять на себя все остальное, от продакт-менеджмента до настройки операционной системы на серверах и починки офисного принтера. Фактически, в большинстве случаев от full stack разработчика требуется владеть на достойном уровне тем набором технологий, которые необходимы для успешного завершения проекта. Таким образом, в данном случае “стек” означает совокупность программных модулей и компонентов, объединенных вместе для достижения требуемого функционала.Почему эта тема так неоднозначна?
Спор о том, что реально должен представлять собой Full Stack разработчик, и водится ли вообще такой зверь в количествах, достаточных для того, чтобы выделять таких спецов в отдельную группу, ведется достаточно давно. Как отмечают опытные программисты, с новой силой он разгорелся после того, как представители компании Facebook, еще на заре ее становления в нулевых, в ходе выступления на одной из профильных конференций для разработчиков заявили, что берут к себе на работу только и исключительно Full Stack девелоперов. “Если традиционные определения Full Stack девелопера вызывают у вас недоумение, то все правильно. Это потому, что Full Stack разработчик — это нечто эфемерное. Не существует научной модели, описывающей, что такое “фулл стек.” Нет однозначного способа измерить уровень full stack разработчика по сравнению с другими такими же девелоперами. Единственный консенсус в отношении Full Stack-а состоит в том, что никто не согласен с единым определением сути данного явления. Именно поэтому все, что вы читаете по этому поводу является не более чем субъективным мнением,” — отметил Райланд Гольдштейн (Ryland Goldstein), опытный разработчик и архитектор ПО.Четыре столпа Full Stack разработки
Впрочем, хоть многие эксперты и утверждают, что Full Stack девелопер — понятие спорное, вакансий не становится меньше, скорее даже наоборот. Поэтому давайте посмотрим, знаниями в каких областях, как правило, нужно обладать, чтобы претендовать на такого рода позиции.Фронтенд разработка.
Обычно к фронтенду относят технологии и языки программирования веб-разработки, такие как HTML, CSS и JavaScript. Также включает JavaScript-фреймворки, такие как React, ну и все прочие технологии, относящиеся к “клиентской” стороне продукта.
С чего начать изучение:
Начать можно с фреймворков Create React App или Gatsby, с помощью которых довольно легко создать полноценное React приложение. Хорошей идеей будет освоить CSS препроцессоры, базовые инструменты для работы с CSS вроде CSS-in-JS, а также инструменты вроде Sass.
Бэкенд разработка.
К бэкенду относится весь код, работающий на серверах, включая приложения и API, которые обеспечивают работу сайта. Основными языками программирования для бэкенда как раз являются Java, Python, Ruby и другие. Помимо этого, в бэкенд разработку также входит управление базами данных, для чего требуется знание SQL.
С чего начать изучение:
Прежде всего, рекомендуется начать с углубления ваших знаний JavaScript, как своего рода связующего звена между фронтендом и бэкендом во многих случаях. В частности, хорошей идеей будет освоить NodeJS — это программная платформа, основанная на движке V8, превращающая JavaScript из узкоспециализированного языка в язык общего назначения.
Также для того, чтобы иметь максимально полную квалификацию в бэкенде, рекомендуется, помимо Java, постепенно осваивать такие языки программирования, как Python (в первую очередь), PHP и Ruby.
Проджект-менеджмент.
От проджект-менеджера, если вкратце, требуется управлять проектом, что включает множество задач, среди которых взаимодействие с клиентами, коллегами, сторонними подрядчиками и т.д. Словом все, что нужно для успешной реализации проекта. Сюда также входит планирование, принятие стратегических решений по работе над продуктом и т.д.
С чего начать изучение:
Для успешного развития в качестве проджект-менеджера не помешает изучить наиболее популярные инструменты в этой сфере. Основными можно назвать: GanttPRO (сервис для планирования и управления проектами с помощью диаграммы Ганта), Jira Software (популярная система для планирования и отслеживания agile-проектов), LiquidPlanner (инструмент для проджект-менеджмента в реальном времени), Basecamp (еще одна система управления проектами и совместной работы) и т.д.
DevOps.
Ну и, наконец, четвертым столпом фуллстек-девелопмента является знание DevOps. Обязанности DevOps-а могут сильно отличаться в зависимости от проекта, но как правило к ним относится все, что касается запуска программного кода в продакшн, включая, например, настройку серверов, на которых будет функционировать приложение, и обеспечение слаженной работы специалистов команды вместе с техническими решениями, которые они используют.
С чего начать изучение:
Сфера DevOps также включает в себя довольно много всяких инструментов. Вот те, с изучения которых имеет смысл начинать: инструменты управления исходным кодом (GitLab, GitHub, Bitbucket), CI/CD-инструменты (Ansible, Jenkins, Chef), тулзы для коммуникации и коллаборации (Slack и Microsoft Teams), а также сервисы облачных вычислений и хранения данных (AWS, Azure и GCP).
Помимо вышеперечисленных четырех базовых составляющих “полного стека,” он не был бы действительно полным, если бы не включал в себя также мобильную разработку, базы данных и 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 разработчиком?
А теперь коротко пройдемся по тем навыкам, умениям и технологиям, которыми нужно владеть для того, чтобы называть себя full stack разработчиком с полной уверенностью и без тени иронии.Языки программирования.
Full stack девелопер должен хорошо владеть сразу несколькими языками программирования. Прежде всего конечно идут основные: Java, PHP, C#, Python, Ruby, Perl и т.д. Словом, те наиболее популярные ЯП, на которых скорее всего будут писаться основные бизнес-процессы продукта. Конечно, выучить целый ряд таких языков в совершенстве будет крайне сложно. Но нужно по крайней мере освоить грамматику языка, который будет играть важную роль в разработке, а также хорошо знать, как структурировать, проектировать, реализовывать и тестировать проект на основе одного или нескольких ЯП.
Фреймворки и библиотеки кода.
Ну а хорошее знание основных языков программирования в большинстве случаев включает в себя и умение применять популярные фреймворки и библиотеки, такие как Java Spring, Hibernate, Python Django, PHP thinkphp, MyBatis и другие.
Фронтенд-технологии.
Важность знания фронтенд-технологий для фуллстек-разработчиков также велика, и со временем возрастает. Сегодня, когда удобство и общая “обертка” продукта становятся не менее значимыми, чем функционал, значительная часть общего успеха проекта ложится на плечи фронтненда. Для Full stack надо как минимум знать базовые фронтенд-технологии, то есть HTML5, CSS3 и JavaScript, а также владеть основными фронтенд-фреймворками и библиотеками, а именно JQuery, LESS, SASS, AngularJS и ранее упомянутым React.
Базы данных.
Базы данных являются еще одной важной составляющей “полного стека,” ведь любому продукту или сервису нужно хранить где-то информацию. Соответственно, фуллстек-девелоперу положено знать хотя бы парочку наиболее популярных систем баз данных и то, как с ними работать. Наиболее популярные на сегодняшний день системы баз данных — это MySQL, MongoDB, Redis, Oracle, SQLServer и другие. Среди них, MongoDB наиболее популярна в качестве базы данных для различных интернет-проектов, MySQL и Oracle — для бэкенда в сфере корпоративных продуктов, а Redis часто используется для кэширования и повышения производительности системы.
Менеджмент и soft skills.
А вот чтобы добиться хороших результатов в данной сфере, просто выучить какую-нибудь технологию или язык программирования будет недостаточно. Успешное управление проектами включает в себя множество составляющих, среди которых тайм-менеджмент, планирование, хорошие коммуникационные навыки и многое другое. А приобретается все это преимущественно через практику.
Базовые знания дизайна.
И наконец, знания дизайна, а именно UX/UI-дизайн, пусть и на базовом уровне, также входят в компетенцию full stack девелопера.
Кстати, вот неплохо составленный роадмап, призванный графически отобразить все разнообразие вышеперечисленных технологий.
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ