Полный стек, бла-бла, я могу делать все, посмотри на все мои модные словечки и какой я крут.

Ух ты! Вы разработчик полного цикла? И все разработчики. Заткнись.

Однажды доктор технических наук сказал мне:

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

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

Мне действительно не нравится, как школы программирования и выкачивание «разработчиков полного стека» и работодателей нанимают только «разработчиков полного стека», а только хорошие разработчики являются «разработчиками полного стека». Это модное словечко сопровождается горячим аргументом в пользу технического долга (подробнее об этом позже).

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

Если мы, разработчики, уже знаем, что невозможно научиться всему и быть настоящей рок-звездой программирования во всем, то почему мы позиционируем себя как «разработчики полного стека»?

«Полный стек» означает, что вы можете:

  • Расширяйте базы данных с необходимым дизайном (реляционная / нереляционная / обе)
  • Серверы (Интернет, автоматизация, QA, Dev, Staging, Production)
  • Развертывание и DevOps (все, что указано выше, но теперь оно должно быть активным, а не локально)
  • Внешний интерфейс (Javascript Framework, библиотека просмотра и т. Д.)
  • Дизайн и стили для внешнего интерфейса (Sass, CSS-in-JS, возможно Photoshop или Sketch, InVision и т. Д.)

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

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

«Разработчики полного стека» во всем «хороши» или «одинаково посредственны».

Мне легко закрепить эти навыки в своем резюме и рекламировать себя как разработчика полного цикла:

  • Реагировать
  • Sass / Scss
  • PostgreSQL
  • JavaScript
  • Express.js

Но какова реальная история всего этого?

  • Реагируйте - я очень хорошо это знаю! Он первый в моем списке!
  • Sass / Scss - я тоже это хорошо знаю!
  • PostgreSQL - я могу делать SELECT * от пользователей; может быть, ПРИСОЕДИНЯюсь, если я немного погуглию
  • Javascript - в наши дни все является JS. Это всего лишь пункт, чтобы сделать мой список длиннее и заставить меня выглядеть круто.
  • Express.js - это сервер. Я знаю основы и все. Кроме того, еще один пункт, чтобы я выглядел так, будто знаю, что делаю (а не знаю).

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

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

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

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

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

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

Будьте экспертом в одной части парадигмы полиглота. Когда вы освоите одну из них, вы, естественно, увидите, как она сочетается с другими технологиями. Сначала ФОКУСИРУЙТЕСЬ, а затем разнообразьте свой набор навыков. Вы сможете быстрее подобрать другие части, если будете знать одну очень хорошо.