Если вы откроете любой сайт с вакансиями, наверняка увидите объявления о поиске неких Fullstack-разработчиков. При этом требования к соискателям будут сильно различаться, но суть всех таких вакансий одна: «за среднюю айтишную зарплату ищем человека, который умеет все или почти все».

Давайте попробуем понять, Fullstack-разработчик — кто это, и существуют ли они на самом деле.

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

Давным-давно кто-то предположил, что в природе должны существовать IT-мастера космической мощи, которые могут в одиночку пройти все стадии разработки программного продукта.

А именно:

  1. Сбор и анализ требований.
  2. Проектирование.
  3. Разработка дизайна интерфейсов.
  4. Программирование, которое часто разбивается на два больших куска работы — кодинг интерфейсов и программирование серверной части.

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

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

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

Зарплата у Fullstack-программистов в большинстве компаний — действительно стандартная для IT. По данным Хабр Карьеры за первое полугодие 2020 года, средняя медианная зарплата такого специалиста составляет 107 000 рублей. Она выше, чем у среднего фронтенд-разработчика (100 000 рублей), но ниже, чем у бэкенд-разработчиков (125 000 рублей).

Желания кадровиков тоже понятны: им хочется нанять человека, который сможет переключаться между всеми типами задач, связанных с разработкой, и вносить вклад во все этапы работы. Такой специалист никогда не будет сидеть без дела, все сделает сам и выдаст готовый продукт — круто, дешево и в срок. Единственная проблема — это едва ли возможно в реальности.

Реально ли нанять Fullstack-разработчика

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

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

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

Да, джедаи существуют. И они готовы спасать нашу вселенную от IT-хаоса!

Node.JS — академия джедаев фуллстек-разработки

Ситуация с количеством и качеством Fullstack-разработчиков улучшилась с появлением платформы Node.JS. Сперва «Нода» позволила писать на одном языке различные браузерные интерфейсы. А с появлением React Native, развитием дизайн-систем, material-дизайна и библиотек готовых визуальных компонентов программисты смогли не только вести полноценную мобильную разработку, но и собирать неплохие интерфейсы на коленке.

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

В итоге шансы найти настоящего крутого фуллстек-джедая, пишущего на Node.JS, выше, чем найти инженера такого же уровня с другим набором языков.

Путь фуллстек-разработчика — освоение Node.JS

Работать сразу на несколько фронтов — весело и интересно. А еще такой навык позволяет почувствовать себя супергероем, который может самостоятельно разрулить любую проблему:

  1. Выберите Node.JS в качестве основного языка. Одно это сильно приближает вас к цели.
  2. Освойте разработку серверных приложений на «Ноде». Серверные приложения фокусируются на работе над данными и передаче информации по сети — это намного проще, чем клиентская разработка, где программистам нужно уделять время анимации интерфейсов, верстке и проработке приложения под разные устройства: компьютеры, смартфоны, планшеты.
  3. После того как вы овладеете тонкостями Node.JS, переходите к разработке браузерных приложений. К этому моменту вы должны быть хорошо знакомы с языком, чтобы уделить больше времени визуальным эффектам и тонкостям работы разных браузеров. Это огромный пласт знаний, который придется засунуть в голову.
  4. Если не захотите оставаться в браузерной разработке, вы можете двинуться дальше и попробовать мобильные приложения на Node.JS. Порог вхождения в эту область выше: тонкости мобильной анимации, обработка свайпов на экране, оптимизация под мобильные платформы — это интересно, но сложно.

Если вы добрались до конца списка — profit! Вы уже настоящий Fullstack-джедай.

Альтернативный вариант пути настоящего фуллстек-разработчика

Альтернативный вариант — осваивать языки программирования и технологии, которые используют узкие специалисты. Вот что вам потребуется:

  • HTML и CSS.
  • JavaScript для разработки сценариев для страниц сайтов.
  • Базы данных, в частности PostgreSQL, MySQL и другие.
  • Адаптивная и кроссбраузерная верстка.
  • Система контроля версий, в частности, Git.
  • Понимание работы сервера и хостинга, умение настраивать сервер.
  • Популярные CMS и фреймворки.

Где готовят настоящих фуллстек-разработчиков

На курсах можно получить профессию Fullstack, что это за обучающие программы — давайте посмотрим:

IT-джедаи следят за новостями отрасли

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

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

Пишите, читайте, не останавливайтесь на достигнутом и учитесь управлять великой силой Node.JS — таков путь настоящего Fullstack-джедая.

Плюсы и минусы пути фуллстек-разработчика

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

Плюсы:

  1. Вам проще сменить профессию. Поскольку вы базово разбираетесь и во фронтенде, и в бэкенде, то при желании можете выбрать одно направление и сменить специальность. Конечно, на глубокое погружение в новые стеки и технологии потребуется время. Но стать, например, бэкенд-разработчиком вам будет проще, чем фронтенду.
  2. Вам легче стать руководителем. Вы можете в одиночку спроектировать ПО или приложение, а, значит, хорошо разбираетесь в том, как устроена разработка. Это упрощает переход в тимлиды или архитекторы, но потребуются умение управлять командой и выстраивать процессы.
  3. Вы можете создавать решения на стыке технологий. В одиночку вы можете разработать решение, для создания которого обычно требуется несколько человек с разной специализацией. Навык может быть полезен, если вы захотите разработать собственный продукт и запустить стартап. В этом случае как минимум для MVP (минимального жизнеспособного продукта) вам не потребуется нанимать команду.
  4. Риск выгорания ниже. Программисты выгорают, когда длительное время занимаются одной и той же работой, в которой уже успели досконально разработаться. На позиции Fullstack вам постоянно приходится изучать новые технологии — риск выгорания ниже.
  5. Вы можете выбирать лучшие решения. Понимая, как взаимодействуют разные системы, вы можете выбирать решения, которые боятся использовать другие разработчики из-за недостатка опыта.

Минусы:

  1. В конкретной сфере вы хуже, чем узкий специалист. Из-за большого количества технологий, с которыми приходится работать, у вас не остается времени на глубокое погружение в конкретную сферу. Из-за этого в отдельных вопросах вы всегда будете уступать программисту с узкой специализацией.
  2. Вам сложнее развиваться. Фронтенд и бэкенд-разработчики могут глубоко разобраться в инструментах, с которыми постоянно работают. Вы вынуждены распределять время между разными технологиями. И по этой причине растете медленнее, чем разработчики с узкой специализацией.
  3. Вам сложнее искать работу. В вакансиях работодатели редко указывают должность «Fullstack-разработчик». Скорее вам придется откликаться на вакансии, подходящие по навыкам, обязанностям и стеку технологий. Найти их сложнее: вы не можете настроить поиск по одному ключевому слову. Придется использовать разные ключевые слова или отсматривать все вакансии с нужным уровнем зарплаты.
  4. Работодатели могут вам не верить. Некоторых HR-специалистов настораживает, когда в резюме у соискателя слишком много разных навыков и технологий. Они могут подумать, что вы приукрашивайте свой опыт. Поэтому лучше составлять резюме под каждую вакансию разработчика, оставляя только опыт, интересный потенциальному работодателю.
  5. Вам сложнее отдохнуть в отпуске. Поскольку вы закрываете широкий пул задач, то вас сложнее заменить другим специалистом. В отпуске вам могут звонить и писать коллеги, которым нужна помощь в каких-либо вопросах.