Что значит full stack. Full-stack разработчик: мифический персонаж или вполне реальный сотрудник? Заработки специалистов по работе с разными ОС

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


Есть ли возрастные ограничения для обучения в центре?

Таких ограничений в IT-Academy нет. Но важно понимать, что в основном мы готовим junior-специалистов, а большинство IT-компаний отдают предпочтение кандидатам на данную позицию, которым ещё не исполнилось 32 года (согласно опросу резидентов Парка высоких технологий, проведённому в 2017 году). Поэтому желательно как можно быстрее определиться с интересующим направлением и пройти обучение, чтобы начать строить свою успешную карьеру в IT .


Можно ли учиться без знания английского языка?

Обучаться на некоторых курсах можно и с минимальным знанием английского языка. Но мы рекомендуем поднимать уровень владения языком непосредственно до курсов или во время обучения, поскольку при дальнейшем поиске работы могут возникнуть сложности. IT-отрасль давно стала международной, поэтому, чтобы чувствовать себя уверенно в профессии, проблем с коммуникацией быть не должно. Кроме того, все популярные языки программирования базируются на англоязычных лексемах и для комфортной работы с ними требуется минимум уровень Pre-Intermediate.


Есть ли в IT-Academy курсы по английскому языку?

На данный момент IT-Academy может предложить обучение английскому языку со скидкой до 20% у наших партнёров – одной из крупнейших языковых школ Streamline Language School. Эксклюзивная партнёрская программа будет интересна всем желающим изучить иностранный язык – в первую очередь, английский для уверенного входа в IT-индустрию.

Ведётся ли в IT-Academy обучение более специфическим IT-профессиям? Ведь сегодня востребованы не только программисты и тестировщики.

IT-Academy следит за развитием образовательного рынка, тенденциями в IT и потребностью в конкретных специалистах. Исходя из этого, принимается решение о запуске новых курсов. Сегодня в Образовательном центре ведётся обучение по 20 различным программам по таким направлениям, как разработка и тестирование ПО , бизнес-анализ , web-дизайн , маркетинг, продажи , работа с данными и так далее. Мы можем предложить соответствующие курсы желающим заниматься IT Sales , освоить современные средства Data Mining, Machine Learning и Big Data , разобраться в основах визуализации процессов и данных с использованием инструмента Tableau.

Возможно ли индивидуальное обучение?

Нет. На базе IT-Academy предлагаются только групповые занятия, при этом гарантируется внимательное отношение преподавателей к каждому студенту.


Какие направления пользуются наибольшей популярностью?

На данный момент в пятёрке наиболее популярных образовательных программ – тестирование ПО, Java-разработка, Front-end-разработка, бизнес-анализ, web-дизайн.


Могу ли я записаться сразу на несколько курсов?

Да, это возможно. Выберите направления , которые вам интересны, а наши специалисты, оценив расписание, подскажут наиболее подходящие курсы, чтобы не возникло накладок.


Сколько стоит обучение в IT-Academy и предоставляется ли рассрочка?

Стоимость варьируется в зависимости от курса обучения и выбранного расписания занятий. В среднем – от 200 до 500 рублей в месяц. Узнать точную сумму можно, выбрав один из курсов . IT-Academy предоставляет рассрочку на период обучения с ежемесячными выплатами.


Как записаться на обучение?

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

От автора: Приветствую вас, друзья! В данной статье мы с вами поговорим о том, что такое Full-Stack разработка, из чего она состоит, какие знания нужны для каждой ее составляющей. Также более подробно остановимся на Node.JS, как одной из популярных, востребованных и высокооплачиваемых технологий в Full-Stack разработке.

Что такое Full-Stack разработка?

По результатам опроса Stack Overflow в 2016 году, Full-Stack разработка - это самое популярное занятие разработчиков. Поэтому неудивительно, что сейчас на западном рынке появляется все больше и больше обучающих программ, которые помогают людям стать Full-Stack разработчиками.

Чтобы ответить на вопрос, что такое Full-Stack разработка, и кто такой Full-Stack разработчик, давайте рассмотрим, из чего вообще состоит современная веб-разработка.

Современную веб-разработку можно разделить на две большие составляющие: Front-end и Back-end разработка.

Front-end разработка (от слова front - «впереди») - то, что вы видите на сайте, его визуальная составляющая. Сюда входят HTML, CSS и по большей части JavaScript. В современной Front-end разработке сейчас актуальны и активно применяются несколько JavaScript фреймворков, из которых, в основном, выбирают Angular, Vue, React. У каждого есть свои плюсы и минусы, и выбирать нужно в зависимости от их области применения. Но здесь есть ключевой момент - вы, по сути, выбираете из JavaScript технологий, так как на данный момент JavaScript является монополистом в этой области.

JavaScript. Быстрый старт

Back-end разработка - это серверная разработка (от слова back - «позади»), и она подразумевает под собой разработку логики вашего сайта, взаимодействие с базой данных и все то, что должно быть на сервере. В Back-end разработке вы можете выбирать из большего количества языков, которые подходят под разные задачи. Back-end вы можете писать, к примеру, на PHP, Java, Node.JS, Python, Ruby и так далее.

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

Сейчас давайте посмотрим на Node.JS. Это отличный выбор и технология, которая очень популярна среди разработчиков, как минимум, потому, что и серверная часть, и клиентская будут написаны на одном и том же языке JavaScript, что значительно проще для понимания, совместимости и обучения. Вам не нужно учить новый язык. Вы используете JavaScript и во Front-end, и Back-end разработке.

Что такое Node.JS?

Определение Node.JS, которое дается в официальной документации, выглядит следующим образом: Node.JS - это платформа, построенная на Chrome’s JavaScript runtime, предназначенная для разработки производительных и масштабируемых веб-приложений. Node.JS использует управляемую событиями, неблокирующую модель ввода-вывода, которая делает ее простой и эффективной, идеальной для приложений с интенсивным использованием данных в реальном времени, работающих через распределенные устройства.

Node.JS - это кроссплатформенная среда с открытым исходным кодом для разработки серверных и сетевых приложений. Приложения Node.JS написаны на JavaScript и могут выполняться в среде исполнения Node.JS на ОС X, Microsoft Windows и Linux.

Node.JS также предоставляет обширную библиотеку различных модулей JavaScript, что в значительной степени упрощает разработку веб-приложений. Node.JS = Runtime Environment + JavaScript Library.

Преимущества Node.JS

Node.JS - это среда выполнения JavaScript на стороне сервера, которая используется для построения быстрых, масштабируемых сетевых приложений. Основные преимущества использования Node.JS:

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

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

язык разработки JavaScript. Вы можете разделить код Node между браузером и вашим Back-end. JavaScript на пути к тому, чтобы стать действительно универсальным языком;

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

Особенности Node.JS

Ниже приведены некоторые важные функции, благодаря которым Node.JS пользуется популярностью у разработчиков программного обеспечения.

Асинхронные скрипты на основе событий. Все API-интерфейсы библиотеки Node.JS являются асинхронными, то есть неблокирующими загрузку. По сути, это означает, что сервер на основе Node.JS никогда не ожидает возврата данных от API. После вызова сервер переходит к следующему API, а механизм уведомлений Node.JS Events помогает серверу получить ответ от предыдущего вызова API;

очень быстрый. Будучи построенным на JavaScript-браузере Google Chrome V8, библиотека Node.JS очень быстро выполняется в коде;

однопоточный, но легко масштабируемый Node.JS использует однопоточную модель с циклом событий. Механизм Event помогает серверу реагировать неблокирующим образом и обеспечивает высокую масштабируемость, в отличие от традиционных серверов, которые создают ограниченные потоки для обработки запросов. Node.JS использует однопоточную программу, и одна и та же программа может обслуживать гораздо большее количество запросов, чем традиционные серверы, такие как Apache HTTP Server;

отсутствие буферизации - приложения Node.JS не буферизуют данные. Приложения просто выводят данные по частям;

JavaScript. Быстрый старт

Изучите основы JavaScript на практическом примере по созданию веб-приложения

Node.JS выпущен под лицензией MIT.

Примеры сайтов на Node.JS

Множество крупных компаний используют Node.JS для построения собственных веб-сайтов. Вот наиболее известные и масштабные сайты на Node.JS:

Paypal - платежная система, которая позволяет своим пользователям осуществлять транзакции через банковские счета или кредитные карты без обмена финансовой информацией.

Yahoo! - уже много лет использует Node.JS во многих своих веб-сервисах и приложениях, включая Yahoo Answers и Yahoo Screen.

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

Wall Street Journal онлайн - популярная американская ежедневная газета с особым акцентом на деловые и экономические новости.

Shutterstock - агентство, предоставляющее фотографии, иллюстрации, векторы, видео и музыку для бизнеса и частных лиц.

Также среди компаний, использующих Node.JS, есть такие крупные компании, как eBay, General Electric, GoDaddy, Microsoft, Uber, Wikipins и Yammer.

Сегодня все больше проектов разрабатывается на Node.JS. И это не только проекты, где нужно держать соединения и требуется наличие неблокирующего сервера - например, онлайн-чата, веб-игр и интерактивных досок. Сегодня на Node.JS разрабатываются обычные веб-сайты, CRM-системы, E-Commerce и рекламные агрегаторы, которые раньше всегда делались на PHP/Python/Ruby.

Сколько можно зарабатывать со знаниями Node.JS?

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

Заключение

Node.JS - это весьма привлекательный продукт для веб-разработчиков. Он позволяет использовать JavaScript для написания кода как на стороне клиента, так и на стороне сервера. При этом разработчики также могут задействовать мощные технологии, доступные в экосистеме JavaScript: в т.ч. jQuery, V8, JSON и управляемое событиями программирование. Кроме того, существуют экосистемы, развивающиеся «поверх» Node.JS, такие как веб-инфраструктура Express.

Благодаря тому, что Node.JS - это просто среда JavaScript, вам не нужно будет изучать новый язык. Вот почему все больше веб-программистов отдают предпочтение Node.JS.

Видео презентация курса «FullStack-Мастер. Разработка CRM-системы на Node.js, Express, Angular6»

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

Необходимые навыки fullstack-разработчика

На дворе давно не нулевые, так что стандартного LAMP (Linux, Apache, MySQL, PHP), который тогда применялся чуть ли не каждым вторым разработчиком, недостаточно, чтобы считать себя full-stack разработчиком. Сейчас у full-stack разработчика в портфолио должны быть совершенно другие навыки и умения.

Сервер и хостинг

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

Работа с данными

Full-stack разработчик должен уметь создать сбалансированную модель данных, быть знаком с реляционными и нереляционными базами данных, а также уметь работать с форматами XML / JSON.

Бэкенд-технологии

Сюда относятся знание языков PHP, Python или Ruby, умение выстраивать клиент-серверное взаимодействие, разработка API, работа с аналитикой и сопутствующими фреймворками.

Пользовательский интерфейс

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

Проектирование UX

Умение проработать UX - это обязательный пункт, с которым хотя бы на базовом уровне должен быть знаком любой full-stack разработчик. Необходимо понимать, как пользователь будет взаимодействовать с интерфейсом - это важная часть успеха проекта.

В чем преимущества full-stack разработчика?

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

На хедхантинговых сайтах каждый день появляется 7-10 новых вакансий для full-stack разработчика, а зарплата на уровне 119000 рублей в месяц доступна при наличии опыта разработки от года.

Получение необходимых навыков

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

Вашему вниманию предлагается перевод любопытной статьи Скотта Хадфилда , CTO и со-основателя стартапа “Hello Pretty”. Сейчас в половине вакансий, связанных с вебом и серверной разработкой, встречается волшебная фраза “full stack”. Чаще всего с эпитетами вроде “джедай”, “супер-герой” и “ниндзя”. Кого ищут все эти люди, и кого им на самом деле удается получить в свою команду?

Конечно, в названии статья я несколько сгустил краски и full stack разработчики существуют. Но вы никогда такого не найдете. “Настоящие” full stack разработчики существуют - так же как существуют гении и люди, которые программируют с 12 лет. Я слишком часто вижу это словосочетание, и, по моему мнению, единственный вариант найти такого человека - это заняться хантинг-браконьерством. Если у вас не запредельное везение, то все бойцы, подходящие под описание “full stack”, уже давно и надежно трудоустроены.

Я знаком с несколькими ребятами, которые соответствуют описанию “full stack”. И за этими ребятами постоянно гоняется толпа хантеров, что лишь подпитывает миф о том, что у вас получится найти такого разработчика в свой проект.

Описание “full stack developer” так же бессмысленно как “Гений” или “Тот, кто может сделать все что угодно в [вставьте здесь свою предметную область]”

Раскрою эту мысль поглубже. Иллюстрация ниже показывает неполную версию того самого “stack”, о котором говорится во всех этих вакансиях. В большинстве случаев разработчику нужны только одно или два умения из каждого слоя. Некоторые умения можно получить за пару часов (например, простейшая компиляция с помощью “./configure && make && sudo make install” или использование VPS). Получение других умений может занять годы.


То, что ожидается от “full stack” разработчика надежно выходит за рамки возможностей обычного человека. Такой разработчик должен разбираться в масштабировании приложения до нескольких миллионов кликов в день (в час?), знать что такое “домашние животные vs крупный рогатый скот” и почему это так важно, уметь выбирать между MongoDB и MySQL, применять CAP-теорему, настраивать PaaS и IaaS, владеть дюжиной средств управления конфигурациями для развертывания приложений на Rails, Django, WordPress, Swift или их комбинации, разбираться в отличиях микросервис-ориентированной архитектуры от монолитных приложений и еще несколько дюжин вещей.

Это значит, что full stack разработчик должен обладать как минимум хорошим пониманием каждого компонента в стеке веб технологий, чтобы иметь возможность принимать обоснованные решения как их использовать. Он также должен уметь объяснить свой выбор менеджерам, желательно простым языком. Да-да, на самом верху стека находятся хорошее владение письменным языком, навыки командной работы и умение донести непростые вещи до менеджеров.

Каждый год новые компоненты добавляются к каждому слою стека. А раз в несколько лет к стеку добавляется новый слой. Вы все еще считаете, что разумно писать в вакансиях “full stack разработчик”? Это не очень умно. Особенно когда вы начинаете искать одного человека, одновременно являющегося специалистом по безопасности, веб разработке, юзабилити и настройке серверов. И такие запросы не то чтобы очень редки.

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

Ах, да, и когда CEO заглядывает в офис, нужно настроить принтер и общий доступ к файлам на его новеньком ноутбуке с windows.

Как я уже писал, такие люди существуют. Лично знаю нескольких. Но также я знаю множество великолепных разработчиков, дизайнеров и менеджеров проектов, которые даже близко не подходят под определение “full stack”. И еще больше тех, кто называет себя “full stack разработчиками” и при этом с трудом могут дать определение больше чем дюжине слов из списка выше. И это при том, что в список далеко неполный, в нем даже нет некоторых слоев, например того, на котором живут JRE и Node.js. И тут мы понимаем, что у нас проблема.

В большинстве случаев, когда я видел “full stack” в описании вакансии, на самом деле они искали “очень крутого спеца”.

Самое раннее упоминание “full stack” и “full stack инженера

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

И хотя было бы проще просто отодвинуть эту дискуссию на второй план, термин «full-stack разработчик» от этого никуда не исчезнет. Спрос на специалистов с такими навыками вырос на 198% только за прошлый год. Кроме того, большинство разработчиков со всего мира именно этими словами описывает свой род деятельности (согласно нашему ).

В этой статье мы попробуем пояснить, отчего возникает путаница относительно названия этой специализации и изложим очку зрения каждой из сторон. Также мы поможем рекрутерам и менеджерам по найму договориться с командой относительно того, что понимать под «full-stack» и специалист с какими навыками им нужен.

Чтобы лучше понять существующие разногласия относительно термина «full-stack разработчик», мы разберемся, с чего все началось.

Рождение full-stack разработчика

Термин « » вошел в моду не так давно. Одно из самых ранних упоминаний относится к 2008 году , а первый запрос «full-stack developer» в Google появился не раньше 2010. С тех пор популярность этого запроса начала расти.

«Full-stack developer» в трендах поиска Google с 2004 года. Подъем популярности отражен для разных вариантов написания, например, «fullstack developer » и «full stack developer ».

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

История

Поздние 1970-е / ранние 1980-е

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

Поздние 1980-е / ранние 1990-е

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

Поздние 1990-е / ранние 2000-е

Интернет «наступает» – технологии становятся все более специализированными, соответственно и у людей, занимающихся ими, возникает узкая специализация.

Середина 2000-х

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

Поздние 2000-е

Соответствующие технологии упрощаются до уровня, при котором многие программисты вновь могут создавать приложения и сайты от начала до конца. Официальное рождение термина «full-stack developer».

Ранние 2010-е / настоящее время

Быстрый подъем более сложных технологий привел к тому, что стэк стал более «слоистым». Разработчикам стало сложнее поддерживать знания на соответствующем уровне. Начинают появляться специалисты фронтенда и бэкенда. «Full stack» разработка приобретает новое, более широкое значение.

Согласно истории термина, «full-stack разработчик» сначала приобрел популярность в середине 2000-х, когда более простые и оптимизированные технологии позволили многим разработчикам выполнять проекты полностью. Этот подход диаметрально отличался от того, что было в поздние 1990-е и ранние 2000-е.

С течением времени смещение в сторону более сложных технологий и большего количества слоев в стэке (ранние 2010-е) привело к новому разделению ролей. Работа с бэкендом и фронтендом все более разделяется, что приводит к популяризации терминов «фронтенд-разработчик» и «бэкенд-разработчик».

В качестве ответной реакции в тот же самый период времени термин «full-stack разработчик» также приобретает популярность. Это связано с попыткой выделить разработчиков, не укладывающихся в бинарную систему фронтенд/бэкенд специалистов. Вместо этого они позиционируют себя как третий вид разработчиков, представители которого могут выполнять обязанности как по фронтенду, так и по бэкенду.

Но, конечно, с такой интерпретацией согласно не все тех-сообщество. И хотя сложно сказать, когда эти споры начались, катализатором для них выступили два события. Первым был пост бывшего инженера Facebook Карлоса Буэно от 2010 года о том, что такое full stack. Вторым событием стало услышанное Лоренсом Геллертом на конференции заявление сотрудника Facebook о том, что эта компания нанимает только «Full Stack разработчиков» (2012 год).

Что имеем в результате? Жаркие дебаты относительно терминологии все еще живут, даже спустя почти 10 лет.

Доводы против full-stack разработчика

Представители лагеря противников «full-stack разработчика» доминируют в спорах о том, из чего состоит (или не состоит) full-stack. Коротко говоря, их аргументы крутятся вокруг идеи, что full-stack разработчик это некто со «способностью легко управляться с бэкендом и фронтендом на уровне сеньора ».

Хотя у этого представления есть некоторые вариации, данный лагерь считает, что full-stack разработчики должны уметь:

  • Писать первоклассный код фронтенда на том же уровне, что и узкий фронтенд-специалист.
  • Писать в равной степени превосходный код бэкенда на том же уровне, что и бэкенд-специалист.
  • Управлять серверной инфраструктурой.
  • Разбираться в не-техническом менеджменте проектов и бизнес-требованиях, на основе чего координировать свою работу с продуктом.
  • Контролировать работу QA, DevOps и вопросы, связанные с безопасностью.

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

Претензии этого лагеря по поводу термина «full-stack разработчик» сводятся к следующим пунктам:

  • Для компаний это способ выставлять нереальные требования к сотрудникам. Это позволяет им нагружать одного работника огромным количеством обязанностей, что для компании выгодно, но выгода достигается за счет работника. Компании хотят получать большой объем выполненных работ и большой опыт за низкую цену (по сравнению с наймом нескольких узких специалистов).
  • Этот термин подразумевает общий уровень опыта, которого у большинства разработчиков нет . Настоящий full-stack разработчик должен обладать «двойным мастерством » – и во фронтенде, и в бэкенде – а это невозможно с учетом скорости развития технологий. Когда кто-то называет себя full-stack, имея опыт меньше упомянутого, это является необоснованным использованием термина.
  • Это поощряет широкие, но поверхностные знания. Full-stack разработчик никогда не может с головой погрузиться ни в бэкенд, ни во фронтенд. Разработчик, пытающийся охватить весь стэк, это «и швец, и жнец, и на дуде игрец», причем ни в одной сфере он не достигает мастерства.

Представители этого лагеря сходятся на том, что настоящих full-stack разработчиков крайне мало. При этом они склонны считать, что люди, определяющие себя как full-stack, на самом деле являются фронтенд-разработчиками с некоторыми знаниями бэкенда (или наоборот).

Доводы в пользу full-stack разработчика

Лагерь сторонников full-stack, в свою очередь, ратует за более широкое понимание этого термина. Они отвергают идею, что full-stack разработчик должен обладать одинаковым мастерством в каждом слое стэка. Вместо этого ему нужно рабочее знание всего стэка и экспертное знание нескольких его слоев.

Определение full-stack с менее ограничивающим набором требований описывает человека, который способен:

  • В определенной мере уверенно писать код и фронтенда, и бэкенда.
  • Генерировать минимально жизнеспособный продукт самостоятельно или с небольшой поддержкой других людей при необходимости.
  • Быть экспертом в нескольких технологиях.
  • Показывать как минимум базовое понимание технологий, на которых не специализируется.

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

В защиту термина «full-stack разработчик» приводится несколько ключевых соображений:

  • Хороший разработчик не складирует свои знания. Большинство разработчиков занимаются либо фронтендом, либо бэкендом. Но чтобы быть хорошим специалистом в любом из этих направлений, вам нужно понимать оба. Проведение жесткого разграничения между ними охлаждает желание разработчиков изучать что-либо, выходящее за рамки собственной специализации. А ведь в каком-то смысле граница между бэкендом и фронтендом является искусственной .
  • Компаниям нужны специалисты широкого профиля. Не всегда и не для всех бизнес-целей вам подойдет узкий специалист. Маленькие компании и стартапы, у которых количество людей и средств ограничено, нуждаются в разработчиках с обширным опытом и разнообразием знаний. Крупные компании более склонны поручать работу отдельным специалистам, но и они могут привлекать full-stack разработчиков в контексте менеджмента проектов .
  • Full-stack разработчики наводят мосты между фротендом и бэкендом. Разработчики, специализирующиеся на каком-то одном из этих направлений, занимают свои ниши, но разработчики с full-stack знаниями помогают преодолеть пропасть между ними. Поскольку они понимают обе стороны, они могут определять проблемы и возможности, которые ускользнут от взгляда узкого специалиста.

Эти аргументы доказывают, что full-stack разработчики не заменяют, а дополняют работу специалистов по фронтенду и бэкенду. Их ценность – в способности понимать и работать со всем проектом в целом, а также использовать общие технические познания во всем, с чем они имеют дело.

Эту философию можно кратко изложить цитатой из «Программиста-прагматика »:

«Чем больше вы знаете, тем выше ваша ценность… чем больше технологий вы знаете, тем лучше сможете приспосабливаться к изменениям».

Общий знаменатель

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

С целью приближения к общему знаменателю, в недавно опубликованном Ассоциацией информационных систем документе был произведен анализ 5 самых общеупотребительных определений термина «full-stack разработчик». Это была попытка вывести общее определение термина. Вот, что получилось в результате:

«Full stack разработка это методология, охватывающая все слои стэка и при этом создающая полное, реализуемое решение требований бизнеса. Full stack разработчики обладают широким опытом работы во всех слоях стэка и экспертным уровнем знаний в некоторых из них. В заданном стэке они должны быть способны производить минимально жизнеспособный продукт», – «Towards a Consensus Definition of Full-Stack Development», 2018.

Если вы рекрутер или менеджер по найму и хотите направить дискуссию в конструктивное русло, вы можете предпринять следующие шаги:

  • Убедитесь, что ваши запросы разумны. Никто из представителей обоих лагерей не ожидает, что full-stack разработчик сможет доставить результат, равный результату целой команды разработчиков. Если вы решаете, что для вашей команды разумно будет нанять full-stack разработчика, убедитесь, что вы не начинаете ненароком искать «единорога» и не просите одного человека сравняться по результатам со многими людьми. Самое важное: будьте готовы к тому, что может существовать больше одного набора навыков, позволяющих преуспеть в этой должности.
  • Выясните, как в вашей компании налажена совместная работа разработчиков. Как члены вашей команды делят работу и кто их контролирует? Какой уровень гибкости в плане фронтенда и бэкенда они ожидают от каждого отдельного коллеги, хоть full-stack, хоть нет? Если рекрутеры и менеджеры по найму будут равняться на эту точку зрения, им будет легче понять, как должен функционировать full-stack разработчик в контексте их компании. Это поможет сделать процесс найма более эффективным.
  • Ориентируйтесь на нужды своей компании. В целом, чем больше компания, тем более специализированные разработчики (и другие специалисты) могут в ней работать. Если ваша команда находится в процессе роста, учитывайте, как в ней будет работать full-stack разработчик – и не только сегодня, но и в долгосрочной перспективе, когда команда увеличится. В команде на 300 человек может быть больше места для full-stack разработчиков, чем в команде на 8 тысяч человек.
  • Воспринимайте «full-stack» как примерный ориентир. Спектр мнений относительно трактовки этого термина предполагает, что full-stack разработчики могут быть очень разными. Если кандидат так себя называет, это еще не является показателем того, что он вам подходит. С другой стороны, кандидат, называющий себя фронтенд- или бэкенд-разработчиком, может иметь достаточно широкие познания, чтобы подойти на вашу full-stack позицию. Не игнорируйте терминологию, но и не слишком в нее упирайтесь, пускай навыки кандидатов говорят сами за себя.

А к какому «лагерю» относитесь вы и ваша команда? Поделитесь в комментариях!