Злые и дикие: какими бывают фулстек-разработчики и зачем они нужны

Может ли один программист создать современное приложение, и есть ли у такого подхода шансы в сравнении с командной разработкой? Если коротко, то ответ на оба вопроса — «да», но все не так просто. Подробнее читайте в материале.

Злые и дикие: какими бывают фулстек-разработчики и зачем они нужны

Рассвет и закат фулстеков

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

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

Злые и дикие: какими бывают фулстек-разработчики и зачем они нужны

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

В вебе большую популярность набрал LAMP-стек с открытым исходным кодом всех компонентов (Linux, Apache, MySQL, PHP / Python / Perl) и проприетарный стек Microsoft (Windows Server, SQL Server, IIS, ASP.NET). Появились инструменты, которые ускорили разработку серверной части, а технологии jQuery/CSS3/HTML5 помогли с отрисовкой интерфейсов. Рост популярности был также связан с доступностью решений для хостинга.

Независимо от стека, конечным результатом веб-запроса был код HTML/CSS/JS, который приходил от сервера. HTML предоставлял контент, CSS делал его красивым, а JavaScript добавлял немного интерактивности. Сервер объединял HTML-шаблоны с бизнес-данными для создания отрисованной страницы в браузере.

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

В 2010-х возникли новые дисциплины — мобильная разработка, машинное обучение, дополненная реальность, большие данные, блокчейн и еще масса всего, чего один человек знать никак не может. Например, для создания нативных приложений для iOS и Android требуются специалисты по этим платформам, а DevOps требует глубокого знания облачных сервисов и навыков аварийного переключения.

По мере развития JavaScript-фреймворков появилась возможность создавать нагруженные интерфейсы в реальном времени в браузере. Стали появляться одностраничные приложения вроде Facebook и Google Maps. Фронтенд-разработка превратилась в отдельную специализацию.

Пришла пора прощаться с мыслью о том, что один человек сможет создать и запустить современный цифровой продукт… или нет?

Покойся с миром, фулстек. Да здравствует Т-образный специалист!

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

Что это значит? Все очень просто — вертикальная черта буквы T относится к опыту и пониманию конкретной области, в то время как горизонтальная часть буквы T относится к способности сотрудничать с экспертами из других дисциплин и расширять кругозор.

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

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

Если фулстек и T-образный специалист это не одно и то же, то почему понятия стали синонимами?

Злые и дикие: какими бывают фулстек-разработчики и зачем они нужны

Матрица компетенций программиста разрослась до небывалых размеров — охватить все одному человеку не под силу. Смирившись с таким положением дел, под фулстеком стали понимать специалиста, который сможет самостоятельно разрабатывать бэкенд и фронтенд на современных технологиях. Но требовать от программиста одинакового уровня знаний в этих сферах — все равно что требовать одинаково хорошо писать правой и левой рукой. Поэтому внутри технических навыков стали выделять T-форму.

Выбираем стек правильно

При создании ПО разнообразие выбора может привести в ступор. Что лучше подойдет: Python или PHP? React или Angular? Использовать проверенные инструменты или пробовать новые технологии? Эти вопросы задают себе как опытные, так и начинающие программисты.

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

Стек часто определяет ОС, базу данных, веб-сервер и язык программирования. Чуть выше мы говорили про LAMP и Microsoft, но сегодня таких наборов инструментов стало значительно больше. Такие стеки помогают не мучаться с выбором, быстро приступить к работе и сосредоточиться на бизнес-задачах.

Большую популярность в профессиональном сообществе обрел MEAN-стек, который позволил создавать серверную и клиентскую часть на JavaScript, в состав которого входят:

  • MongoDB для хранения данных в виде документов в формате JSON.

  • Express.js — это бэкенд-фреймворк, работающая поверх Node.js.

  • Angular.js — это фреймворк для интерфейсных веб-приложений, запускающий JS-код в браузере пользователя.

  • Node.js — среда выполнения JavaScript, позволяющая вести серверную разработку на JavaScript.

Акроним MEAN можно также перевести с английского как «злой». В отличие от предшественников, в нем не указана операционная система, но впервые указана клиентская среда, которая играет столь важную роль, что с появлением React и Vue акроним трансформировался в MERN и MEVN.

Злые и дикие: какими бывают фулстек-разработчики и зачем они нужны

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

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

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

Для проектов со сложной серверной логикой, но относительно простыми интерфейсами — корпорталы, системы личных кабинетов, решения для бэк офиса — следует рассмотреть другой набор инструментов, например, VILT, который включает:

  • Vue.js — простой в освоении JS-фреймворк, который предоставляет много готовых компонентов;

  • Inertia.js — библиотека, которая заменяет маршрутизатор Vue на маршрутизатор Laravel;

  • Laravel — самый популярный на сегодняшний день PHP-фреймворк;
  • Tailwind CSS — библиотека, упрощающая работу со стилями.

Злые и дикие: какими бывают фулстек-разработчики и зачем они нужны

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

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

Закон Конвея или когда лучше выбирать разработку на MEAN или VILT-стеке

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

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

Мелвин Конвей, Ученый в области теории вычислительных машин и систем

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

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

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

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

Важно не гнаться за мифическим фулстеком. Лучше определить, какой из стеков вам подойдет. Сложная логика на бэкенде со стандартными интерфейсами? Выбирайте VILT. Одностраничное приложение со сложным интерфейсом, но простой серверной частью? Выбирайте ME(A/R/V)N-стек.

Спасибо, что дочитали до конца! Это блог IT-продакшна Work Solutions. Мы занимаемся аутсорсингом и аутстаффингом: создаем веб-приложения на заказ и усиливаем штат наемных специалистов. Будем очень рады вашим:

⭐ на GitHub;

➕ на Хабре;

❤ в VK.

4949
55 комментариев

Мой опыт говорит о том, что фуллстек как специалист-клей всегда пригождается в командах узких разработчиков. Потому что узкие специалисты зачастую не смотрят на систему "с высоты", и возникают проблемы с ошибками на стыках технологий. Фулстеки помогают связывать воедино такой расползающийся проект. Если бы у меня был выбор, я бы предпочел команду фуллстеков. Другое дело что их на рынке меньше чем узких специалистов, отбирать HR их проще, управлять - сложнее. Поэтому бизнес предпочитает более простые и понятные варианты.

20

То, что вы описываете, больше похоже на архитектора.

4

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

2

Комментарий недоступен

раньше себя позиционировал как java developer. но мне всегда нравилось погружаться в то, как работает мой продукт от А до Я. и становился фулстеком. как работает АПИ, удобно ли мобильщикам? пытался сам сбилдит моб клиент. разворачивал фронт. шел к девопсам узнавать, почему наш регрес длится 2+ часа, оптимизировал скрипты. работал с DBA, чтобы понять, почему отчет долго грузится, в чем затык, могу ли на уровне приложения что-то закешировать и снять нагрузку с БД и тд.

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

и если с ярлыком дажвист в неделю писали по 2-3 раза, то теперь пишут 1 раз в 2-3 месяца.

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

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


Laravel — самый популярный на сегодняшний день PHP-фреймворк

Опять же автор либо не в теме, либо просто накопал нерелевантную инфу, самый популярный сейчас Symfony ввиду своей гибкости, кучи бандлов и мощного комьюнити


MongoDB для хранения данных в виде документов в формате JSON.

Какое-то странное понимание хранения данных, так можно и медиа файлы вместо s3 хранить в блобах в базе. Как минимум подобный подход ведет к дублированию данных в базе, а как максимум не дает нормально ими оперировать, в чем проблема хранить нормально данные и уже при запросе собирать json? В чем проблема кэшировать json если критична скорость его сборки? Я уже молчу о коровых ограничениях MySQL и монго в частности на длину поля

По поводу статьи - фуллстек всегда, повторюсь - ВСЕГДА будет проигрывать в квалификации команде узких специалистов, тупо потому что невозможно знать все и сразу. Да даже на примере js - node.js отличается от ванили или фреймворков вроде ангуляра и везде есть свои нюансы, да, писать можно, но какого качества этот проект будет - вопрос интересный. В современном мире фуллстеки имеют место быть на небольших проектах, если же вы пишете большую систему и комплектуете штат фуллстеками то либо система быстро превратится в кучу говнокода, либо фуллстеки сами между собой поделятся кто и над чем будет работать, что опять же ведет к бардаку в организации, но хотя бы проект будет жизнеспособен

6

"самый популярный сейчас Symfony ввиду" — а можно ссылку на исследоваия по России? Говорят вот во всяких там европах, таки да, Symfony лидер. А в америках соединёных, вроде ларка (опять таки говорят). А в России ... тут обнаружится, что Yii2 делит первое_второе место с Laravel. Но это не точно )))

3