Как стать фулстеком, если знаком только с фронтендом или бэкендом?

Как стать фулстеком, если знаком только с фронтендом или бэкендом?

Umbrella IT

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

Зачем это нужно?

Программисту бэка или фронта стоит задуматься о расширении стека, если хочется: 

  • открыть новые горизонты для творчества. Можно работать в большом количестве проектов и применять много инструментов. Бэкенд и фронтенд разработка в этом смысле менее гибкие - разработчик погружается в стек и действует в определенных, иногда достаточно узких границах. 
  • избежать выгорания. Ориентация на полный стек - предохранитель от выгорания. Когда чувствуешь, что работа становится рутиной, не нужно ее менять. Достаточно сместить фокус внимания.
  • всегда и всем приносить пользу. Фулстек пригодится везде - он видит картину целиком, поэтому понимает, как подготовить удобное и функциональное приложение для любой платформы. 

Работодателю выгодно нанимать грамотного фулстека по нескольким причинам: 

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

За и против

МинусыПлюсы

В описаниях вакансий указаны невыполнимые требования к знаниям

Легче найти работу, чем узкому специалисту

Непонятно куда расти, что изучать, какие скилы прокачивать

Проще стать тимлидом или архитектором, потому что фулстек понимает общую структуру разработки

Фулстек всегда слабее в конкретной теме, чем узкий специалист

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

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

Работа на стыке технологий учит не бояться пробовать новое, дает простор для творчества

Софтскилы

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

  • Обучаться и самообучаться. Нужно быть готовым читать, спрашивать, гуглить. Технологии быстро устаревают. Например, пять лет назад в каждой вакансии фулстека или фронтенда было требование знать jQuery, а сейчас многие проекты стараются избавиться от него. 
  • Понимать задачу клиента. В небольших проектах или на фрилансе фулстек является единственным разработчиком, поэтому важно понимать задачу бизнеса и уметь найти лучшую техническую реализацию этой задачи. 
  • Объяснять не программистам сложные программистские штуки понятным языком. И настаивать на использовании конкретной технологии, внятно аргументируя, почему другие не подойдут. 
  • Уметь читать и понимать чужой код. Это важно для всех, но для фулстека особенно - он работает с разными языками, поэтому важно не растеряться и быстро сориентироваться в чужом коде. 
  • Быть увлеченным своим стеком и интересоваться смежными технологиями. Чтобы при необходимости знать, какой инструмент лучше использовать. Да и полезно понимать, что происходит вокруг.

Что нужно знать?

Если говорить коротко, фронтенду надо учить бэк, а бэкенду - фронт. Если шире - нужно получить фундаментальные знания о конкретном стеке и понимать, как он устроен. Придется перелопатить кучу информации, а базовые знания помогут отделить зерна от плевел. Вот с чего можно начать:  

  • Архитектура клиент-серверных приложений. Это фундамент всего. Узнаем, что такое сервер, какие используются протоколы. Может быть, вам придется настраивать серверное окружение, поэтому будет не лишним знать, как поднять и настроить сервер.
  • Протоколы обмена данными, используемые в интернете. Одна из задач фулстека - организовывать общение клиента с сервером. Нужно знать, на каком языке они говорят друг с другом.
  • Базы данных . Почти вся информации в интернете хранится в базах данных. Базы предоставляют удобные инструменты получения этих данных. Вам придется хранить и агрегировать данные, манипулировать ими. В общем без баз вам не обойтись.
  • HTML, CSS. Если вы собираетесь работать на фронтенде, то взаимодействовать с разметкой и DOM-деревом придется в любом случае.
  • JavaScript. Это единственный способ управлять поведением веб-страницы в браузере. Начинать нужно с ванильного JS, а потом уже переходить на фреймворки.
  • PHP / .NET / Ruby / GO или любой другой язык программирования, который используется для программирования бэка. Сначала нужно выучить язык, посмотреть лучшие практики/паттерны для вашего языка, потом перейти к фреймворкам, если такие есть.
  • И вдогонку парочка полезных статей для изучения фронта и бэка: 
  1. React, Angular и Vue: что изучать в 2019 году? 
  2. Серверный или клиентский рендеринг на вебе: что лучше использовать у себя в проекте и почему

Быть фулстеком

Очень хорошо: вы можете воплотить идею самостоятельно, взять и сделать себе приложение.

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

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