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

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

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

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

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

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

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

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

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

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

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

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 разработчика.

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

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

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

Заключение

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

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

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

11
Начать дискуссию