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

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

Что такое полная разработка стека?

Говорить о разработке полного стека будет проще, если мы начнем с базового понимания архитектуры программного обеспечения.

Каждое веб-приложение или мобильное приложение состоит из двух компонентов: внешнего интерфейса и внутреннего интерфейса. Фронтенд (клиентская сторона) — это точка соприкосновения пользователя с решением, его видимая часть.

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

Комбинация инструментов (операционная система, сервер, база данных, фреймворки, библиотеки и т. д.) и языков программирования, позволяющая специалисту полностью построить продукт, называется технологическим стеком. И наоборот, когда эти компоненты/уровни объединены и работают вместе, они образуют программный стек.

Для разработки каждого из слоев используется специальный стек технологий. Специалиста, который может использовать стеки как на стороне сервера, так и на стороне клиента, обычно называют разработчиком полного стека.

Кто именно является разработчиком полного стека?

полноценный разработчик – это человек, знакомый со всеми уровнями разработки программного обеспечения. Они понимают, как работают все части программного обеспечения, и могут манипулировать каждым уровнем: интерфейсом, бизнес-логикой и управлением хранилищем. У них есть широкий набор навыков, которые они могут использовать с разной степенью мастерства. Какие именно степени, спросите вы. Что ж, существуют разные взгляды на опыт full-stack-разработчиков.

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

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

  • изучать новые навыки вверх или вниз по стеку, чтобы иметь возможность выполнять какую-то работу, в которой они не специализируются
  • понять объем работы, необходимой для создания полного решения, добавления новой функции или исправления ошибки
  • определить, какие изменения нужно внести на стороне клиента и сервера, расставить приоритеты задач и выполнять их одновременно или последовательно.

Можно сказать, что наем разработчика полного стека вместо двух разных людей для передней и задней сторон — это кадровая проблема. Насколько велика ваша команда или проект? Насколько занята ваша ИТ-команда? Дело не в том, что разработчики полного стека делают свою работу лучше — их в основном ценят за то, что они могут видеть полную картину и выполнять важную работу в условиях жесткого бюджета. (Прокрутите до последнего раздела статьи, чтобы прочитать, какими могут быть эти обстоятельства.)

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

Навыки разработчика полного стека

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

Сценарий 1. Разработчик полного стека начинал как разработчик интерфейса, но научился справляться с бэкендом.

Сценарий 2. Разработчик полного стека обладает глубокими знаниями о бэкенде и время от времени работает над интерфейсом.

Это означает, что несколько резюме разработчиков полного стека могут выглядеть совершенно по-разному. Или они? Есть несколько навыков, которые вы можете ожидать от разработчиков с разным опытом. Мы разделили их на категории от навыков, с которых они начинали, до уровня знаний при работе с разными технологиями.

Как правило, разработчики, работающие с полным стеком переднего плана, хорошо разбираются в технологиях внешнего интерфейса, то есть в JavaScript, HTML и CSS. Они могут использовать множество интерфейсных фреймворков и библиотек и обычно осваивают фреймворк Node.js в качестве своего первого внутреннего инструмента. Их внутренние знания, включая манипуляции с API, хранилищем и управлением сервером, варьируются от базовых до средних. Имея время и возможность, они могут быстро продвинуться в любых внутренних технологиях.

Сначала бэкенд-разработчики с полным стеком обычно обладают отличными навыками разработки логики приложений и уверенно владеют одним или несколькими языками, такими как Perl, C#, Java и PHP. Их знания на стороне клиента обычно ограничиваются одним популярным фреймворком и базовым набором интерфейсных инструментов. Они готовы работать с API, базами данных и развертыванием программного обеспечения в облаке. Они часто занимаются наблюдением за процессом построения архитектуры или технологически сложными стартап-проектами.

Наиболее популярные технологические стеки осваивают разработчики полного стека

Основные компетенции и навыки, которыми должен обладать разработчик полного стека, зависят от проекта и нанимаемой компании. Но сообщество разработчиков программного обеспечения нашло способ обобщить комбинации технологий, которые специалист может знать и использовать для выполнения определенного объема работы.

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

СРЕДНИЙ стек

В основе этого стека лежит язык программирования JavaScript, который раньше был инструментом разработки внешнего интерфейса, но теперь стал популярным выбором и для внутреннего интерфейса. Стек MEAN включает нереляционную базу данных MongoDB, Express — фреймворк веб-приложений Node.js, платформу разработки программного обеспечения Angular и среду выполнения Node.js для серверного программирования. Все эти инструменты имеют открытый исходный код. Если вам интересно, почему он называется MEAN, обратите внимание на первые буквы каждого компонента.

Поскольку стек MEAN быстро развивается, разработчики могут выбирать из множества альтернативных инструментов. Например, популярная комбинация инструментов — React (интерфейсная библиотека) с Node.js.

Стек ЛАМПЫ

Стек LAMP — один из первых стеков с открытым исходным кодом для создания веб-приложений. Его компоненты — Linux, Apache, MySQL и PHP — также составляют аббревиатуру. Кратко узнаем о них. Linux — это бесплатная операционная система с открытым исходным кодом, Apache — веб-сервер с открытым исходным кодом, а MySQL — реляционная встроенная база данных. PHP, серверный язык сценариев (программирования), является еще одним компонентом стека.

Стек LAMP постепенно трансформируется в LEMP, поскольку все больше и больше разработчиков заменяют Apache веб-сервером NGINX.

Стек Ruby on Rails

Ruby on Rails — это фреймворк веб-приложений для создания веб-приложений на основе баз данных (по паттерну Модель-Представление-Контроллер (MVC)). Фреймворк, выпущенный под лицензией MIT с открытым исходным кодом, использует язык программирования Ruby. Помимо самого языка, Ruby on Rails включает стандартную базу данных SQLite, которая может работать на веб-серверах Apache, Passenger, WEBrick или NGINX.

Стек Джанго

Разработчики стека Django применяют языки программирования Django, Python и PHP, а также могут использовать реляционные базы данных PostgreSQL или MySQL.

Django — высокоуровневый фреймворк веб-приложений Python. Python был назван языком 2018 года компанией по качеству программного обеспечения TIOBE, а также стал третьим по распространенности в августе 2019 года согласно Индексу сообщества программирования компании. Django следует философии включенных батарей, что означает, что его функциональность поставляется с фреймворком, а не с отдельными библиотеками.

Разработчик полного стека и преподаватель Уильям Винсент отмечает, что большинство разработчиков Django склоняются к лагерю серверной части спектра полного стека: Они контролируют базу данных и логику сайта и часто в компаниях полагаются на отдельный разработчик внешнего интерфейса для настройки презентации в шаблоне Django.

Когда дело доходит до создания пользовательских интерфейсов, разработчики Django могут использовать Angular или его более новые версии.

Когда нанимать full stack разработчика?

Обсудив полный набор навыков разработчика, давайте посмотрим, когда разумно нанять этого профессионала.

Простой продукт. Один человек может одновременно отвечать за несколько дел и оставаться продуктивным. Но даже самый целеустремленный профессионал может не справиться с многозадачностью, если ему нужно решить множество сложных задач за ограниченный период времени. Наоборот, если объем и тип работы хорошо сбалансированы, этот один человек сработает. Так что, если вам нужно простое приложение, например приложение для заметок или прогноза погоды, вы можете положиться на разработчика с полным стеком. В этом случае специалист сможет создать и построить дизайн, выбрать подходящий вариант хостинга и базу данных, написать код для реализации бизнес- и инфраструктурной логики, а затем развернуть и поддерживать продукт. Вы можете рассмотреть кандидатов с квалификацией front-end или back-end для такого проекта.

Минимально жизнеспособный продукт. Хотите проверить, нужно ли людям приложение, которое вы хотите представить? Назначьте разработчика полного стека для создания минимально жизнеспособного продукта (MVP) — самой ранней и простой версии продукта с достаточным количеством функций, чтобы обеспечить его основную ценность и получить отзывы от реальных пользователей. Один-единственный разработчик, работающий в первую очередь над фронтендом или бэкендом, может полностью создать ваш MVP за короткое время, потому что продукт не обязательно должен быть многофункциональным. Позже другие члены команды смогут обновить приложение, если оно пройдет тест MVP.

Одностраничные приложения. Разработка SPA — еще одна популярная задача для разработчика полного стека — она относительно проста и не занимает много времени, поскольку требуется только сценарий на стороне клиента. SPA не используют стандартный обмен данными типа «запрос-ответ» между клиентом и сервером. Вместо этого SPA отображает страницы в браузере: содержимое динамически обновляется и генерируется, поэтому пользователю не нужно перезагружать страницу для доступа к новой информации. Сервер просто хранит данные. Некоторые организации, например, даже сужают круг поиска сотрудников, указав вакансию для разработчика SPA с полным стеком.

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

Запуск. Бизнес-идея для изучения, вдохновленные основатели, ограниченный бюджет и отсутствие шансов на провал. Вот как это происходит со стартапом. Участники стартапа должны договориться о видении продукта, работать в унисон, точно зная, кто, что, как и когда делает. Как сказал один из наших разработчиков полного стека: «Преимущество такого подхода к разработке заключается в том, что интеграция внешнего интерфейса с внутренним — это интеграция с самим собой».».

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

Заключительное слово

Разработчики с полным стеком приходят либо из лагеря фронта, либо из лагеря бэкенда. Вот почему эти специалисты, как правило, хорошо разбираются в той части стека, над которой они работали, прежде чем вступить на путь универсальности. Тем не менее, эти разработчики востребованы среди различных бизнесов, от команд стартапов из нескольких человек до финансовых групп со штатом более 10 000 человек. Неудивительно, что разработчики полного стека представляют собой значительную группу в сообществе разработчиков программного обеспечения. В 2018 году StackOverflow опросил более 100 000 разработчиков, и 48,2% из них заявили, что сосредоточены на разработке полного стека. Возможно, это означает, что владение более чем одной технологией становится нормой, а не отдельной обязанностью.

Первоначально опубликовано в техническом блоге AltexSoft Что такое Full Stack Developer: описание роли, набор навыков, когда нанимать