Чем занимаются fullstack-разработчики: спрашиваем у них
Что нужно, чтобы стать фулстеком.
Fullstack-разработчики — это универсальные специалисты, которые могут самостоятельно создать продукт, потому что разбираются и в программно-аппаратной части сервиса, и в построении интерфейса пользователя.
Компании открывают вакансии для FullStack Developers, поскольку часто нужно разработать MVP или же поддерживать технически несложный сайт. В таких случаях одному человеку проще разобраться в логике, и он может быстро вносить изменения.
Мы спросили у Кирилла Козака, Co-founder Lambda Team, Данила Толмачева, Fullstack Engineer и Team Lead в Techstack, и Олега Бильки, Fullstack-разработчика в Grid Dynamics, какие задачи они решают, как стать фулстеком и в чем плюсы и минусы профессии.
Базовые знания fullstack-разработчика
Fullstack должен знать в два раза больше, чем frontend- или backend-разработчик, и быстро разбираться в новых инструментах. Для этого ему нужна техническая база: основы ООП, знания алгоритмов и структур данных, основы сетевых систем. Также для fullstack обязательны знания баз данных. Для того чтобы «закрыть» весь стек веб-разработки, программист должен иметь хотя бы базовые знания DevOps.
Кирилл Козак:
«Есть фулстек-разработчики, которые понимают не только фронтенд и бэкенд, а еще и DevOps. Они закрывают цикл разработки самостоятельно, делают архитектуру на бэкенде, подсоединяют к дашборду, чтобы все работало. Таким образом, среду разработки и деплоя в продакшн строит один человек».
Задачи и обязанности fullstack-разработчика
Fullstack-разработчики — эксперты во внешнем и внутреннем интерфейсе и владеют полным набором технологий, из которых состоит веб-сайт. Они работают как с клиентскими, так и с серверными языками и фреймворками в серверных, сетевых и хостинговых средах.
Олег Билька:
«Вокруг концепции разработчика полного стека много споров, потому что некоторые люди сомневаются, может ли такой человек существовать.
Появляется все больше элементов и функций для веб-сайтов и веб-приложений. Их количество выросло до такой степени, что быть по-настоящему “полным стеком” невозможно.
Термин fullstack означает разные вещи для разных людей, в зависимости от ниши. Он может быть отличным вариантом для стартапов и команд с ограниченным бюджетом. Как член команды fullstack-разработчик может взять на себя ответственность за проект, быстро итерировать продукт и устранить проблемы по мере их возникновения.
Этот специалист должен обладать навыками в разных нишах разработки: от баз данных до графического дизайна UI/UX. Он может заменить нескольких узких специалистов».
Основные обязанности fullstack-разработчика:
- Помощь в проектировании и разработке программного обеспечения;
- Написание чистого кода для frontend- и backend-частей;
- Тестирование и отладка;
- Проектирование модели данных и архитектуры;
- Обслуживание серверной части;
- Тестирование и поддержка адаптивного дизайна приложений;
- Работа с графическими дизайнерами над созданием новых фич;
- Разработка API и сервисов RESTful/GraphQL;
- Забота о безопасности, обслуживании, масштабируемости продукта.
Fullstack-разработчики также разбираются в бизнес-логике и пользовательском опыте, а это означает, что они могут участвовать в разработке стратегии.
Какие инструменты нужны фулстеку
Из frontend-инструментов нужно знать HTML и CSS, уметь сверстать и стилизовать веб-страницу. И поскольку «монополист» во фронтенде — язык JavaScript, знать его тоже необходимо.
Для того чтобы веб-страница не только отображала информацию, но и имела функциональность, разработчику нужны frontend-фреймворки. Сейчас популярны Angular, Vue.js и React. Для fullstack-специалиста достаточно знания одного из фреймворков.
В backend-части большой выбор языков. Стоит рассмотреть:
- — специально разработанный для веба PHP;
- — «классические» для enterprise инструменты: Java и ASP.NET;
- — молодой и популярный среди стартапов Node.js;
- — Ruby, Python, Scala и другие.
После того как определились с серверной технологией, нужно понять, где хранить данные. Базы данных делятся на два типа: реляционные (подходят для более структурированных данных, которые легко разделить на связанные между собой таблички) и нереляционные (данные хранятся без четкой структуры). Реляционные базы поддерживают язык запросов SQL. Самые популярные реляционные базы: PostgreSQL, MySQL, MicroSoft SQL Server, Oracle Database. Среди нереляционных (или NoSQL) баз данных популярна MongoDB.
Для fullstack-разработчика полезны и другие инструменты:
- — для хранения, версионирования и построения непрерывной интеграции и поставки (CI/CD) — Github, Gitlab, Bitbucket;
- — для запуска приложений — Docker, Kubernetes;
- — для документирования и тестирования API — Postman, Swagger;
- — для хостинга приложений — облачные сервисы AWS, MS Azure, GCP, Heroku.
Преимущества профессии
Среди плюсов для самого разработчика — гибкость в выборе карьерного развития. Он работает и с фронтенд-, и с бэкенд-частями веб-приложения, а значит, углубляется то в одну, то в другую сферу, поэтому может выбрать, в какой роли развиваться.
Разработчику можно быть гибким в выборе направления, потому что фулстеки — T-shaped специалисты.
Среди преимуществ для проекта — скорость разработки и самостоятельность девелопера.
Данил Толмачев:
«Фулстек-разработчик — мультифункциональный человек. Многие бэкенд-разработчики хотят писать код на фронтенде, потому что результат работы видно. И наоборот, некоторые люди не хотят заниматься фронтенд-разработкой и связываться с дизайнерскими задачами.
Когда работаешь фулстеком, приходится сталкиваться со всем сразу и отвечать за все. Это одновременно и преимущество, и недостаток работы.
Но маленький проект фулстек-разработчик может сделать без сторонней помощи. Это будет полноценный проект, включающий фронтенд-часть (например, HTML/CSS), которую можно будет презентовать или включить в резюме, и бэкендовскую часть, которая будет иметь сложную бизнес-логику, поддерживать состояние или работать с базой данных».
Олег Билька:
«Fullstack-разработчик не обязательно должен иметь глубокие знания во всех используемых технологиях. Он может очень быстро создать прототип продукта или MVP, а также помочь каждому в команде сэкономить время на общение и интеграцию между слоями. Многие из фулстеков становятся предпринимателями или техническими партнерами в стартапах».
Недостатки профессии
Для разработчиков есть явный минус: за всеми технологиями и так не угнаться, а фулстеку приходится бежать в два раза быстрее — изучая как бэкенд-, так и фронтенд-технологии. И хотя обширность знаний — не минус, потребность изучать все и сразу отнимает больше времени и сил.
Кирилл Козак:
«Фулстек-разработчик разбирается лучше либо во фронтенде, либо в бэкенде. Такие разработчики нужны рынку. Их будет все больше, потому что зарплаты у них выше, чем у фронтендера или бэкендера.
Недостатки для проекта — все завязано вокруг одного человека, и когда он пропадает, проект останавливается. Я считаю, что на проекте должны быть люди с разными ролями — тимлид, DevOps, фронтенд- и бэкенд-разработчики.
Фулстек — это скорость, которая нужна стартапам. Он хорош на early-stage, но когда проекту нужна стабильность — следует разделять роли».
Также часто заказчики дают слишком много требований, не разбираясь, что входит в компетенции фулстек-разработчика. Например, оценивают работу одного фулстека в такие же сроки, как если бы над проектом работали два отдельных специалиста — фронтендер и бэкендер.
Данил Толмачев:
«Если сравнивать хороших фронтенд- и фулстек-разработчиков, то фронтендщик будет чуть-чуть лучше в нюансах, в которых фулстек может быть поверхностным. Здесь играет роль и опыт, и то, как часто он встречается с определенными задачами и как их решает. Но это не значит, что фулстек выполнит задачу хуже — ему просто понадобится больше времени.
Фулстек-разработчик проигрывает бэкендщикам и фронтендщикам, когда нужен узкоспециализированный специалист. Заменить фронтендщика фулстеком можно, но на практике все зависит от технологий».