На рынке существуют полярные мнения о фулл-стек разработчиках: одни специально ищут их для проекта, другие ставят в один ряд с драконом и единорогом. Разбираемся, что это за специалисты и стоит ли брать их в команду.
Кто ты будешь такой
Сайт состоит из бэкенда — программной части сайта, находящейся на сервере и невидимой для пользователя, и фронтенда — интерфейсной части, которая выводится на экран, и с которой взаимодействует пользователь.
Для разработки каждой части используются разные языки программирования и технологии, поэтому обычно специализация разделяется.
Фулл-стек разработчик может писать код и для бэкенда, и для фронтенда, владеет всеми технологиями, базами данных, фреймворками. А также должен предвидеть сложности, которые могут возникнуть в процессе интеграции слоев стека. По данным исследования Stack overflow 51.9% респондентов определяют себя именно как фулл-стек разработчики.
Дискуссия о том, можно ли одинаково хорошо знать все необходимые технологии, началась с того, что разработчик Facebook сказал на конференции OSCON, что он ищет в свою команду только фулл-стек разработчиков.
И здесь тренды
Технологий очень много, и они быстро обновляются. У нас в команде бэкенд и фронтенд разрабатывают разные специалисты, глубоко погруженные в технологии и следящие за трендами. Сейчас must это:
Фронтенд:
- JavaScript;
- Cтили, верстка — CSS, HTML;
- Одна из библиотек или фреймворков — React, Vue или Angular;
- Сборка — webpack или Rollup.
Бэкенд: Наиболее популярные языки — PHP, Go, Python.
Базы данных: MySQL, Cassandra.
Сейчас в тренде микросервисы, а чтобы создавать их, нужен Docker. Нужно знать Kubernetes Kubernetes для построения архитектуры проекта, и таких технологий много, изменения происходят постоянно. Языки Go, Rust появились 5 лет назад, но пару лет назад стали популярны.
Изображение из блога Hackernoon
В теории один человек можно знать и фронтенд, и бэкенд, но на практике он не справится с конкретными вопросами и будет пропускать ошибки. Он не напишет обязательные unit-тесты, а код получится запутанным, потому что приходится фокусироваться на множестве вещей одновременно.
Поэтому от фулл-стек разработчика менеджер может услышать:
- протестируем потом;
- пользователи протестируют это за нас;
- логи ошибок не так уж важны.
В итоге создаются сайты, где не работают формы, не учтены требования браузеров, не проработаны детали.
Пытаясь найти фулл-стек разработчика, компания или агентство думает, что найдет человека, «который может сделать сайт», а кроме того, еще поработает немного менеджером и ответит пользователям.
Все это отразится на финальном продукте — приложении или сайте. Лучше собрать перечислить все реальные требования для вашего проекта, а не давать абстрактное название.
Ответ на все вопросы
Главная проблема, которая ставит факт экспертности фулл-стек разработчика под вопрос — это необходимость следить за всеми обновлениями. Недостаточно просто почитать о сервисах, нужно знать, как ими пользоваться. А угнаться за ними физически невозможно. Каждый год компоненты стека обновляются, а каждые несколько лет к стеку добавляется новый слой.
Чтобы выучить все технологии фронтенда, надо заниматься только им и не переключаться на бэкенд. А за это время технологии бэкенда обновятся и придется наверстывать огромный объем знаний.
Скотт Хэдфилд в своей публикации Фулл-стек-разработчик – это миф объясняет, что потенциальный фулл-стек должен понимать принцип работы каждого компонента стека, чтобы знать где их использовать и принимать обоснованные решения. А после этого еще понятно объяснить выбор решения менеджеру.
Когда бэкенд-разработчик знает, как делается фронтенд, он приобретает много преимуществ: может быстро адаптироваться на основе знаний, который собрал. Он понимает работу многих технологий, и поэтому может выбрать хорошее решение для проекта. Но это не делает его фулл-стек разработчиком.
Для разработки сайта нужна команда бэкенд и фронтенд-разработчиков, эксперты в своей области предложат самое актуальное техническое решение.