Чем плохо быть full stack разработчиком. Перевод: full stack разработчик — это миф Программно аппаратное full stack решение

Стартапер, IT-директор и дизайнер обвиняют full-stack разработчиков в нереальности их списка навыков, низком качестве продуктов и отсутствии универсальности. Full-stack разработчики защищаются.

В закладки

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

По данным ежегодного отчета StackOverflow (в 2018 году в опросе приняли участие около 100 000 разработчиков со всего мира) почти 50% из них считают себя full-stack разработчиками.

Первые поисковые запросы full-stack developer появились не раньше 2010 года. И с этого момента их количество начинает сильно расти. На графике изображена динамика популярности (100 баллов - максимальная популярность) запроса full-stack developer во всех его вариациях в Google.

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

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

В центре внимания - три самых острых вопроса об этой профессии

1. Возможно ли знать всё из списка требований для full-stack?

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

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

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

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

Основываясь на этом понимании, я уверенно могу назвать себя разработчиком полного стека. Тем не менее, я предпочитаю термин «Разработчик» или «Инженер-программист» только потому, что они немного менее злокачественны и довольно неспецифичны.

2. Может ли full-stack разработчик сделать качественный продукт?

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

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

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

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

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

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

3. Является ли full-stack разработчик универсалом?

Давайте концепцию «разработчика полного стека», которую в последнее время все горячо используют. Особенно на таких сайтах как Hacker Noon или Medium, которые пытаются помочь начинающим разработчикам стать «разработчиками полного стека». Все больше и больше компаний публикуют вакансии, где требуется «разработчик полного стека».

Однако приняв этот универсальный термин мы, работодатели, вынуждены теперь пересматривать свои взгляды на навыки, которые необходимы, чтобы выполнить эту работу. Под термином “разработчик полного стека” стоит совершенно нелепый список требований.

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

Я пишу свое собственное пошаговое руководство о том, как стать full-stack разработчиком. Знать все компоненты в списке требований к full-stack невозможно, но можно значительно сузить этот список, если вы можете заранее установить стек devops. Кроме того, вы можете охватить каждый «слой» до «достаточного знания», особенно в начале проекта.

Я тренирую свою команду, чтобы они стали «инженерами с полным стеком», но каждый из них фокусируется на определенной области разработки: на iOS, на Android, в Интернете и на API. Преимущественно, мы используем только JavaScript и React / React Native, поэтому я могу менять их позициями. В конце концов, как только структура будет завершена, я могу переназначить их на позиции по конкретным вертикальным стекам. Например, один на потребителя, один на поставщиков, один на admin и один на devops. И все четыре будут при этом взаимозаменяемыми. Такая универсальная команда «инженеров с полным стеком» может существенно сократить расходы на персонал и уменьшить время разработки.

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


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

Кто такой Fullstack-разработчик

Несмотря на сложность определения полного спектра обязанностей, существует обобщающее мнение о том, как обозначить фуллстек-программистов – специалисты, способные из шаблона проектирования пользовательского интерфейса создать полноценный продукт, который будет отвечать минимальным, но достаточным (для удовлетворения запросов пользователей веб-ресурса) функциями.

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

Fullstack-разработчик совмещает обязанности по написанию front-end и back-end. Он обладает огромным количеством навыков и может заниматься проектом самостоятельно, без подключения дополнительных специалистов, будь то UI или UX дизайнеры. В частности, он может:

  • Управлять хранилищем всей информации, расположенной на сайте.
  • Работать с HTML-страницами, изображениями, файлами, медиа-потоками и прочими данными.
  • Он хорошо разбирается в системной инженерии и может применять на практике научные, инженерные и управленческие навыки, которые необходимы для преобразования совокупности потребностей заказчика в описание конфигурации системы.
  • При необходимости он может выступать в качестве разработчика мобильных приложений или веб-ресурсов. Для этого он должен уметь обращаться с различными языками разметок, базами данных, графическими редакторами, готовыми макетами и шаблонами.

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

Преимущества и недостатки

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

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

Как стать Fullstack-разработчиком

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

Первый этап обучения необходимо начать с языков программирования. Достаточно подробно изучить один, к примеру, JavaScript, PHP или Python. Бо́льшая часть проектов будет связана именно с ними. Разумеется, не все они окажутся востребованными, однако пользователь должен иметь базовые знания о структуризации, проектировки, внедрению и тестирования проекта.

Второй шаг – применение фреймворков. Какой бы язык программирования не был выбран, он будет сопровождаться дополнительным расширенным функционалом программной платформы с открытым исходным кодом Spring , Hibernate и т. д.

Независимо от целей назначения проекта, он будет нуждаться в базе данных и кэшировании, чтобы впоследствии можно было хранить большой объем различной информации. Специалист должен разбираться в одной или нескольких системах управления базами данных и уметь использовать их потенциал. Среди рекомендуемых СУБД можно отметить MySQL , Microsoft SQL Server и т. д.

Что значит быть Fullstack-разработчиком

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

  1. Администрирование серверов. Fullstack-разработчик должен иметь базовые навыки работы с сервером. Сюда можно отнести: управление комплексом программных средств, посредством которых осуществляется контроль и фильтрация проходящих сетевых пакетов на разных уровнях; подключение к удаленным серверам через терминал, где отсутствует графический интерфейс пользователя; управление кроссплатформенным программным обеспечением Apache HTTP-сервер и почтовым прокси-сервером Nginx. Кроме этого он должен уметь создавать максимально безопасные и надежные изолированные среды разработки в открытых платформах для разработки, доставки и эксплуатации приложений.
  2. Работа с облачными PaaS-платформами. Хостинг на популярных web-сервисах могжет понадобиться в любой момент, когда заказчик потребует переключения провайдера. Среди наиболее популярных платформ можно отметить Google Cloud и Azure .
  3. Программно-аппаратная часть сервиса. Кроме языка разметки и программного обеспечения, созданного для объединения разных компонентов большого программного проекта, специалист должен уметь работать с web-сервисами Nginx и Apache, удобным дизайном API (ведь бо́льшая часть веб-ресурсов работает на API).
  4. Дизайн. Здесь специалист должен уметь создавать прототип проекта перед тем, как преобразовать его в рабочий формат. На данном этапе применяется целый набор графических инструментов: редактор Photoshop или Illustrator, Ngrok и т. д.

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

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

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

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

Что значит full stack разработчик?

Термин full stack описывает разработчика, который одинаково хорошо справляется с написанием фронт-энда и бэк-энда.

Чтобы быть более конкретным, это означает, что разработчик может работать с базами данных, PHP, HTML, CSS, JavaScript, а так же может превратить Photoshop-ый макет в готовый к использованию шаблон.

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

Что значило full stack в 2000 году и что значит сейчас?

2000 год был очень давно, в этом году был выпущен PHP 4.0. Да, 4.0. Тогда, хороший веб-разработчик знал немного HTML, CSS и процедурный PHP, потому что собственно ООП появился в версии 5.0.

Сборка LAMP (Linux - Apache - MySQL - Perl / PHP) был в моде в те годы, практически без альтернативы. В начале 2000-х, если кто использовал контроль версий - то они считались либо технологическими еретиками либо мастерами. Сегодня это смешно, если кто-то не использует данные технологии.

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

Системное администрирование

  1. Linux и написание shell скриптов
  2. Облачные технологии: Amazon, Rackspace, и т.д.
  3. Фоновые процедуры: Gearman, Redis
  4. Поиск: Elasticsearch, Sphinx, Solr
  5. Кэширование: Varnish, Memcached, APC / OpCache
  6. Мониторинг: Nagios

Linux по-прежнему самая распространённая операционная система Интернета, используемая в веб-разработке (не считая.NET). Кроме того, full stack разработчик должен знать, как работает облачный хостинг, Amazon / Rackspace.

Поиск является неотъемлемой частью большинства веб-сайтов - разработчик должен знать, как настроить и использовать поисковые серверы, такие как Sphinx или Elasticsearch.

Кэширование также важно: Varnish, обратный прокси, Memcached.

Инструменты веб-разработки

  1. Контроль версий: Git, Mercurial, SVN
  2. Виртуализация: VirtualBox, Vagrant, Docker

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

Используя средства виртуализации и среды разработки на основе каждого проекта легко настроить с помощью VirtualBox и Vagrant.

Если вы хотите работать с Vagrant вы должны знать, основной синтаксис Ruby.

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

  1. Веб-серверы: Apache, Nginx
  2. Языки программирования: PHP, NodeJS, Ruby
  3. Базы данных: MySQL, MongoDB, Cassandra, Redis, SQL / JSON в целом

Знание тонкостей работы с Apache и Nginx - это норма. Full stack разработчик должен знать, как настроить данные инструменты.

PHP должен быть освоен на высоком уровне, NodeJS, Ruby - как можно лучше.

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

Реляционные (например, MySQL, PostgreSQL) и нереляционные базы данных (как MongoDB, Redis или Cassandra) различия между которыми full stack разработчик должен знать, наряду с XML / JSON.

Фронтальные технологии

  1. HTML / HTML5: Семантический веб
  2. CSS / CSS3: LESS, SASS, Медиа запросы
  3. JavaScript: JQuery, AngularJS, Knockout, и т.д.
  4. Особенности совместимости всех браузерах
  5. Адаптивный дизайн
  6. AJAX, JSON, XML, WebSocket

JavaScript, который изначально никто не воспринимал всерьёз, сегодня превратился в один из самых популярных и мощных языков. Новые методологии и структуры появляются каждый день: MVC, MVVM, MVP, Angular, Knockout, Ember, и т.д.

Наряду с HTML, CSS, Javascript, full stack разработчик должен знать о принципах работы с медиа-запросами CSS, а так же препроцессорами, такими как LESS и SASS.

Следует также знать, как работать с технологиями AJAX или WebSocket.

Дизайн

  1. Преобразование веб-дизайна в код

В дополнение к интерфейсным технологиям, full stack разработчик также должен уметь преобразовать макет сайта в полноценный шаблон, используя HTML / CSS / Javascript.

Так же вам могут потребоваться знания самых разных технологий. Если вы хотите настроить Vagrant вам нужно знать синтаксис Ruby, а для более эффективной работы с DOM не обойтись без JQuery.

  1. Android
  2. Гибрид: PhoneGap, Appcelerator

Full stack разработчик должен иметь хорошее представление об этих технологиях.

Хорошо ли быть full stack разработчиком?

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

Разумно ли ожидать, что каждый разработчик будет мастером в любом аспекте процесса разработки? Вероятнее всего нет, однако Facebook может потребовать от вас это. Будучи на конференции OSCON, работник Facebook сказал мне, что они нанимают только «Full Stack» разработчиков. Хорошо, но что это значит?

Для меня, «Full Stack» Разработчик - это кто-то, кто знаком с каждым аспектом: превосходно владеющий многими из них и проявляющий неподдельный интерес ко всем технологиям.

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

Составляющие «Full Stack»

1. Сервер, Сеть и Хостинговая Среда.

A. Включает в себя понимание того, что может сломаться и почему, ресурс принимается как должное.
B. Надлежащее использование файловой системы, облачных баз, сетевых ресурсов, а также понимание избыточности и доступности данных.
C. Как происходит масштабирование приложения при данных аппаратных ограничениях?
D. Что на счет мульти-поточности и состояние гонки? Знайте, что вы всего этого не увидите в ваших разработках, однако это может появиться и обязательно появится в реальном мире.
E. «Full stack» разработчики могут работать бок о бок с DevOps. Система должна обеспечивать осмысленные сообщения об ошибках и возможности сбора логов. DevOps увидят эти сообщения прежде вас, так что считайтесь с их мнением.

2. Моделирование Данных

A. Если модель данных некорректна, то бизнес-логика и более высокие классы начинают нуждаться в странном (безобразном) коде - костылях - для того, чтобы компенсировать исключительные случаи, которая эта модель не учитывает.
B. «Full stack» разработчики знают, как создать взвешенную реляционную модель вместе с внешними ключами, индексами, обзорами, справочными таблицами и т.д.
C. «Full stack» разработчики знакомы с концепцией не реляционных баз данных (NoSQL) и понимают, в чем они превосходят реляционные базы данных.

3. Бизнес-логика

A. Суть пользы приносимой приложением.
B. Здесь необходимы серьезные объектно-ориентированные навыки.
C. Здесь также могут понадобиться фреймворки.

4. Класс API/класс Action/MVC

A. Как взаимодействует ваша бизнес-логика и модель данных с реальным внешним миром.
B. На этом уровне, фреймворки должны быть максимально задействованы.
C. «Full stack» разработчики обладают способностью писать чисто, последовательно, просто для удобства пользователя. Меня пугает, до какой степени некоторые API бывают запутаны.

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

A. «Full stack» разработчики: а) понимают, как создавать читаемую схему, b) осознают, что нуждаются в помощи художников и графических дизайнеров. В любом случае, применение хорошего визуального конструирования - чрезвычайно важно.
B. Может включать в себя хорошее владение HTML5/CSS.
C. JavaScript - это восходящий язык будущего и большое количество захватывающей работы производится на JavaScript (node, backbone, knockout…)

6. UX

A. «Full stack» разработчики понимают, что пользователям необходимо, чтобы вещи работали просто.
B. Хорошая система не вызывает у своих пользователей кистевой туннельный синдром или раздражение глаз. «Full stack» разработчик может отстраниться и взглянуть на процесс, требующий 8 кликов и 3 шагов, а затем свести все это к одному клику.
C. «Full stack» разработчики пишут полезные сообщения об ошибках. Если что-то сломалось, извинитесь. Иногда программисты неумышленно пишут сообщения об ошибках, которые заставляют людей чувствовать себя идиотами.

7. Понимание того, что необходимо клиенту и бизнесу

A. В настоящее время область обязанностей инженера-разработчика не до конца ясна, однако это по большей части самостоятельная роль.
B. «Full stack» разработчики обладают глубоким пониманием того, что происходит, когда клиент пользуется продуктом. Они также обладают пониманием как устроен бизнес.

Другие составляющие головоломки:

1. Способность писать качественные юнит-тесты. К слову сказать, сегодня они могут писаться даже под JavaScript.
2. Понимание повторяющихся автоматических процессов, необходимых для построения приложения, его тестирование, предоставление документации, а также его масштабирование.
3. Важна информированность в вопросах безопасности, так как каждый класс по-своему уязвим.

Заключительные мысли

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

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

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

18 января 2016 в 09:35

Перевод: full stack разработчик - это миф

  • Блог компании Voximplant ,
  • Разработка веб-сайтов ,
  • Программирование
  • Перевод

Вашему вниманию предлагается перевод любопытной статьи Скотта Хадфилда , 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 инженера