Профессия: Full Stack разработчик

0
47
views

Давайте разберемся, кто такие Full Stack разработчики, почему в компаниях возникает такая позиция и какие есть преимущества и недостатки у специализации. Об этой предметной области сайту DOU.UA рассказали разработчики с опытом Full Stack: Владислав Фурдак, Алексей Голубев, Вячеслав Лобода, Владимир Сподарик, Геннадий Догаев и Андрей Роговский.

Особенности направления

Full Stack Developer — это универсальный программист, который может сам с нуля разработать функциональный продукт. Такой специалист разбирается как в Back-end составляющей (программно-аппаратная часть сервиса), так и во Front-end (интерфейс пользователя).

По сути, разделение на Back-end и Front-end появилось только в 2010-х годах, когда программные продукты стали иметь сложную и многоуровневую структуру. До этого большинство программистов по умолчанию выступали в роли Full Stack, хотя так их никто не называл.

«В 90-х  программистов было слишком мало, чтобы разделять их на какие-то категории. Я хотел делать видеоигры, но тогда еще не было готовых движков вроде Unity. И мне пришлось написать графический редактор, ассемблер, отладчик и игровой движок — то есть все этапы от А до Я» (Андрей Роговский).

«Даже если брать классическое образование программиста, студентов учат всему: от Assembler и баз данных до процессов управления SDLC. В значительной мере это и есть Full Stack» (Владимир Сподарик, Senior Full Stack Developer).

Сейчас компании открывают позиции с требованиями Full Stack по нескольким причинам. Например, проект не очень сложный технически, но имеет непростую доменную логику и требует частых изменений. То есть главная загвоздка — «что» именно нужно сделать, а не «как». Тогда одному человеку будет проще разобраться и сориентироваться.

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

«Часто при решении задач веб-разработки возникает необходимость вносить правки одновременно и во Front-end, и в Back-end. Для этого можно нанять двух разных специалистов или одного Full Stack разработчика. Последний вариант позволяет сэкономить время на коммуникацию» (Вячеслав Лобода, Senior Full Stack PHP Developer).

«Один Full Stack разработчик может сам деливерить большой кусок функционала. Ему не нужно договариваться об API и зависимостях в рамках одной фичи, как обычно бывает между Back-end и Front-end. Это позволяет сэкономить время» (Алексей Голубев, Team Lead Full Stack Developer в GlobalLogic).

Также решение может быть связано с особенностями проекта:

«Допустим, на проекте монолитная архитектура. И на Back-end используют серверный MVC-шаблонизатор. А Front-end состоит в основном из jQuery или AngularJS, Knockout, DevExtreme и так далее, которые навешиваются поверх той верстки, что приходит с сервера. В таком случае удобно, чтобы этим занимался один и тот же человек» (Владислав Фурдак, .NET Developer в DataArt).

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

Задачи и обязанности

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

«Я как Full Stack TeamLead провожу ревью кода и участвую в проработке реализации и Front-end, и Back-end. Это удобно, так как ты видишь более полную картину приложения» (Алексей Голубев, Team Lead Full Stack Developer в GlobalLogic).

«Я беру на себя весь Back-end и Front-end проекта. Но когда пришел на проект, Front-end часть уже была готова. Так что я только вношу необходимые правки и добавляю некоторые Front-end блоки по необходимости. К примеру, недавно нужно было вносить правки в код видеоплеера, написанном на JavaScript. Разобрался с этой задачей без особых проблем» (Вячеслав Лобода, Senior Full Stack PHP Developer).

В зависимости от компании, на проекте бывает разное соотношение задач по Back-end и Front-end. Требования к знаниям обоих направлений тоже могут отличаться. Например, Back-end — на уровне Senior, Front-end — на уровне Middle.

«Физически сложно знать на максимальном уровне и Back-end, и Front-end. Задача Full Stack разработчика — уметь самому написать проект, который будет визуально быстрым для пользователя (Front-end не тормозит, Back-end отвечает в пределах 500 мс, в редких случаях дольше) и защищенным (Back-end нельзя взломать, просто сформировав руками запрос). При этом Full Stack разработчик может не уметь, например, делать красивые анимации на Front-end, сложный автоматизированный деплой, серьёзные оптимизации Back-end и баз данных, когда нужно выжать из „железа“ максимум» (Геннадий Догаев, Full Stack Web Developer).

«Хороший Full Stack разработчик имеет разноплановый опыт, который покрывает весь цикл разработки решения. Он часто может и сервер настроить, и API реализовать, и интерфейс „дружественный“ сделать. И не по последним best practices, но в целом качественно» (Владимир Сподарик, Senior Full Stack Developer).

Преимущества и недостатки

Среди преимуществ специализации Full Stack разработчики отмечают скорость разработки, возможность самостоятельно решать задачи и не тратить дополнительное время на коммуникацию.

«Нравится, что могу создавать веб-приложения в одиночку, меньше задержек при работе. Например, когда работаешь как Front-end и нужно, чтобы Back-end отдавал новые данные, ты просишь коллегу внести изменения, ждешь. Full Stack разработчику ждать никого не нужно. Взял и сделал как надо» (Геннадий Догаев, Full Stack Web Developer).

«Привлекает то, что ты можешь сконцентрироваться на решении проблемы, а не холиварах или „выдавливании“ дополнительных процентов производительности по сравнению с другим фреймворком» (Владимир Сподарик, Senior Full Stack Developer).

Еще один плюс — гибкость при выборе проектов:

«Меня привлекают в этой специализации большие карьерные возможности: я более гибок в выборе проекта и моей роли в нем» (Алексей Голубев, Team Lead Full Stack Developer в GlobalLogic).

Из недостатков Full Stack разработчики подчеркивают, что на обучение им приходится тратить больше времени, чем если бы они работали с Back-end или Front-end по отдельности. Также бывает, что заказчики выставляют слишком много требований.

«То время, которое я потратил на освоение Front-end, можно было применить на более глубокое изучение Back-end. Например, освоить ещё один фреймворк или подучить алгоритмы и структуры данных. Но, собственно, ничего не мешает заняться этим в будущем» (Вячеслав Лобода, Senior Full Stack PHP Developer).

«Самый большой недостаток — распыление между специализациями. Большинство таких специалистов не так сильно развиваются в каком-то из направлений. Также может страдать качество кода, если от Full Stack разработчика требуют решение задачи на вчера, некогда сесть и разобраться, как же правильней это сделать» (Владислав Фурдак, .NET Developer в DataArt).

«Заказчики хотят свалить на одного человека слишком много. Например, уже встречаются объявления Node.js + React.js + React Native, то есть к веб-стеку добавляется ещё и мобильная разработка. Это влияет на качество знаний и конечного продукта: чем больше технологий нужно охватить, тем поверхностнее знаешь каждую из них. Кроме того, человеку не могут нравиться все направления одновременно. Мне из этого набора не очень интересна мобильная разработка» (Геннадий Догаев, Full Stack Web Developer).

Как стать Full Stack разработчиком и куда двигаться дальше

Большинство Full Stack разработчиков — это выходцы из Back-end, которые по мере необходимости сталкиваются с Front-end задачами и учатся их решать.

«Я думаю, это обусловлено тем, что порог входа во Front-end для Back-end разработчиков ниже, чем наоборот, особенно для решения тривиальных задач. А если человек работал только с Front-end, то разобраться в Back-end, базах данных, инфраструктуре для решения каких-то целостных задач будет на порядок сложней» (Владислав Фурдак, .NET Developer в DataArt).

Самые распространенные стеки технологий — .NET, PHP или Node.js + JavaScript. Но конфигурации могут быть какими угодно, лишь бы позволяли разрабатывать весь продукт целиком.

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

«Наращивайте компетенцию постепенно, с небольших задач. Пройдите курс по недостающему вам направлению, чтобы вникнуть в базовые принципы. А дальше осваивайте знания на практике по правилу Learning by doing» (Алексей Голубев, Team Lead Full Stack Developer в GlobalLogic).

«Самый простой способ стать Full Stack разработчиком — попробовать самостоятельно разработать пет-проект, который решает какую-то проблему. Это может быть плагин, сайт, утилита, бот — что угодно. После нескольких успешных проектов освоите концепцию или же поймете, что это не ваше» (Владимир Сподарик, Senior Full Stack Developer).

Конкретные рекомендации о том, как стать Full Stack разработчиком, зная Back-end, Владислав Фурдак собрал в отдельной статье.

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

«Я бы, наверное, не советовал новичкам сразу становиться Full Stack разработчиками. Лучше начинать с чего-то одного: Front-end или Back-end, а дальше уже по мере необходимости осваивать смежные области. Потому как при попытке развиваться „в ширину“ можно недобрать достаточной „глубины“ и в итоге превратиться в „разнорабочего“, который умеет делать все, но недостаточно хорошо» (Вячеслав Лобода, Senior Full Stack PHP Developer).

«Не думаю, что уровень Junior, Middle или Senior, которые используют в аутсорсинговых компаниях, как-то влияет на то, может ли разработчик быть Full Stack. Хороший Junior тоже способен залить свой Django-блог на Heroku» (Владимир Сподарик, Senior Full Stack Developer).

Разделились мнения опрошенных программистов и насчет зарплат:

«Я бы не сказал, что зарплаты Full Stack разработчиков выше, чем бэкендов или фронтендов» (Алексей Голубев, Team Lead Full Stack Developer в GlobalLogic).

«Я работаю на фрилансе, позиционирую себя как Back-end разработчик с дополнительными навыками Front-end. Эти дополнительные навыки позволяют мне более эффективно решать задачи и, соответственно, несколько повышают ценность меня как программиста. Если грубо прикинуть, это дает увеличение рейта на 15%» (Вячеслав Лобода, Senior Full Stack PHP Developer).

На момент публикации на DOU открыто 223 вакансии по направлению Full Stack, причем в 157 из них ищут специалиста с опытом от трех лет. По отдельным специализациям вакансий больше: например, 240 по .NET, 296 по PHP, 434 по Front-end.

«Однако у Full Stack разработчиков больше опций при поиске проекта: я могу искать работу как по Full Stack, так и по Back-end или Front-end по отдельности. К тому же спрос на Full Stack растет, поскольку такие люди максимально гибкие в плане проекта» (Алексей Голубев, Team Lead Full Stack Developer в GlobalLogic).

Из Full Stack специалистов получаются хорошие тимлиды, способные решать кросс-командные проблемы, а также лид-разработчики, способные «тащить» проекты в одиночку. Также можно бесконечно развиваться «по горизонтали»: изучать новые технологии, устраиваться на более сложные проекты.

Другие варианты — уйти в архитектуру, менеджмент или даже стать СТО стартапа. Широкие знания Full Stack разработчика помогут видеть сильные и слабые стороны проектных решений. К тому же за время карьеры человек накопит много знаний по самым разным технологиям и ему будет из чего выбрать при планировании проекта.