- Споры вокруг Full-stack
- Разновидности Full-stack разработчиков. Стек языков и технологий для каждого
- Плюсы профессии Full-stack Developer
- Минусы профессии Full-stack Developer
- Как стать Full-stack разработчиком?
- Зарплаты Full-stack разработчиков
- Итоги
Обновлено 9 июня 2023 года
Full-stack разработчик (произносится “фулл стек”) — это некий мастер на все руки в мире веб-разработки. Ему под силу реализовать как клиентскую, так и серверную сторону приложения, которыми, обычно, занимаются FrontEnd и BackEnd разработчики раздельно друг от друга. Таким образом, Full-stack специалист способен в одиночку вести проект от начала до конца.
Еще в далеких нулевых и ранее не существовало подобного разделения обязанностей между разработчиками. Относительная простота разрабатываемого ПО, равно как и технологии того времени, позволяли держать процессы, которые сейчас выполняют разные люди, в одних руках. К примеру, в те времена IT-специалист, именуемый веб-мастером, и внешний вид сайта создавал, и серверную часть реализовывал, и размещал сайт на хостинге. То есть, Full-stack разработчики существовали и раньше, просто никто их так не называл.
Однако, IT-сектор не стоял на месте. Требования к программным продуктам росли, появлялись новые языки и технологии, менялись подходы к разработке. Древо IT начало становиться все более и более ветвистым, порождая новые специальности. Вместе с этим, профессия универсального бойца разбилась на два отдельных направления, а затем вновь возродилась с гордым названием “Full-stack Developer”.
Споры вокруг Full-stack
Не все так гладко, как кажется с первого взгляда. Множество опытных программистов и IT-специалистов высшего звена не признают данную должность по определению. “Почему?” — спросите вы. Ведь раньше были те же веб-специалисты, которые успешно совмещали обязанности современных направлений — фронта и бэка. Почему сегодня понятие Full-stack вызывает споры?
Распространено мнение, что Full-stack разработчиков не существует, а те, кто таковыми называются, на самом деле не соответствуют требованиям этой специальности.
Например, Сергей Немчинский — программист с 20-летним стажем, руководитель и владелец учебно-производственной компании FoxmindEd — в опубликованном видео на YouTube отзывается о Web Full-stack разработчиках следующим образом (ссылка):
“В принципе, в идеале, Full-stack разработчик — это классно и замечательно. Проблема в том, что… Таких не бывает. Фактически, всё, что мы имеем на рынке из тех людей, которые называют себя Full-stack девелоперами — это примерно 50% BackEnd девелоперов, которые немножко подучили FrontEnd и уже могут Angular или React скомпилировать и, соответственно, собрать-подключить — плюс немножко понимают в верстке — даже не на уровне Junior верстальщика. Они в большинстве случаев сделать хорошо, красиво не могут никак. Максимум, что могут — сделать так, чтоб кнопка нажималась.
Либо же Full-stack девелоперы — это оставшиеся 50% FrontEnd разработчиков, которые немножко выучили BackEnd; в большинстве случаев — какой-нибудь Node.js. Может быть PHP. Такой разработчик минимально умеет что-нибудь подрихтовать, но, опять-таки, говорить о том, что он сядет и напишет вам нормальное Full-stack приложение — нет, нет и еще раз нет.
(…)
Честно скажу, мне идея с объединением в Full-stack девелоперов кажется, с одной стороны, не очень удачной, потому что фактически мы получаем “ни рыба, ни мясо”. С другой стороны, рынок требует — значит, надо. Поэтому востребованность у Full-stack девелоперов, по большому счёту, чуть больше, чем у “чистых” BackEnd или FrontEnd разработчиков. Однако, рынок уже осознал, что они (Full-stack разработчики) в своем большинстве “ни рыба, ни мясо” и потому термин “Full-stack” начинает пропадать. Теперь просто считается, что это BackEnd разработчик с небольшим знанием фронта и, наоборот, FrontEnd разработчик с небольшим знанием одного из BackEnd-языков. Мне кажется, что так гораздо правильнее”.
Другие разработчики склоняются больше к тому, что Full-stack разработка — это ни что иное, как уловки бизнеса. Работодатель не желает переплачивать за двух разных специалистов, предпочитая более дешевого аналога, умеющего всё то же самое.
По сути, весь спор касаемо Full-stack разработчика завязан на скептицизме. Сторонники мифологичности данной профессии не верят в существование разработчика, способного хорошо реализовать как FrontEnd, так и BackEnd части, поскольку за обеими скрывается множество технологий и языков, а выучить всё и работать не хуже фронтендеров и бекендщиков — практически невозможно.
Те же, кто занимаются Full-stack девелопментом, парируют, указывая на большое количество времени, проведенного за разработкой, в ходе которого так или иначе приходится заглядывать по другую сторону баррикад и разбираться во всех процессах, которые сопровождают разработку всего проекта от и до. Ну а дальше дело техники — учишь необходимые инструменты, практикуешься и можешь самостоятельно работать над целым проектом. Конечно, познания во всех используемых языках и технологиях у Full-stack специалиста будут не столь глубоки, как у узкоспециализированных собратьев по цеху, но сделать полноценный рабочий проект с нуля, реализовав как BackEnd, так и FrontEnd ему будет под силу.
Разновидности Full-stack разработчиков
Вариаций Full-stack разработчиков, на самом деле, множество: PHP Full-stack Developer, Node.js Full-stack Developer, Java Full-stack Developer и так далее. Название, которое стоит в самом начале специальности, говорит о том, какой язык/платформа берется за основу во время реализации BackEnd части. Стек технологий FrontEnd-а практически всегда одинаков и отличается лишь используемыми JavaScript-фреймворками — Angular, React или Vue.js. А вот бекенд предоставляет гораздо больше возможностей для реализации своих амбиций.
Еще раз проговорим, что Full-stack Developer — это разработчик, который принимает непосредственное участие во всех этапах разработки веб-приложений — от создания клиентской части (визуальная часть + пользовательская логика) до реализации серверной (базы данных, серверная архитектура, программная логика). Какой стек технологий и языков находится в распоряжении данного специалиста? Если говорить о FrontEnd составляющей (клиентская сторона), то она у всех примерно одинакова:
- язык вёрстки HTML и язык стилей CSS;
- языки программирования JavaScript и TypeScript;
- препроцессоры SASS и LESS;
- фреймворк Angular//Vue.js или библиотека React;
- технологии DOM, AJAX, REST API, знания об интернете и веб-технологиях в целом;
- навыки адаптивной и кроссбраузерной вёрстки.
А что нужно знать full stack разработчику из серверного набора? Теперь разберемся с ответвлениями в бекенде, которые указывают на популярные языки и технологии, использующиеся во время реализации серверной стороны разрабатываемых веб-приложений.
Node.js Full-stack Developer
BackEnd составляющая (серверная сторона) может иметь различную начинку, в отличии от FrontEnd. Если говорить о Node.js Full-stack разработчике, то в качестве основного языка выступает JavaScript, а сам стек следующий:
- платформа Node.js;
- фреймворки Express.js, Nest.js;
- пакетный менеджер npm;
- Web Sockets;
- понимание REST API;
- другие специализированные технологии.
Java Full-stack Developer
Главный акцент делается на язык программирования Java и связанные с ним технологии. BackEnd-стек у такого разработчика должен быть следующим:
- язык Java + Java Core;
- веб-сервер Apache;
- инструменты для комфортного взаимодействия с БД – JDBC, Hibernate;
- веб-сервисы;
- фреймворк Spring и его популярные модули (Spring MVC, Spring Boot, Spring REST, Spring Web и т. д.);
- применение облачных сервисов Google Cloud, AWS или Azure;
- знание сервлетов, JSP (Java Server Pages);
- знание микросервисов.
ASP.NET Full-stack Developer
.NET разработчики имеют широкий инструментарий для самореализации в вебе. В качестве основного языка программирования они используют C#. Копилка знаний BackEnd части у ASP.NET Full-stack Developer-а должна содержать:
- язык C#;
- знание инфраструктуры .NET;
- платформа ASP.NET MVC / ASP.NET Core (Web API);
- Entity Framework (Core);
- облачный сервис Azure;
- язык T-SQL;
- понимание RESTful API;
PHP Full-stack Developer
PHP — классический язык веб-разработки. Типичный BackEnd-стек данного разработчика отличается от остальных своей компактностью. РНР в вебе уже достаточно давно, а потому ему многого не нужно, а достаточно лишь:
- собственно, сам язык PHP;
- фреймворк Yii2/Symfony/Laravel.
Python Full-stack Developer
Универсальность Python не знает границ! Не стала исключением и сфера веб-разработки. BackEnd-стек Python Full-stack специалиста следующий:
- язык Python;
- фреймворк Django/Flask;
- REST API;
- Web Sockets;
- навыки работы с ОС Linux и веб-сервером Nginx/Apache (возможно);
- опыт работы с облачными сервисами.
Также, помимо специализированных технологий, всем Full-stack разработчикам необходимо:
- знать систему управления версиями Git + сервис для хостинга IT-проектов GitHub;
- знать реляционные (SQL) и нереляционные (NoSQL) базы данных, уметь их проектировать;
- разбираться в протоколах HTTP, HTTPS и работе FrontEnd + BackEnd в целом;
- уметь оперировать языком запросов SQL и одной из СУБД — MySQL / PostgreSQL / SQLite, либо одной из NoSQL СУБД (MongoDB, Redis, Cassandra, например);
- уметь проводить тестирование приложений;
- осуществлять Code Review;
- использовать Docker;
- владеть английским языком на уровне Intermediate и выше;
- знать популярные паттерны программирования и уметь их реализовывать;
- иметь хорошее знание алгоритмов и структур данных.
Также, от Full-stack специалиста могут потребовать навыки мобильной разработки, если работодатель будет намерен портировать веб-приложение на соответствующие платформы.
Как видите, список необходимых языков и технологий для создания хорошей серверной составляющей веб-приложений достаточно внушительный. В следующей главе мы разберемся, какие преимущества и недостатки подстерегают тех, кто таки намерился связать свою профессиональную деятельность с Full-stack разработкой.
Плюсы профессии Full-stack Developer
Возможность самостоятельно вести целый проект
Очевидное преимущество разработчика данной направленности заключается в объединении двух течений — FrontEnd и BackEnd — в одном специалисте. Помимо того, что такой профессионал способен реализовать обе части веб-приложения, он может беспроблемно настроить их взаимосвязь, что является частым камнем преткновения между фронтендщиками и бекендщиками. Тем самым устраняются недопонимания и противоречия, которые бы неизбежно возникли между несколькими разработчиками, трудящимися над одним и тем же продуктом.
Вячеслав Лобода, Senior Full-stack PHP Developer, о своей профессии отзывается следующим образом:
“Часто при решении задач веб-разработки возникает необходимость вносить правки одновременно и во FrontEnd, и в BackEnd. Для этого можно нанять двух разных специалистов или одного Full-stack разработчика. Последний вариант позволяет сэкономить время на коммуникацию”
Данный отзыв, а также все последующие взяты из статьи на dou.ua “Карьера в IT: должность Full-stack разработчик”.
Высокая скорость разработки, возможность принимать собственные решения, минимальные траты времени на лишнюю коммуникацию
Видео курсы по схожей тематике:
Full-stack разработчик — это уже специалист достаточно высокого уровня, который способен принимать определенные самостоятельные решения, не тратя время на лишние обсуждения и согласования с другими разработчиками, ведь проект целиком и полностью находится под его крылом.
“Нравится, что могу создавать веб-приложения в одиночку, меньше задержек при работе. Например, когда работаешь как FrontEnd и нужно, чтобы BackEnd отдавал новые данные, ты просишь коллегу внести изменения, ждешь. Full-stack разработчику ждать никого не нужно. Взял и сделал как надо” — Геннадий Догаев, Web Full-stack Developer
Легкость поиска работы на фрилансе
На биржах фриланса заказчики зачастую ищут такого веб-специалиста, который сделает всю работу самостоятельно без привлечения дополнительных разработчиков. Кто, как не Full-stack девелопер лучше всего подойдет на эту роль, имея такое преимущество перед узкоспециализированными собратьями? Так что, выбрав данный путь, вы не останетесь без работы и сможете пользоваться всеми благами, которые дарит фрилансерство.
Большие карьерные возможности
Широкоформатность профессии Full-stack разработчика позволяет реализовать себя в любой сфере веб девелопмента. Вы можете в любой момент переключиться на более узкий профиль — чистую FrontEnd или чистую BackEnd разработку (горизонтальное развитие, углубление в конкретную сферу деятельности), а можете стать сильным тимлидом либо архитектором, который прекрасно разбирается во всех процессах создания веб-приложений и имеет богатый опыт за плечами (вертикальное развитие, продвижение по карьерной лестнице).
Также, Full-stack разработчик может найти успешное применение своим способностям в стартапах. Стартап-команды, как правило, имеют очень малый бюджет и им гораздо выгоднее иметь тех, кто может взять на себя обязанности нескольких людей. Таким образом, вы и новый опыт получите, и сможете поработать над чем-то свежим, интересным, ранее не виданным.
Ну, а касательно нужд рынка в Full-stack разработчиках даже упоминать не стоит — множество компаний желает заполучить широкопрофильного специалиста в свой штат. Количество вакансий для них меньше, нежели для фронтендщиков и бекендщиков, однако, и конкуренции тоже не так много.
Мало рутины и выгораний
Богатая на разнообразие деятельность Full-stack разработчиков снижает риски погрязнуть в однообразной работе. Вы владеете большим арсеналом знаний, что позволяет вам периодически переключаться между проектами и меньше уставать от применения одних и тех же технологий.
Легкость в развитии своего продукта
Вы имеете в распоряжении достаточно знаний и умений, чтобы самостоятельно создать собственный проект. В будущем вы сможете организовать свою команду для совершенствования и дальнейшего развития программного продукта, однако, уже на старте вы имеете все необходимое для того, чтобы реализовать ваши идеи.
Минусы профессии Full-stack Developer
Проигрыш узкоспециализированному разработчику на его поле боя
Full-stack девелопер владеет многими инструментами, но не может знать каждый настолько же хорошо, насколько отдельно взятый специалист. Данная профессия предусматривает подобное распыление и делает практически невозможным углубление в какой-либо язык или технологию. Выходит, вы умеете все, но хуже, чем разработчик конкретного направления.
Много времени на обучение
Технологий, которые должен освоить Full-stack специалист, много. Во время изучения, например, бекенда легко забыть то, что ты учил по фронтенду. Чтобы все знания и умения удерживать на хорошем уровне, необходимо тратить много усилий. Справиться с этим можно следующим образом: изучаете одну специальность, устраиваетесь на работу, а затем подучиваете второе направление. Выходит, вы не только текущие знания сохраняете, но и приумножаете их, двигаясь к фулл-стек разработке.
“Наращивайте компетенцию постепенно, с небольших задач. Пройдите курс по недостающему вам направлению, чтобы вникнуть в базовые принципы. А дальше осваивайте знания на практике по правилу Learning by doing” — Алексей Голубев, Team Lead Full-stack Developer в GlobalLogic.
Трудно следить за новыми тенденциями
Мир IT очень гибкий и переменчивый. Словно империи — возникают и рушатся новые языки, технологии, подходы в разработке ПО, техники написания и ревизии кода. Вам, как специалисту широкого профиля, необходимо быть в курсе всех новинок, ведь, в конце концов, этого и будут требовать от вас работодатели — использования современных инструментов и подходов.
Слишком много обязанностей
Работодатели иногда начинают выдвигать большое количество требований к фулл-стек специалисту. Ранее упоминаемый Full-stack разработчик Геннадий Догаев имеет следующую точку зрения на этот счет:
“Заказчики хотят свалить на одного человека слишком много. Например, уже встречаются объявления Node.js + React.js + React Native, то есть к веб-стеку добавляется ещё и мобильная разработка. Это влияет на качество знаний и конечного продукта: чем больше технологий нужно охватить, тем поверхностнее знаешь каждую из них. Кроме того, человеку не могут нравиться все направления одновременно. Мне из этого набора не очень интересна мобильная разработка”
Вами хотят залатать очень много дыр
Фулл-стек разработчику могут часто делегировать разнообразные задачи на рабочем месте. Дописать за кем-то код, что-то пересмотреть, пофиксить, доделать. Работать вместо FrontEnd / BackEnd разработчика, который ушел в отпуск — милое дело. А если вас наняли как альтернативу 5-ти разработчикам, то и вовсе будут держать как раба.
Сложные задачи
Вы знаете больше остальных, а значит, вам под силу разобраться с той или иной тяжелой задачей. По крайней мере, так думает тот, кто будет вам их раздавать.
Большая загруженность
Как вы уже заметили по предыдущим пунктам, Full-stack разработчику не дадут отдохнуть. Дел невпроворот — это точное описание его состояния на каждый рабочий день.
Сложности в замене
Этот пункт одновременно является и преимуществом, и недостатком. С одной стороны, вам тяжело найти замену и, соответственно, вас будут ценить. С другой — вам будет проблемно уйти в отпуск, ведь где взять замену? Тут и начнутся звонки в любое время суток, невозможность перекладывания некоторых задач на других разработчиков и прочее.
Как стать Full-stack разработчиком?
Ответ прост — выберите наиболее близкий вам вариант профессии и изучите необходимые технологии при помощи различных ресурсов, или пойдите на курсы full stack разработчиков. Советуем сделать свой выбор в пользу образовательной IT-платформы ITVDN — здесь вы сможете найти 90% всех нужных вам видео курсов по любому из выбранных направлений. В конце статьи мы оставим полезные ссылки на все специальности, которые помогут вам в изучении Full-stack ремесла.
К примеру, вам понравился BackEnd-стек Python разработчика — тогда вам подойдут 2 курса по специальностям:
С каждой программой обучения вы сможете ознакомиться подробнее, перейдя по оставленным ссылкам.
Зарплаты Full-stack разработчиков
Согласно июльской зарплатной аналитике от DOU.ua (опрошено 6605 украинских разработчиков), медианная зарплата FullStack разработчиков следующая:
- Junior – 980 USD;
- Middle – 2475 USD;
- Senior – 4750 USD.
Бесплатные вебинары по схожей тематике:
При этом ЗП у коллег по цеху – FrontEnd и Mobile разработчиков – приблизительно такие же. Единственные, кто заметно выделяются – BackEnd девелоперы уровня Middle и Senior. Их медианная оплата труда составляет 2800 USD и 5000 USD соответственно, что на несколько сотен долларов превышает зарплату фулстеккеров.
Если обратиться к международному веб-сайту по поиску работы Jooble (имеет украинские корни), то по состоянию на июль среднее предложение по зарплате для FullStack Developer в Киеве составляет 114 183 грн (приблизительно 3100 USD).
Согласно международному опросу Stack Overflow Developer Survey 2023 (более 90 000 респондентов со всего мира), годовая медианная ЗП FullStack специалиста составляет 71 140 USD (примерно 5930 USD в месяц).
Итоги
Full-stack Developer — универсальный веб-разработчик, который объединяет в себе силу FrontEnd и BackEnd направлений. Да, специализированные девелоперы сделают всю работу лучше, чем фулл-стек специалист, однако главный конек героя этой статьи — возможность разрабатывать полноценные веб-приложения самостоятельно, доводя их до полностью готового состояния. Как и любое другое, Full-stack ремесло имеет свои преимущества и недостатки. Однако, не зря говорили классики — терпение и труд все перетрут. Так что все в ваших руках!
Возможно, нас читают практикующие Full-stack разработчики? С удовольствием прочтем вашу точку зрения на позиции, изложенные в данной статье. Также, будем рады любым вопросам и замечаниям от всех читателей!
Ну а тем, кто решил выбрать профессию Full-stack Developer мы желаем быть упрямыми, оптимистичными и с неугасаемым огоньком жажды знаний в глазах.
Успехов и кодерского вдохновения на вашем пути!
Полезные ссылки
Весь каталог специальностей: IT-специальности на ITVDN.
FrontEnd составляющая: видео курс по специальности FrontEnd Developer.
BackEnd составляющая:
Онлайн обучение в группе с тренером по специальности FullStack Node.js Developer.
Статьи по схожей тематике