Общее определение
Начнём с общего определения, чтобы задать базовый контекст:
> Фулстек-разработчик (full-stack developer) — это универсальный программист, который создает как клиентскую (фронтенд), так и серверную (бэкенд) часть сайтов или приложений.
Этакий супергерой: всё умеет, всех спасёт! Так ли это на самом деле? Зависит от многих жизненных ситуаций. Расскажу о своих и о том, почему для меня фулстек — это не магия, а самая настоящая обыденность.
Спортивная база: почему вообще об этом говорю
Ранее писал о том, что в школе мне посчастливилось благодаря Брату попасть в секцию спортивного плавания. Достиг определённых результатов, которые помогли мне посмотреть на мир в соревновательных поездках, познакомиться с интересными людьми и найти единомышленников.
В спортивном плавании есть четыре стиля:
- Вольный стиль (кроль на груди — плывём лицом вниз).
- Кроль на спине (плывём, внезапно, на спине).
- Брасс (то самое «плывут как лягушки»).
- Баттерфляй (дельфин: «фиг пойми, зачем они так плывут, очень тяжело, и не у каждого получается этот полёт»).
В классическом прочтении есть разные дистанции: от 25 до 1500 метров. Спринтеры плывут 25, 50 и 100; средние дистанции — 200 и 400; стайеры — 800 и 1500.
Везде своё строгое разделение. Те, кто может победить на дистанции в 50 метров, в 99% случаев даже не посмотрят в сторону 200 или, тем более, 1500 (они нередко с болью воспринимают каждые «лишние» 0,01 метра). Те, кто плывёт «полторашку» (1500 м), даже не разомнутся, проплыв 50 метров, пусть даже с околорекордным временем (они и 20 раз так смогут сделать).
А вот те, кто плывёт дистанции 200 и 400 метров, обречены затыкать дыры и у спринтеров, и у стайеров. Принцип «ну, что тебе стоит» работает в обе стороны. Хотя, как по мне, именно у «середняков» самый интересный физический аспект результата.
При чём тут фулстек? При том, что в спортивном плавании есть ещё одна дисциплина — комплексное плавание. Это когда плывут 100, 200 или 400 метров всеми стилями, начиная с баттерфляя, потом спина, потом брасс, и завершают всё кролем на груди. Самое зрелищное мероприятие, где на любой вкус есть и техника, и тактика со стратегией.
400 метров комплексным плаванием называют «лошадиной дистанцией», так как нужно проплыть каждым стилем по 100 метров. Очень весело!
Эти самые «комплексисты» часто натыкаются на непонимание со стороны других «специалистов», плывущих только своим одним стилем. И есть чему удивляться: очень сложно иметь сильными все четыре стиля и находить баланс в тренировках. Не говоря уже о том, что многие «моно-пловцы» физически не могут плыть другим стилем.
Например, встречал кролистов, которые в брасс просто не могут плыть натурально физически: ноги не гнутся, стопы не разворачиваются. А вот комплексисты часто могут составить очень сильную конкуренцию на других моно-дистанциях, и победы вне своих основных специализаций для них далеко не редкость.
На всякий случай уточню: комплексисты — это не про то, что «умеют делать всё средне» или «бросят на полдороги». Это профессионально доказанное владение стилями, позволяющее соревноваться с другими профессионалами в этой дисциплине (и в других тоже, просто так исторически сложилось).
Вдруг у кого-то закрались сомнения, могу ли рассуждать в таком тоне о комплексистах? Спешу заверить: могу, ведь сам достиг своих вершин именно в комплексном плавании и знаю этот процесс от и до.
А что же в IT?
Чем же заняты эти ваши фулстеки? Да всё тем же: работают, выполняют задачи. Могут взять на себя полный цикл разработки: от настройки сервера до создания фронтенда и бэкенда, и отвечать за конечный результат.
Когда начинал свой IT-путь в конце 90-х, для меня было обыденностью сначала настроить сервер для веб-проекта. Не нажатием кнопки «установить», а вот прям из сырцов собрать всё необходимое. Не потому что мне не хотелось иметь такую кнопку, а потому что тогда иначе всё это делалось в принципе. Таков был путь развития, такова была эволюция.
Потом нужно было разработать пользовательский интерфейс (и да, показать макет в фотошопе считалось высшим пилотажем); затем разработать взаимодействие с бэкендом и базой данных; потом ещё и продвинуть всё это дело по нужным ключам (привет, SEO-шшшшпециалисты!); и, наконец, отстаивать и развивать проект. Всё это в народе называлось «создать сайтик».
Сейчас смотря на «моно-разработчиков», иногда ловлю себя на мысли: «А не деградация ли это?». На самом деле нет, просто каждый плывёт так, как может. У кого-то получаются моно-дистанции, а у кого-то комплексное плавание. Причём «моно-разработчики» в большинстве своём могут работать как фулстеки, просто не всем это нужно и не все этого хотят. Ответственность за полный процесс и охват всего проекта им не интересны, тем более что денег за фулстека часто платят меньше в пересчёте на затраченные «моно-разработчиком» усилия.
Давайте проясним один важный момент. Современный фулстек — это не про то, чтобы написать спагетти-код, смешать его с PHP-скриптами вперемешку с HTML и назвать это «полным циклом». Нет.
Настоящий фулстек сегодня — это архитектурная целостность. Это когда ты понимаешь, как правильно разложить систему на слои. Когда ты знаешь, что для сложной бизнес-логики нужен CQRS и DTO, чтобы не тащить зависимости туда, где им не место. Когда ты выбираешь между Symfony и Slim не потому, что «так модно», а потому что это правильный инструмент под конкретную задачу. Когда ты верстаешь админку на Bootstrap 5.3 без jQuery или собираешь модульный интерфейс на Angular 21+ со standalone-компонентами, потому что ценишь производительность и поддерживаемость, а не тащишь в проект тонны легаси-зависимостей.
Фулстек — это способность видеть систему целиком: от Value Object на бэкенде, который гарантирует валидность данных, до плавной CSS-анимации на фронтенде, которая не тормозит основной поток. Это не «уметь всё понемногу», это «понимать, как всё связано, и делать это правильно».
Корпоративные иллюзии и реальность
Другое дело, что происходит, когда компании приходят на рынок и хотят себе такого фулстека. Вот где начинается самое интересное! По своему опыту могу сказать: существует глобальное непонимание задач и возможностей. Очень часто всё сводится к тому, что хотят не фулстека, а три-четыре человека вместо одного, которые работают одновременно. Согласитесь, клонирование — это пока не то, что реально может предложить даже самый крутой фулстек.
Более того, когда не находят фулстека, а задачу делать нужно, компании находят внутри себя «моно-отщепенца» и делают из него фулстека. Потому что задачу делать НАДО. Компании сами создают это разделение, чтобы удобнее было управлять и контролировать процесс, когда это им выгодно. Ничего личного, просто бизнес. Разделяй и властвуй.
При этом, если обратить внимание на вакансии, мы увидим, что практически везде хотят как минимум «понимание процесса разработки полного цикла». Фронтендерам нужно знать, как взаимодействовать с бэкендом, и наоборот. Всем нужно понимать DevOps-принципы, работать с Git, Docker, уметь в CI/CD. Обыденностью стало перечислять у бэкендеров что-то вроде:
Наш Back-end стэк: PHP 7.4/8.1+, фреймворки Symfony/Phalcon, Doctrine ORM, PHPUnit, PostgreSQL, ClickhouseDB, Kafka, Kubernetes, Prometheus, Grafana. Высокая нагрузка на Golang.
А в разделе «Будет плюсом, если ты» читаем: «Работал с очередями (RabbitMQ, Kafka), можешь в реактивное программирование». И сидишь, гадаешь: «можешь в реактивное программирование» — это передавать данные в RabbitMQ и Kafka (ты же бэк) или ещё и показать их на UI через какой-нибудь Angular/React/Vue? Принцип «ну, что тебе стоит» продолжает работать в обе стороны.
Как человек, который смотрит на процессы и с позиции разработчика, и с позиции CTO, вижу главную проблему не в людях, а в коммуникациях. «Моно-разработчики» в изолированных командах часто играют в «испорченный телефон». Фронтенд ждёт, пока бэкенд «нарисует» эндпоинт, бэкенд ждёт, пока фронтенд «согласует» формат данных, а DevOps просто хочет, чтобы все отстали от его пайплайнов.
Фулстек-разработчик с опытом управления проектами ломает эту стену. Он сокращает время принятия решений до нуля, потому что эти решения принимает один человек, несущий ответственность за результат. Он может быстрее проверить гипотезу: не нужно писать ТЗ, согласовывать его между тремя отделами и ждать две недели. Он может реализовать прототип, показать бизнесу рабочий результат и только потом, при необходимости, масштабировать это в большие команды. Это не магия, это дисциплина и широкий кругозор, которые экономят компании сотни часов.
А что в других отраслях?
Разве там нет фулстеков? Есть, и их довольно много, разного уровня успешности. Возьмём, например, очевидный современный талант, который можно проверить сразу: Арина Ростовская (актриса дубляжа, телеведущая, блогер с миллионами подписчиков). Чем же она интересна? Хотя бы тем, что может озвучивать несколькими голосами, «заменяя» нескольких актёров дубляжа, и выпускает потрясающие ролики-тизеры. Погуглите "Как бы звучал трейлер на сказку красная шапочка" и другие сказки — может понравиться.
Вспомните сразу несколько подобных талантов в зависимости от своего возраста. Окажется, что многие актёры успешно сочетают в себе разные навыки: профессионально играют на разных инструментах, поют, сочиняют стихи, пишут книги, рисуют. Не в обывательском смысле, а в профессиональном — приносящим доход, на который они живут.
Почему же в IT-сфере фулстек иногда называют мифом? Да потому что это обыденность. Она везде, нужно только присмотреться и не ждать чуда «клонирования». Нужно правильно выстраивать процессы компании так, чтобы это приносило максимальную пользу и развитие, а не создавало новые препятствия.
Суперсила на легаси-проектах
Меня часто нанимают на легаси-проекты, которые уже «разработаны» до состояния, когда хочется сказать: «А давайте сделаем всё заново!». Предыдущие разработчики уходят с такого проекта или просто не тянут его больше.
А мне интересно работать с такими проектами: улучшать их, вдыхать новую жизнь, делать успешными. Потому что «плаваю комплексным плаванием» с самого детства, и у меня натренированность и широкий кругозор. Вижу не «ужасный код», а систему, в которой нарушен баланс. Моно-разработчик смотрит на такой проект и видит стену: он не понимает, почему фронтенд тормозит (потому что не знает, как работает кэш на стороне сервера), или почему база данных ложится (потому что не видит, как фронтенд инициирует сотни лишних запросов).
Подхожу к такому проекту как тренер к запущенному спортсмену. Нужно навести порядок в архитектуре? Внедряем паттерны, выносим логику в сервисный слой. Нужно ускорить работу? Оптимизируем запросы, настраиваем TagAwareCacheInterface, убираем множественные try-catch, которые маскируют реальные ошибки, и внедряем единый, элегантный механизм обработки исключений для Value Objects. Не переписываю всё с нуля ради самого процесса. А нахожу точки роста, рефакторю ключевые узлы и делаю систему предсказуемой, масштабируемой и, что главное, прибыльной для бизнеса.
Единственное, что пока не могу, — это клонировать себя. Хотя, честно говоря, с моим опытом и тем, как сейчас выстраиваю работу с ИИ-инструментами, эта необходимость отпадает. ИИ не заменяет фулстека, он становится его «вторым пловцом в эстафете», беря на себя рутину, пока занимаюсь архитектурой, стратегией и сложными интеграциями.
Фулстек — это не миф, не модная строчка в вакансии и не способ сэкономить на зарплатном фонде. Это профессиональная зрелость. Это обыденность для тех, кто с детства приучен к дисциплине, кто ценит командность, но способен в одиночку проплыть всю дистанцию, если того требует гонка. И поверьте, когда на старт выходит такой специалист, «моно-пловцы» внезапно начинают смотреть на него с уважением. А бизнес получает результат.
Моно-дистанция или комплексное плавание? Делитесь своим путём в комментариях!