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

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

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

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

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

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

0fd6b64d4c3c46eaa3a2cb725a92939f.png

То, что ожидается от «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 инженера» я видел в посте разработчика Facebook Карла Буэно, который называл этим термином генералиста с сильным уклоном в анализ производительности.

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

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

Full stack разработчик — это миф. Но не потому, что таких людей нет, а потому, что такое определение не имеет смысла. Нет никакой разницы между этой формулировкой и «coding ninja» или «rockstar». Но про последние все хотя бы понимают что такие названия не имеют отношения к конкретному набору умений.

Вы ищите «на все руки мастера», специалиста по интеграции, специалиста по производительности, того кто может быстро изучать новые технологии и приемы разработки? Или вы ищите того, кто является экспертом во всех перечисленных областях? У меня для вас плохие новости, посмотрите на картинку еще раз. Она далеко неполная.

Изображение взято отсюда

© Habrahabr.ru