И швец, и жнец. Кто такой Full-stack разработчик и как им стать?

«Full-stack разработчик — это технический волшебник, который знает все языки программирования и технологии, а также прекрасно поет и танцует» Иэн Питерс-Кэмпбелл (Ian Peters-Campbell),
опытный разработчик и основатель
софтверной компании Stickbuilt.

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

Потребность в таких специалистах растет с каждым месяцем в силу их универсальности, потому как один IT-джедай может заменить трех-четырех узких специалистов, легко выполняя самые разнообразные задачи. Full-stack разработчики могут работать с большим набором технологий, они способны создать веб-проект в одиночку, паралелльно выполняяя задачи Frontend-программиста и Backend-разработчика: верстка дизайна сайта, настройка функционирования форм и кнопок, создание серверной части, настройка сервера и даже создание мобильной разработки при необходимости портировать веб-приложение на соответствующие платформы.

Конечно, у каждого разработчика был свой путь к фуллстеку:

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

Знания Full-stack разработчика

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

Full-stack Developer — это разработчик, который принимает непосредственное участие во всех этапах разработки веб-приложений — от создания клиентской части (визуальная часть + пользовательская логика) до реализации серверной (базы данных, серверная архитектура, программная логика). Выделяют 4 основных столпа, на которых базируются компетенции IT-джедая:

Frontend-стек технологий практически всегда одинаков и отличается лишь используемыми JavaScript-фреймворками (Angular, React или Vue.js.):

  • язык верстки HTML и язык стилей CSS;
  • языки программирования JavaScript и TypeScript;
  • препроцессоры SASS и LESS;
  • библиотека jQuery;
  • фреймворк Bootstrap;
  • фреймворк Angular/React/Vue.js;
  • технологии DOM, AJAX, JSON;
  • навыки адаптивной и кроссбраузерной верстки.

Вариаций Full-stack-программистов множество и отличаются они лишь языком/платформой – основой Backend-разработки:

  • Java Full-stack Developer;
  • PHP Full-stack Developer,
  • Node.js Full-stack Developer
  • ASP.NET Full-stack Developer
  • Python Full-stack Developer и другие

Стек технологий Java Full-stack Developer:

  • язык Java + Java Core;
  • веб-сервер Apache;
  • инструменты для комфортного взаимодействия с БД — JPA/Hibernate;
  • фреймворк Spring (Spring MVC, Spring Boot, Spring REST, Spring Web);
  • применение облачных сервисов Google Cloud, AWS или Azure;
  • знание сервлетов, JSP (Java Server Pages);
  • знание микросервисов.

Стек технологий PHP Full-stack Developer

  • язык PHP;
  • фреймворк Yii2/Symfony/Laravel.

Стек технологий Node.js Full-stack Developer

  • язык JavaScript
  • платформа Node.js;
  • фреймворк Express.js;
  • пакетные менеджеры npm, yarn;
  • Web Sockets;
  • понимание REST API.

Стек технологий ASP.NET Full-stack Developer

  • язык C#;
  • знание инфраструктуры .NET;
  • платформа ASP.NET MVC / ASP.NET Core (Web API);
  • Entity Framework;
  • облачный сервис Azure;
  • язык T-SQL;
  • понимание RESTful API.

Стек технологий Python Full-stack Developer

  • язык Python;
  • фреймворк Django/Flask;
  • REST API;
  • Web Sockets;
  • навыки работы с ОС Linux и веб-сервером Nginx/Apache (возможно);
  • опыт работы с облачными сервисами.

Помимо перечисленных технологий, Full-stack разработчикам необходимо знать:

  • реляционные (SQL) и нереляционные (NoSQL) базы данных, уметь их проектировать;
  • разбираться в протоколах HTTP, HTTPS;
  • уметь оперировать языком запросов SQL и одной из СУБД — MySQL / PostgreSQL / SQLServer,
  • либо одной из NoSQL СУБД (MongoDB, например);
  • уметь проводить тестирование приложений;
  • осуществлять Code Review;
  • использовать Docker;
  • владеть английским языком на уровне Intermediate и выше;
  • знать популярные паттерны программирования и уметь их реализовывать;
  • иметь хорошее знание алгоритмов и структур данных.

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

  • сервис для планирования и управления проектами (GanttPRO);
  • популярная система для планирования и отслеживания проектов (Jira);
  • инструмент для Project-менеджмента (LiquidPlanner).

Знание DevOps Full-stack разработчика могут сильно отличаться в зависимости от проекта. Как правило, к ним относиться все, что касается запуска программного кода: настройка серверов, обеспечение слаженной работы специалистов команды вместе с техническими решениям. Full-stack разработчику нужны знания:

  • систему управления версиями Git, сервис для хостинга IT-проектов GitHub;
  • CI/CD-инструменты (Ansible, Jenkins, Chef);
  • тулзы для коммуникации и коллаборации (Slack и Microsoft Teams);
  • сервисы облачных вычислений и хранения данных (AWS, Azure и GCP).

Плюсы профессии Full-stack разработчика

  1. Вариативность переходов из фронтенда в бэкенд и наоборот.
  2. Карьерные перспективы: Full-stack разработчик может в одиночку спроектировать ПО или приложение и хорошо разбирается, как устроена разработка. Это упрощает переход в тимлида или архитектора.
  3. Работа на стыке технологий: такой специалист может в одиночку разработать решение, для которого обычно требуется несколько человек. Поэтому такому специалисту будет проще разработать собственный проект или запустить стартап: для MVP (минимального жизнеспособного продукта) не потребуется нанимать команду.
  4. Ниже риск выгорания: на позиции Fullstack постоянно приходится изучать новые технологии.
  5. Выбор лучшего решения: понимая, как взаимодействуют разные системы, такой специалист сможет выбрать решение, которое боятся использовать другие разработчики из-за недостатка опыта.

Минусы профессии Full-stack разработчика

  1. Из-за большого количества технологий, с которыми приходится работать, у Full-stack разработчика не остается времени на глубокое погружение в конкретную сферу. Поэтому в каких-то технологиях IT-джедай будет проигрывать узконаправленному специалисту.
  2. Сложности в развитии: необходимо распределять время между фронтендом и бэкендом – возможностей для профессионального роста в узких технологиях меньше. Чтобы все знания и умения удерживать на хорошем уровне, необходимо тратить много усилий.
  3. Непросто следить за новыми трендами: мир IT очень гибкий и переменчивый. Full-stack разработчику необходимо быть в курсе всех новинок, использовать современные инструменты и подходы.
  4. Много обязанностей: на Full-stack разработчика может большая нагрузка по проекту и знаниям технологий, а также управление проектом и мобильная разработка. При этом даже IT-джедаю могут нравиться не все направления.Периодически могут прилетать дополнительные задачи: дописать код, пересмотреть, доделать. Иногда даже поработать за коллегу с более узкой специализацией.Считается, что Full-stack разработчик решает сложные задачи, поэтому именно они попадают в зону ответственности IT-джедая.
  5. Постоянная включенность в проект: Full-stack разработчику сложнее отключиться от проекта, т.к. его невозможно заменить другим специалистом. Поэтому в любое время такой специалист должен быть на связи.

Заработные платы Full-stack разработчиков

На данный момент на известном работном сайте 442 вакансии Full-stack разработчика (выборка осуществлялась по г.Москве).

Размер заработной платы Количество вакансий
От 115 000 рублей 164
От 195 000 рублей 117
От 270 000 рублей 57
От 350 000 рублей 30
От 430 000 рублей 9

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

Заключение

Full-stack developer – сегодня это уже отдельная категория специалистов, крайне востребованная и распространенная.

Full-stack-разработка – это умение воспринимать самые разнообразные идеи. Со временем такой талант будет становиться все более востребованным. Быть Full-stack разработчиком не означает мгновенно переключаться с настройки сервера на программирование связующего ПО на Java, а потом на JavaScript, работающий в браузере. Специализации придуманы не зря. Но разработчик, понимающий весь стек технологий, будет писать более качественные приложения.

Спор вокруг профессии Full-stack разработчика только подчеркивает важность ее появления в IT-сфере. Очевидно, что ее содержательное наполнение и значение самого термина еще будут меняться.

Наталья Карташева,
Эксперт центра