И швец, и жнец. Кто такой Full-stack разработчик и как им стать?
«Full-stack разработчик — это технический волшебник, который знает все языки программирования и технологии, а также прекрасно поет и танцует»
Есть в сфере 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 разработчика
- Вариативность переходов из фронтенда в бэкенд и наоборот.
- Карьерные перспективы: Full-stack разработчик может в одиночку спроектировать ПО или приложение и хорошо разбирается, как устроена разработка. Это упрощает переход в тимлида или архитектора.
- Работа на стыке технологий: такой специалист может в одиночку разработать решение, для которого обычно требуется несколько человек. Поэтому такому специалисту будет проще разработать собственный проект или запустить стартап: для MVP (минимального жизнеспособного продукта) не потребуется нанимать команду.
- Ниже риск выгорания: на позиции Fullstack постоянно приходится изучать новые технологии.
- Выбор лучшего решения: понимая, как взаимодействуют разные системы, такой специалист сможет выбрать решение, которое боятся использовать другие разработчики из-за недостатка опыта.
Минусы профессии Full-stack разработчика
- Из-за большого количества технологий, с которыми приходится работать, у Full-stack разработчика не остается времени на глубокое погружение в конкретную сферу. Поэтому в каких-то технологиях IT-джедай будет проигрывать узконаправленному специалисту.
- Сложности в развитии: необходимо распределять время между фронтендом и бэкендом – возможностей для профессионального роста в узких технологиях меньше. Чтобы все знания и умения удерживать на хорошем уровне, необходимо тратить много усилий.
- Непросто следить за новыми трендами: мир IT очень гибкий и переменчивый. Full-stack разработчику необходимо быть в курсе всех новинок, использовать современные инструменты и подходы.
- Много обязанностей: на Full-stack разработчика может большая нагрузка по проекту и знаниям технологий, а также управление проектом и мобильная разработка. При этом даже IT-джедаю могут нравиться не все направления.Периодически могут прилетать дополнительные задачи: дописать код, пересмотреть, доделать. Иногда даже поработать за коллегу с более узкой специализацией.Считается, что Full-stack разработчик решает сложные задачи, поэтому именно они попадают в зону ответственности IT-джедая.
- Постоянная включенность в проект: 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-сфере. Очевидно, что ее содержательное наполнение и значение самого термина еще будут меняться.
Наталья Карташева,
Эксперт центра