Разговариваем с экспертами о ценности fullstack-разработчиков и их влиянии на рынок труда. Попробуем ответить сразу на несколько ключевых вопросов, которые касаются универсального подхода к разработке программных решений.  

Сложно сказать однозначно про fullstack, хорошо это или плохо…

Георгий Андрончик, Architect в Almus.

Прежде всего давайте определимся с понятием fullstack разработчик. Как правило, под этим термином подразумевается специалист с компетенциями во frontend и backend, те способный полностью разработать web приложение.

Сложно сказать однозначно про fullstack, хорошо это или плохо. Все зависит от контекста. Само собой, чтобы хорошо разбираться в широком спектре технологий, нужно больше знаний и опыта чем, чтобы разбираться в узком спектре. Потому можно сказать следующее — если у специалиста немного опыта, то он не может в совершенстве выполнять эту роль. Из этого следует, что-либо специалист должен иметь много опыта и соответственно будет иметь высокую цену и будет встречаться на рынке труда редко, либо менее опытный сотрудник будет иметь поверхностные знания. Но не для каждого проекта нужны глубокие знания. Тем более в последние годы спрос на таких специалистов растет и соответственно технологии тоже не стоят на месте. Например, на JavaScript можно делать все что угодно и таких специалистов много. Технология довольно простая, но имеет ряд ограничений. Но она хорошо подходит для молодых динамичных проектов. Соответственно если вы ищете бизнес модель и проверяете много гипотез, то это с большой долей вероятности подходящий для вас выбор.

Хорошо ли чтобы универсальный специалист участвовал проекте? 

Однозначно да. Если это опытный специалист. Для того чтобы разработать систему, нужен человек с общим видением архитектуры. Это может быть архитектор, CTO или fullstack инженер. Если такого человека нет, но у вас будет много кусков проекта, которые плохо дружат друг с другом.

Касательно тренда на fullstack инженеров можно сказать следующее. Тренд безусловно есть и он растет. Это видно как по рынку труда, так и по развитию технологий. Безусловно все движется в сторону универсальности. Технологии становятся более высокоуровневыми, многие вещи уже не требуют участия человека и глубоких знаний. Так же не забываем, что текущий глобальный тренд – искусственный интеллект, который займет свою роль и в разработке ПО и позволит человеку программировать на гораздо более абстрактном уровне, что естественно коррелирует с fullstack.

Практика показывает, что команды фронтенда и бэкенда отлично коммуницируют 

Али Жагпаров, Software Engineer в Devexperts.

Фронтенд и бэкенд – два очень сложных направления, поэтому быть хорошим специалистом в обоих направлениях очень сложно. Это одна из причин, почему фулстэк разработчики не могут повлиять на нехватку кадров в IT. Как правило, человек будет иметь пробелы в одном из направлений, а это может сказаться на качестве системы в целом.

Однако fullstack специалисты востребованы в небольших компаниях, где необходимы либо только поддержка, либо планируется несложная разработка бэкенд или фронтенд части. Практика показывает, что команды фронтенда и бэкенда отлично коммуницируют и это не требует привлечение фуллстэк специалиста. Fullstack специалисты получают зарплату больше чем узконаправленные специалисты, но обратной стороной медали является поиск работы, так как стек технологий, который знает специалист, должен совпадать со стеком технологий, который используется в компании. Это заметно уменьшает количество компаний, куда специалист можете подать свое резюме.

Любой уважающий себя бэкенд-разработчик знает, как работает фронтенд

Светлана Кузнецова, руководитель направления Web глобальной ИТ-компании SimbirSoft.

Настоящий фулстек – это находка, таких специалистов на рынке очень мало. И этому есть простое объяснение: разработчики чаще концентрируются на чем-то одном – бэк или фронт. С другой стороны, каждый опытный разработчик уже отчасти фулстек. Любой уважающий себя бэкенд-разработчик знает, как работает фронтенд и может при необходимости сделать среднего уровня задачи. Если фронтендер совсем не имеет представления о том как отправляется и обрабатывается запрос сервером, как backend отдает и обрабатывает данные – это, скорее, джун.

Когда разработчик может делать в проекте любые задачи – это, действительно, удобно. В небольших компаниях, специализирующихся на относительно мелких проектах, чаще всего все разработчики–фулстеки. По крайней мере, они ими становятся в процессе работы. С другой стороны, переключение на совершенно разные технологии снижает фокус на каждой из технологий и, как следствие, глубина освоения оказывается ниже. Из нашей практики – специалисты–фулстеки уровня мидл как во фронтенде, так и в бэкенде очень востребованы.

Спрос на full-stack разработчиков высок

Алексей Алексеев, PHP Developer в Sanador IT.

Спрос на full-stack разработчиков высок, потому что они являются ценным активом для любой компании. Их обширные знания позволяют им быть гибкими и адаптируемыми, что является важнейшими навыками для работы над программными продуктами как в мире стартапов, так и в других странах. 

Большинство full-stack разработчиков очень универсальны и несут большую ценность для компаний, однако попадаются и такие специалисты, которых сложно назвать универсальными. Их мало, но они есть.

Да, я верю в хороших универсальных специалистов. Дело в том, что действительно талантливому разработчику, пользующемуся большим спросом в крупнейших современных компаниях, очень необходимо иметь серьезные практические знания всего стека разработки. 

Внешняя разработка, промежуточные сети и серверные системы должны хорошо работать вместе. Каждый стык между ними, каждый интерфейс – потенциальное место недостатков. В результате этих пересечений могут возникнуть проблемы безопасности, взаимодействия с пользователем и проблемы с обработкой данных. Именно поэтому универсальные full-stack разработчики являются настоящей находкой, а не проблемой. 

Fullstack разработчики – это многопрофильные люди. Это те, кто умеет планировать свою рабочую загрузку и те, кто способен заменить нескольких узкопрофильных Junior программистов. Более того, этот человек в будущем может перерасти в тимлида, что несет дополнительную ценность для компании или стартапа. 

Компании нуждаются в fullstack разработчиках по нескольким причинам. Fullstack разработчики могут работать с несколькими технологиями, поэтому они могут справиться с большим количеством аспектов проекта, чем обычный программист. Они сокращают расходы компаний, поскольку могут выполнять работу многих специалистов в одиночку. И это большой плюс, особенно для стартапов.

Такой человек сэкономит компании больше, чем найм 2 или 3 узкопрофильных программистов. Даже несмотря на то, что fullstack-разработка считается одной из самых высокооплачиваемых. Высокая оплата труда fullstack разработчиков объясняется в первую очередь ее востребованностью и нехваткой квалифицированных специалистов в этой области. Fullstack разработчик помогает компании сэкономить не на короткой дистанции, а на длинной.

Многие стартапы предпочитают full-stack разработчиков, поскольку они могут управлять всеми технологическими потребностями компании с самого старта работы. Если для разработчика важно продвижение по карьерной лестнице, он знает, что full-stack разработчики должны обладать широким взглядом на проекты, поэтому они должны быть хорошо подготовлены к управлению командой. Тем не менее стать fullstack разработчиком очень трудно. Это требует от человека понимания всех аспектов и особенностей разработки. Мне кажется, только действительно талантливые к разработке люди могут достичь хорошего уровня в full-stack разработке.

Программист никогда не бывает на 100% универсалом

Александра Обшатко, PR-менеджер кадрового агентства “КАУС”.

Наш опыт показывает, что программист никогда не бывает на 100% универсалом. Чаще всего все fullstack-разработчики на 70% знают бэкэнд и на 30% – фронтэнд. Изначально были просто разработчики и просто верстальщики. А некоторую часть задач можно было “скинуть” на пользователей. Потом появился JavaScript-программисты, которые стали делать сложные вёрстки. И компании начали разделять front- и backend разработку.

Fullstack-разработчики чаще всего работают на проектах, где frontend лёгкий, сайт несложный, легко обновляется, а сам продукт внутренний. Есть фреймворки, не нужны люди, которые будут делать только frontend.

Тогда fullstack-программист – то, что нужно.

Но если говорить о сложных проектах, например, биржах, где много панелей, вносятся частые изменения, невозможно работать качественно без отдельных front- и backend разработки.

Технические собеседования и на специалиста уровня Senior, и уровня Junior на 70% не качаются инструментов (что на фронте, что на бэкэнде). И всегда говорят о специализации в виде опыта.

Потому что большое количество времени разработчик тратит на работу с документацией. В программировании не бывает готовых решений, есть подходящие или нет. Потому они могут подходить под один инструмент или нет. Тоже касается и fullstack-программистов. В одном проекте — это идеальный вариант, но во многих случаях сам продукт компании требует разделения разработки на front и back части.

Такой программист снимает проблему взаимодействия между frontend и bacjend-разработкой. Так как многие изменения, доработки касаются обеих частей проекта. Но, опять, это работает лишь в том случае, если сам проект не трудоёмкий, и одному человеку под силу решить обе задачи.

Чаще всего проекты делаются на множестве языков (потому и требования в вакансиях размыты — если соискатель знает хотя бы 30% из ожидаемого, его берут, так как уже с этим он будет загружен работой). А следовательно, такие большие проекты невозможно вести одному человеку и целесообразнее делить его на отдельные части.

Фулстек-разработчик стоит по-разному и многое зависит от его специализации – php, java и т.д. Чаще всего не зарплата у такого специалиста становится преимуществом, а большее количество вакансий. У специализированных, редких специалистов зарплата больше. Чем шире специализация, тем ниже зарплата. Отчасти это связано с тем, что работодатель понимает, за что он платит, когда разработчик делает что-то одно.

При найме разработчика на fullstack важно оценивать его с точки зрения опыта. И по каждому проекту отдельно уточнять, что именно он делал в нём.

В IT-индустрии каждая технология постоянно меняется, а кроме этого появляются новые. И если программист перестаёт развиваться в каком-либо направлении, он теряет свою ценность на рынке труда. А когда ты отвечаешь за несколько разных направлений работы одновременно, соответствовать требованиям времени ещё сложнее.

Универсальность — не всегда хорошо 

Алекс Концов, основатель международной компании Involta.

Универсальность — не всегда хорошо. С одной стороны, универсальный специалист понимает больше нюансов разрабатываемого продукта, но с другой стороны, на мой взгляд, нужно уметь грамотно делегировать задачи. Часто заказчики с удовольствием нанимают одного универсального fullstack-разработчика, предпочитая его 3-5 узконаправленным специалистам. Это экономит расходы клиента и позволяет такому разработчику быть востребованным.

Грамотный fullstack-разработчик должен знать все о базовом управлении серверами, архитектуре базы данных и программного обеспечения, Back End и Front End разработке, дизайне, верстке, тестировании и, наконец, о мобильной разработке. Fullstack-разработчик поможет определить и подобрать технологию, а также приблизительные сроки реализации всего проекта. Но если проект достаточно сложный, то потребуется участие нескольких узкопрофильных специалистов, чтобы добиться нужной цели.

Если есть узконаправленные специалисты, то лучше отдавать задачи им. Такие специалисты глубже изучают свои профили, а fullstack-разработчик охватывает все области, и с большой вероятностью, одна или несколько из них будут «проседать».

Узкоспециализированный разработчик концентрируется в рамках одного направления и за счет этого поддерживает и развивает свои навыки. Fullstack-специалисту приходится распыляться на другие задачи, тем самым не имея должного опыта в разных сферах. Знание хотя бы небольшой части каждого из направлений не сделает fullstack-разработчика отличным специалистом, но позволит понять, что входит в проект, и какие из этих технологий действительно потребуются проекту.

Fullstack-разработчики могут быть носителями всей архитектуры

Данил Сабиров, старший архитектор WaveAccess.

Ещё 10 лет назад все веб-разработчики по определению были fullstack, что означало их ответственность за весь процесс разработки от серверной до клиентской части приложения. Однако за прошедшее десятилетие в мире веб-разработки произошло много изменений: это и активное внедрение SPA (одностраничных приложений), и появление таких фреймворков и библиотек как Angular, React, Vue.js, и переход на микросервисный подход разработки приложений. Вследствие этих изменений современная команда разработки пополнилась Frontend-, Backend- и DevOps-специалистами. Огромным преимуществом такого разделения, безусловно, является возможность распараллеливать команды отдельно на Frontend- и Backend-специалистов, каждая из которых отвечает за серверную и клиентскую части соответственно.

Когда сейчас говорят о fullstack-разработчиках, то необходимо понимать, что у каждого такого специалиста будет преобладать опыт либо в Backend, либо в Frontend-разработке, а второе направление будет дополнением. Например, основным бэкграундом может являться Backend-разработка, при этом специалист может неплохо ориентироваться по тому или иному Frontend-фреймворку/библиотеке и на отдельных проектах привлекаться для закрытия Frontend-потребностей. При этом это вовсе не означает, что такой специалист обладает глубокими знаниями в Frontend.

Безусловно, специалист, обладающий знаниями и в Frontend-, и в Backend-разработке, представляет большой интерес для компаний. Если раньше при выборе fullstack-разработчика можно было рассматривать его опыт по градации Junior/Middle/Senior/Team Lead, то сейчас необходимо оценивать его знания отдельно по направлению Backend и Frontend. К примеру, Senior Backend-разработчик может обладать знаниями уровня Junior в области Frontend. 

Опыт компании WaveAccess показывает, что fullstack-разработчики особенно востребованы в следующих ситуациях:

  • быстрое прототипирование приложения небольшой командой, где fullstack-разработчики могут быть носителями всей архитектуры и стать неким связующим звеном для команды;
  • расширение пула разработчиков по Backend/Frontend, что позволяет закрывать потребности в необходимых специалистах на других проектах, когда горят сроки сдачи и нужна любая помощь;
  • поддержка legacy-кода: до сих пор существует множество старых систем, где компетенции fullstack-разработчиков особенно актуальны.

 Более того, если предоставить возможность Frontend- или Backend-разработчику изучить противоположное направление, то выиграют обе стороны. Компания получит специалиста с новой экспертизой, а для разработчика погружение в новые технологии и возможная смена роли может помочь избежать выгорания на последующих проектах.

Чуть менее 10 лет назад, когда только происходило разделение компетенций на Backend и Frontend, fullstack-разработчики были действительно востребованы – такие универсальные специалисты могли обладать знаниями сразу по всему приложению. Однако с тех пор Backend и Frontend пережили активное развитие, по каждому направлению появились новые технологии. Как следствие, требований к ним стало гораздо больше, и  список этих требований будет пополняться и дальше. Поэтому вполне естественно, что fullstack-специалистов становится всё меньше: сложно поддерживать и обновлять знания по каждому из направлений одновременно.

Fullstack разработчики обладают знаниями всего стэка

Роман Блинов, Developer, DataArt.

Fullstack разработчики обладают знаниями всего стэка вэб приложений, но эти знания поверхностные в сравнении с разработчиками узкого профиля. На моем опыте, чаще всего это правило касается разработки бэкэнда. Бывает, что fullstack разработчик неплохо подкован в области фронтенда, но его квалификация как бэкэндера сильно ниже.

Широкопрофильные специалисты, которые были бы столь же высоко квалифицированы в разработке бэкэнда и фронтенда как и спецы узкого профиля – настоящие единороги. И по моему опыту и опыту моих коллег найти такого специалиста крайне сложно, если это вообще возможно.

Однако существует довольно широкий пул задач, где глубокие знания в обоих направлениях одновременно и не требуются и fullstack разработчики могут этот пул успешно закрыть. Здесь уже выбор между fullstack и однопрофильной разработкой зависит от менеджента.

Универсальность — это хорошо, но гораздо важнее экспертиза 

Екатерина Мельникова, старший консультант Hays.

Универсальность — это хорошо, но гораздо важнее экспертиза. Если мы говорим про специалистов с 10+ лет опыта, то они, безусловно, достаточно универсальны, но если мы говорим про разработчиков с 2-3 годами опыта, то ответ очевиден: их знания не так глубоки, и, скорее всего, их экспертиза будет проигрывать узкоспециализированным разработчикам. Естественно, все зависит от среды и направленности компании: там, где хорошо выстроены бизнес-процессы, есть высокая нагрузка и собрана команда сильных специалистов, фулстек-разработчиков можно встретить крайне редко.

Когда мы работаем со стартапами, в которых степень неопределенности очень велика, а нам удается найти хорошего универсала, то мы считаем это находкой. Обратная история с крупными компаниями. Обычно фулстек-разработчик, который оценивает свои знания на уровень senior, проходит техническое интервью на мидла. Исключения в последние годы встречаются все реже.

Как показывает практика, у фулстеков зарплата совсем немногим выше, чем у узконаправленных разработчиков. При этом фулстекам сейчас стало гораздо сложнее устроиться в крупную компанию, так как их ожидания по заработной плате не всегда напрямую коррелируют с их экспертизой в тех или иных технологиях. ИТ-индустрия развивается очень-очень быстро, постоянно появляются новые тренды, технологии улучшаются, появляется гораздо больше возможностей. Крупные игроки выбирают специалистов с максимально глубокой экспертизой в подходящих для них технологиях, а фулстеки, как правило, не всегда успевают так быстро погрузиться в них настолько глубоко.

Уход в fullstack – это логичное развитие разработчика

Леонид Шумский, SAS Россия/СНГ.

Универсальность хороша, если того требует проектная модель внедрения и характер разрабатываемого продукта. При agile-разработке, ограниченном ресурсе и полных требованиях к разрабатываемому продукту наличие универсальных разработчиков позволит быстро создавать хорошо масштабируемые и легко управляемые команды, что снижает нагрузку на руководителя проекта и в целом упрощает операционное управление.

Наличие одного-двух сильных fullstack-разработчиков – обязательное требование для современных продуктовых команд, которое снижает риски неравномерной нагрузки на продуктовую команду в целом. Проблемой наличие fullstack-разработчика может стать только при снижении объемов бизнеса, отказа от разработки части продукта или при негативном влиянии на остальную команду, но этими рисками можно управлять.

Уход в fullstack – это логичное развитие разработчика, который не хочет становиться архитектором или тимлидом, а хочет просто разрабатывать продукты, но продолжать карьерный и зарплатный рост. Если fullstack-разработчик – не эксперт в какой-то одной области, а сразу заявляет себя как fullstack, то это вызывает вопросы и требует пристального пересмотра его опыта и навыков, кем он уже был в прошлом: например, senior разработчик, backend, который выучил еще и UI инструменты, БД и devops. Это рабочая история.

Наличие сильного fullstack-разработчика дает команде гибкость и устойчивость к внезапным отпускам/больничным, обеспечивает взаимодействие между командами на уровне разработки, а не операционного управления и упрощает задачу донесения до команд архитектурных решений и требований от бизнес-аналитиков. Так что при разработке полного продукта наличие в команде fullstack-разработчика будет плюсом.

Запрос на таких специалистов не так высок, потому что большинство разрабатываемых продуктов не включают в себя все компоненты fullstack, а требуется только бек или только фронт. Требования к компетенциям fullstack достаточно высоки, и многие разработчики его потянуть не могут или им интересно перейти в архитектуры/тимлиды. Чистая разработка многим не так интересна.

Вопрос универсальности специалистов неоднозначен

Илья Набатов, директор по производству Т1 Консалтинг.

Вопрос универсальности специалистов неоднозначен в силу многообразия различных направлений в разработке ПО и высокой конкуренции в этих направлениях. Тем не менее, универсальный специалист способен рассмотреть задачу с разных ракурсов, ведь не секрет, что интеграционное взаимодействие является одним из краеугольных камней любого ИТ решения.

При создании комплексных ИТ систем fullstack-разработчик – скорее находка. Безусловно мы верим в таких специалистов, и любая крупная компания имеет некий ограниченный штат таких людей. Наиболее правильное использование людей именно не в постоянном решении задач под ключ, а скорее в оркестрировании узконаправленных разработчиков и повышении кооперации между ними.

Fullstack-разработчики лучше понимают разные аспекты и ограничения систем, периодически могут сделать какой-то модуль под ключ самостоятельно, но поддержка уровня знаний во всех сферах практически невозможна. Универсальные специалисты всегда имеют основную и дополнительные специализации. Они скорее дополняют команды и могут выступать в качестве центра притяжения для сотрудников.

Почему fullstack-разработчики не стали глобальным трендом для ИТ-индустрии? Самое главное — это обучение и время на него. Для качественного развития fullstack-разработчика необходимо время, зачастую личное. Ему надо следить за новыми технологиями, версиями фреймворков, глобальными трендами и не всегда он сможет полноценно применять полученные знания на проекте, в котором работает в моменте. Также, нельзя воспринимать разработчика как некоего универсала, зачастую разные языки программирования пропагандируют кардинально диаметральные парадигмы и подходы. И не каждый разработчик готов перескакивать между ними, предпочитая концентрацию на одном направлении.

Поэтому данный рынок будет ограничен как количеством специалистов, так и ценой на них. Ценовой фактор и ограниченность предложения — главный отпугивающий фактор для компаний, а необходимость серьезных и постоянных инвестиций в себя — основное ограничение предложения.

Любой работодатель хотел бы иметь у себя в штате действительно универсальных работников

Вячеслав Шаго, Senior Software Engineer.

Любой работодатель хотел бы иметь у себя в штате действительно универсальных работников. Однако, как показывает практика, не получается быть хорошо погруженным во все сферы одновременно. Поэтому в лучшем случае это будет специалист, который обладает только самыми базовыми знаниями в бэк- и фронт-разработке. И такие сотрудники могут пользоваться спросом, например, в стартапах, где в очень короткий срок необходимо реализовать прототип продукта, а ресурсов на найм штата разработки всех направлений нет. Современные технологии развиваются очень стремительно – появляются новые фреймворки, библиотеки, технологии, подходы. Быть в курсе всего сразу не представляется возможным. Так что такая универсальность скорее будет мешать самому специалисту достичь значимого успеха в своей области. Понадобится очень много времени и сил для уровня senior и во фронт- и в бэк- разработке.

Если мы не говорим о стартапах и очень маленьких компаниях, то нет никакого преимущества в fullstack-разработчиках. Один fullstack-разработчик не сможет выполнять работу с такой же скоростью, как два узкоспециализированных сотрудника. А два fullstack-разработчика скорее всего не будут обладать той экспертизой, чем два узких специалиста. Да и некоторые компании могут избегать универсальных специалистов, и с недоверием относиться к их резюме, которое пестрит огромным количеством модных аббревиатур.

Поэтому fullstack-разработчики не становятся глобальным трендом, но занимают свою нишу на рынке.

Чтобы быть реально крутым fullstack-разработчиком, нужно очень много времени посвятить каждому направлению

Алексей Волков, DigitalWand.

От дефицита кадров может спасти только подготовка новых кадров, при этом, с упором на качество, а не на то, что нужно уметь выполнять операции по шаблону.

Ответ на вопрос является ли fullstack-разработчик находкой или проблемой зависит от задач организации. Если есть задача долгосрочной поддержки работающего проекта, то это, скорее, находка. А вот с junior-разработчиками бывают проблемы, когда они заявляют, что хотят быть fullstack, а при этом распыляют своё внимание, хотя куда продуктивнее было бы первое время сосредоточиться на чем-то одном.

Чтобы быть реально крутым fullstack-разработчиком, нужно очень много времени посвятить каждому направлению, реализовать множество разных проектов. Таких людей единицы, стоят они недёшево, и , уверен, будут внимательно выбирать из тех проектов, на которых им предлагают работать

Среди остальной массы fullstack-разработчиков много фрилансеров, что накладывает свой отпечаток: уровень, как правило, junior или middle, нет четкого карьерного плана, развивались на мелких и не комплексных разовых задачах, слабые навыки командной работы, проектирования, построения архитектуры. И довольно высокая для такого уровня знаний стоимость часа, т.к. вынуждены компенсировать “окна простоя” возникающие в периоды, когда нет заказов.

Fullstack-разработчики не стали глобальным трендом потому, что даже на физическом уровне невозможно без специализации знать в достаточной степени каждое из направлений, чтобы решать весь спектр возможных задач. Кроме того, ряд проектов достигают такого уровня сложности, что требуют от разработчика не просто технических знаний и навыков на фронтенде или бэкенде, а специализации непосредственно на проекте, что неизбежно приводит к отставанию от нововведений в мире IT. В итоге выходя из проекта, приходится наверстывать упущенное, а наверстать сразу по двум направлениям в два раза сложнее. Кроме того, сам характер разработки на бэкенде и фронтенде — разный, и отвечает разным личным предпочтениям. Бэкенд – больше абстракций, алгоритмов, практически полное отсутствие визуала. Фронтенд же, даже когда включает в себя много разработки, всё равно содержит в себе и верстку. От этого никуда не деться, а не все любят ею заниматься.

На моей практике fullstack зарабатывает больше

Виталий Гончарук, Senior Software Engineer в Monster Lead Group.

Я fullstack-разработчик уже 8 лет, мне пришлось таким стать однажды и я не жалею. Успел поработать с клиентами из США, Великобритании, Дании, Израиля и даже пожить в США. Часто бывает что наняли бекенд разработчиков а фронтенд найти не могут долгое время, или бюджет проекта в принципе не позволяет добавить еще человека, а менеджер просит со всеми задачами разобраться, так началась моя карьера fullstack.

Fullstack всегда будет в чем-то сильнее или слабее и я не скажу что отлично разбираюсь во всем, но я определённо универсальнее узкопрофильных специалистов. К примеру я отлично разбираюсь в серверной разработке на С# .NET, хорошо в SQL базах, хорошо в Angular, TypeScript и JS, средненько в верстке и средненько в DevOps. За всем этим стоит огромный труд, очень много изучения и волевое решение работать только на проектах с такими технологиями чтоб не распылятся еще больше.

Чем же хорошо быть швейцарским ножем? А тем, что могу разрабатывать фичи от базы до верхушки сам без лишней коммуникации и ожиданий пока кто-то что-то доделает, могу видеть проблемы интеграции разных технологий которые не очевидны другим, могу подменить многих пока они болеют или в отпуске, могу декомпозировать задачи на подзадачи и раздавать узкопрофильным ребятам и т.д.

На моей практике fullstack зарабатывает больше по тому, что у него больше конкурентных преимуществ. Но если вы в начале пути программиста то не стоит сразу пытаться выучить все, на это нужно время. Надо выбрать свою основную специальность и если проект позволяет то заглядывать в смежные области, брать там задачи и учится у тех специалистов.

Более того скажу что fullstack это личный выбор, который не каждый хочет и осилит, который требует большего обучения и обязанности доказывать свои знания на собеседования по всем фронтам.

Хороший уникальный специалист может получиться при отличных базовых знаниях в программной инженерии

Максим Петриков, Senior Software engineer в компании EPAM Systems.

Хорошо когда специалист может сделать задачу от начала и до конца самостоятельно. Часто когда фронт и бэк разработчики разделены, то один разработчик делает задачу быстрее, второй занят на другой задаче, в итоге возникает рассинхронизация, одному из программистов приходится переключаться на другие задачи, потом возвращаться обратно, вспоминая что там было сделано. С этой стороны универсальные специалисты выигрывают.

С другой стороны объем знаний в каждой из сфер настолько большой, что быть отличным специалистом во всём довольно сложно. Есть общие знаний: объектно-ориентированное и функциональное программирование, алгоритмы, принципы написания солидного кода, их необходимо знать в любом случае, и от языка к языку, эти знания используются в той или иной мере.

Посмотрим на типичные объем знаний для фронт разработчика:

– верстка: html + css + scss (препроцессор для css) либо что-то похожее

– javascript (каждый год выходит новый стандарт языка, обычно изменения небольшие)

– typescript

– один из фреймворков (React, Vue или Angular)

– несколько библиотек, в зависимости от специфики работы от небольших до объемных, могут отличаться на разных проектах, для упрощения написания кода, или решения каких-то специфических бизнес задач, например построение графиков разной сложности

– библиотека для хранения локального состояния (redux, mobx)

– система сборки(webpack, rollup), если специалист будет одним из ведущих разработчиков

– библиотека для написания unit тестов

Типичный объем знаний для backend разработчика:

– язык програмирования(Java, C#, PHP, Python)

– работа с базами данных: реляционные, NoSQL, ключ-значение + библиотеки для упрощения работы с ними

– языки запросов к базам данных (к каждому типу базы – свой)

– система сборки

– библиотека для написания unit тестов

Backend разработчики часто выполняют задачи devops инженеров: настраивают скрипты для автоматической работы continuous integration/delivery/deployment, также всё чаще в работе применяются cloud сервисы, например amazon web services.

Кроме этого еще есть мобильная разработка, с 2-мя доминирующими платформами: android и iOs, даже здесь не всегда можно найти универсального специалиста, который будет способен сделать проект под 2 платформы на нативных технологиях (java или kotlin для android и swift для iOS). Здесь также есть варианты для других языков(javascript, Dart, C#), но с определенными ограничениями и своими библиотеками.

Иногда для front и back разработки используется один язык, тогда их(языки) не надо учить несколько + часть библиотек будет общей. Наиболее встречающийся пример – node.js на backend, и javascript на фронте. Это убирает пункт с языком и частично с библиотеками, но большой объем знаний для работы в другом направлении остается.

Итого – знать всё в одной сфере довольно сложно, приходится постоянно учиться, изучать обучающие материалы, перенимать лучшие практики. Делать то же самое в нескольких областях очень сложно, практически невозможно.

Чтобы стать хорошим full stack разработчиком надо потратить очень много времени

Основная сложность в том, что главную роль в качестве работы специалиста играет опыт. fullstack специалисту получить необходимый опыт надо, если не в 2 раза дольше времени, то минимум в полтора и, очень условно, при прочих равных человек с опытом 5-6 лет в одной сфере будет senior разработчиком(это понятие сейчас несколько обесценено в России, из-за ряда причин), а fullstack специалист будет иметь только уровень middle и меньшую зарплату.

Хороший уникальный специалист может получиться при отличных базовых знаниях в программной инженерии, большом опыте в одной из сфер, и начале работы параллельно в другой области.

Например проработал человек 5-7 лет java разработчиком, выполняет свою работу легко и без проблем, знает современные библиотеки, имеет опыт работы с несколькими из них. И начинает изучать front разработку, подключаясь к реальным задачам своего проекта. Через несколько лет может получиться хороший fullstack инженер.

Найти такого специалиста на рынке – большая редкость. Если разработчик просто посмотрел несколько видокурсов, сделал пару примеров начального уровня, и позиционирует себя как fullstack разработчик, то, конечно, с таким человеком могут возникнуть проблемы.

Если человек дошел в одной из сфер до уровня хорошего senior разработчика, то при параллельной работе в другой сфере, он всё равно будет подключать свой опыт построения систем. Большинство современных популярных языков программирования очень похожи, поэтому опыт программирования в новой сфере не начинается с нуля, и многие конструкции пересекаются. Хороший fullstack разработчик это не мошенник, но очень труднодостижимая цель и редкий специалист.

К разработке очень хорошо привлекать fullstack программистов, они могут сделать задачу от начала и до конца самостоятельно, что понижает менеджерскую работу и снижает риски. Если при этом человек умеет грамотно оценивать сроки разработки, и соблюдать их, то это лучшее решение для компании. Но таких специалистов очень мало и одна сфера работы может преобладать над другой, где-то может получаться более качественный код, где-то менее качественный, что не очень хорошо для проекта.

Чтобы быть хорошим senior разработчиком надо знать несколько библиотек, делающих одно и то же, их плюсы минусы, уметь выбрать наилучшее решение для проекта. Чтобы стать хорошим fullstack разработчиком надо это сделать 2 раза, на что просто не хватает сил и времени, при этом не получая никаких бенефитов в виде большей зарплаты, а получая наоборот, замедление карьерного роста. Чтобы стать fullstack разработчиком, человек должен любить разработку, и активно изучать новые вещи многие годы, встретить таких людей довольно сложно, поэтому хороших fullstack разработчиков можно пересчитать по пальцам.