[Перевод] Перевод: full stack разработчик — это миф
Вашему вниманию предлагается перевод любопытной статьи Скотта Хадфилда, 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 инженера» я видел в посте разработчика Facebook Карла Буэно, который называл этим термином генералиста с сильным уклоном в анализ производительности.
Возможно, «full stack» инженеру или разработчику вообще не нужно писать код. А вместо этого фокусироваться на работе системного архитектора или интегратора. Человек со знанием всего стека технологий может предвидеть проблемы коммуникации и интеграции между слоями до того, как они смогут нанести вред разрабатываемому проекту.
Но даже в случае, если под «full stack» понимать роль архитектора, необходимо определить о каком «стеке» идет речь. Стек веб разработки, мобильной разработки, нативных приложений? Даже в таком виде «full stack» это не одно умение, а большой набор умений, с глубоким пониманием о взаимодействии технологий в рамках «стека» и о том, как изменения на одном слое стека влияют на другие его слои.
Full stack разработчик — это миф. Но не потому, что таких людей нет, а потому, что такое определение не имеет смысла. Нет никакой разницы между этой формулировкой и «coding ninja» или «rockstar». Но про последние все хотя бы понимают что такие названия не имеют отношения к конкретному набору умений.
Вы ищите «на все руки мастера», специалиста по интеграции, специалиста по производительности, того кто может быстро изучать новые технологии и приемы разработки? Или вы ищите того, кто является экспертом во всех перечисленных областях? У меня для вас плохие новости, посмотрите на картинку еще раз. Она далеко неполная.
Изображение взято отсюда