Я везде вижу термин full-stack developer, и это заставило меня задуматься:

Что это вообще значит?

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

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

На самом деле они не так уж далеко друг от друга, но… какой стек мы на самом деле имеем в виду, когда говорим полный стек, и возможно ли это вообще?

Давайте начнем с изучения того, что такое стек.

ФОНАРЬ

Раньше был термин, который вы не так часто видите, так как он был несколько загружен термином полного стека, и это LAMP (Linux, Apache, MySQL и PHP, источник: Википедия).

Верхний уровень стека может быть заменен подходящим языком, таким как Perl, Python и, возможно, даже Ruby), а это означает, что определение стека LAMP даже не совсем ясно, но это базовый традиционный стек и, возможно, тот, который был и до сих пор доминирует на многих рабочих местах просто из-за своей популярности и широкого распространения.

МВК

Однако, поскольку стек LAMP немного неоднозначен, давайте разберем его. С точки зрения MVC (Model-View-Controller, источник: Википедия) это будет выглядеть так, и мы получим узнаваемое изображение. Это немного упрощает определение уровней, из которых состоит стек — вернемся к этому позже…

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

6-уровневый стек

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

Уровень контроллера/представления гораздо более четко определен и может быть разделен на технологии, различие на самом деле не передается традиционным стеком LAMP, хотя это, возможно, было более или менее стандартом де-факто, имея Javascript играть большую или меньшую роль в зависимости от усыновления.

ЗНАЧИТ

Что приводит нас к другому очень преобладающему стеку — стеку MEAN (MongoDB, Express.js, Angular.js и Node.js, источник: Википедия).

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

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

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

Да, есть альтернативы, и вариантов этого традиционного стека, возможно, столько же, сколько команд разработчиков программного обеспечения/менеджеров по продуктам PaaS. Я попытался аннотировать 6-уровневый стек с некоторыми технологиями, просто чтобы дать вам представление, есть языки/технологии, которые я непреднамеренно пропустил, забыл или о которых не слышал, заполните меня в комментарии — но давайте двигаться дальше .

Возвращаясь к вопросу: «Что вообще означает разработчик с полным стеком?» Основываясь на приведенном выше рисунке, вам нужно будет выбрать набор технологий для представления 6 уровней вашего стека, после чего вы сможете работать на всех уровнях данного стека, то есть от интерфейса к серверу, реализации UX. к моделированию данных и всему, что между ними.

Что я заметил, так это то, что этих супер-разработчиков, перескакивающих через стек, на самом деле не существует.

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

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

Происхождение разработчиков

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

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

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

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

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

Независимо от того, откуда вы родом, ваша точка зрения уникальна, и ваш набор инструментов уникален.

Full-stack Специализированные универсальные разработчики Polyglot

Что вообще означает full-stack разработчик?

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

Просто шучу…

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

Итак, перефразируя вопрос, существуют ли полиглоты-специалисты-универсалы с полным стеком?

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

Мой вывод состоит в том, что термин «разработчик полного стека» должен учитывать следующее:

  1. Из чего состоит стек, о котором мы говорим
  2. Сколько вариаций в стеке сделал ваш магазин/проект в стеке
  3. Какой самый популярный стек на рынке

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

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

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

Первоначально опубликовано на lastmover.wordpress.com 22 февраля 2017 г.