Full stack фреймворк что такое

Обновлено: 03.07.2024

4158

Live Online Java
LIVE ONLINE FRONTEND DEVELOPER

Full stack разработчик, который может создать из прототипа полноценный MVP (минимальный жизнеспособный продукт), часто считается тем, кто берется за все, но ничего толком не умеет, и не без оснований. Чтобы определить современного разработчика как full stack, нам сначала нужно сосредоточиться на том, кем был разработчик full stack.

Full Stack разработчики «тогда», раньше

Давным-давно, около 2000 года (в интернет-времени 17 лет – это очень давно), full stack разработчиком был тот, кто мог:

- создать веб-страницу в некоторых инструментах Adobe, таких как Photoshop или Fireworks

- превратить этот дизайн в HTML, CSS и горячие точки на изображениях (помните их?)

- написать некоторые базовые сценарии PHP 4.0 (тогда объектно-ориентированного PHP не было и на горизонте) для обработки серверной части логики

- хранить все динамические данные в MySQL, возможно, немного оптимизировать

Live Online Java
LIVE ONLINE FRONTEND DEVELOPER

- загружать все на сервер по FTP и собирать оплату.

Обратите внимание, о каком PHP здесь идет речь: у full stack Flash или Coldfusion разработчика был другой (но не очень отличающийся) рабочий процесс.

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

Что же должен знать Full Stack разработчик сейчас?

В наши дни мы сталкиваемся с такими ситуациями:

Чтобы преуспеть в современном насыщенном рынке, разработчики, которые часто являются перфекционистами, не решаются делегировать процессы и работу и часто живут под девизом «если вы хотите что-то сделать правильно, то сделайте это сами». Это загоняет специалиста в угол, где он обязан и должен знать все. Таким образом, сейчас Full Stack разработчик - это:

Server Admin / Devops

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

- подключение к удаленным серверам через терминал, в среде без GUI

- основные сценарии оболочки

- управление пользователями и группами на сервере

- управление серверными программами, такими как Apache и Nginx для обслуживания приложений

- управление брандмауэрами и разрешениями

- установка нового программного обеспечения и обновление дистрибутива

Тема связана со специальностями:

Помимо этих основ, разработчик должен знать, как создавать хорошие, здоровые, изолированные среды разработки, как в Docker, так и на виртуальных машинах, таких как Vagrant.

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

Облако

Помимо реальных управляемых или виртуализированных серверов, разработчик должен знать об облаке – хостинге на таких платформах как Heroku, Google Cloud, Azure, AWS и других.

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

Back End

Что касается back end, помимо знания выбранного языка – например, PHP и его множества фреймворков и CMS – Full Stack Developer должен быть знаком с:

- веб-серверами, такими как Nginx и Apache, которые связаны с Devops (смотрите описание выше)

- такими инструментами, как Composer для управления пакетами и зависимостями в самом PHP – никакая среда современного разработчика не будет завершенной без него

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

- поисковыми систеамиы, такими как ElasticSearch, ведь они действительно важны для производительности

- cronjobs и фоновыми заданиями с помощью таких инструментов, как Gearman или библиотек, таких как Crunz

- знанием о кешировании с помощью Varnish, Redis и аналогичных мощных инструментов, которые значительно снижают расходы на хостинг, часто создают или разбивают проект.

Базы данных

Базы данных представляют собой отдельный раздел, потому что, помимо хорошего понимания реляционных баз данных, схема которых не часто изменяется (например, MySQL или PostgreSQL), разработчик должен знать о базах данных noSQL, таких как MongoDB, Redis или Cassandra, не говоря о графовых базах данных, таких как Neo4j.

Что еще хуже, все это находится на сервере, под контролем разработчика. Есть также несколько удаленных решений, таких как Mongo-like RestDB или Firebase, принадлежащая Google, и т.д.

Front End

Здесь вообще полный хаос.

Вот довольно исчерпывающий обзор того, что необходимо для здорового рабочего процесса front end:

Видео курсы по схожей тематике:

 SQL Базовый. Разбор ДЗ

SQL Базовый. Разбор ДЗ

Подготовка к собеседованию в IT компании. Вопросы и ответы. Хитрости. Трюки.

Подготовка к собеседованию в IT компании. Вопросы и ответы. Хитрости. Трюки.

- Препроцессоры и транспиллеры (такие как Babel) для таких вещей как Typescript, ES6, LESS, SCSS, SaSS

- Builders and task runners like Grunt и Gulp

- Фреймворки как VueJS, React, Angular

- Module bundlers, такие как Webpack, Browserify, Rollup

Дизайн

В дизайне разработчик должен знать, как набросать прототип приложения, прежде чем преобразовать его в пригодный для использования формат, такой как HTML и CSS. Затем может быть добавлен интерактив с ложными JS включениями и только после того, как оболочка приложения будет завершена, а user experience дизайн и дизайн интерфейсов будет готов, начнется настоящая разработка. Это само по себе является огромной стартовой работой и требует специального набора инструментов, таких как:

- Photoshop и/или Illustrator или альтернатива с открытым исходным кодом, например Gimp/Inkscape

- хороший, быстрый редактор, такой как Atom или Sublime Text

- подборщики рисунков, такие как подклассы и подборщики цветов, которые подбирают цвета, подходящие друг другу

- сетчатые системы для CSS

- все от Front End до имитации JavaScript

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

Логирование

Чтобы эффективно следить за здоровьем приложения, разработчик должен иметь возможность отслеживать ошибки, иметь доступ к журналам и извлекать из них ценную информацию. Он должен иметь возможность распознавать и отмечать тенденции, а также уведомлять о всплесках в использовании процессора или ввода-вывода для предотвращения простоев - вовремя. Это немного связано с Devops, но требует своего определенного набора навыков.

Разработчик может создавать свой набор инструментов, который поможет получить все необходимое для всех задач ведения журнала. Например, ElasticSearch для поиска журналов, Logstash для их сбора и Kibana для панели, в которой они отображаются для удобного мониторинга.

Mobile

Наконец, мобильная разработка. Webview как на iOS, так и на Android становится все более и более эффективным, появились PWA (прогрессивные веб-приложения), а нативные приложения уже теряют свое очарование из-за сложного процесса их разработки. Таким образом, разработчик полного стека должен быть знаком с PWA или переходить на что-то вроде React Native или полностью на webview, например, NativeScript, Tabris, Cordova, Phonegap, или другую реализацию, чтобы получить хорошее «клиентское приложение» для своего API (см. back end раздел выше).

Так стоит ли становиться Full Stack разработчиком?

Итак, после всего, стоит ли стараться?

Прежде всего, следует отметить, что очень немногие full stack разработчики являются такими full stack – многие сосредотачиваются только на большинстве из этих технологий и аспектов, а не на всех, просто потому, что нельзя полностью все взять во внимание.

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

Бесплатные вебинары по схожей тематике:

Подготовка к собеседованию на позицию Junior Java Developer

Подготовка к собеседованию на позицию Junior Java Developer

Deadlines and project plans. Выполняем работу в срок и по-английски точно.

Deadlines and project plans. Выполняем работу в срок и по-английски точно.

Agile трансформация в большой компании

Agile трансформация в большой компании

Возможно, я не JavaScript rockstar, Elasticsearch ninja, гуру MySQL, Devops маньяк или мобильный ретранслятор, но в моем случае full stack позволяет мне расправлять мои крылья, тестировать различные технологии и предлагать альтернативные, необычные решения для моих клиентов на фрилансе. Деньги могут приходить со всех сторон, и я могу заключать контракты от работы на серверной стороне до разработки плагинов WP и всего между ними, потому что я умеренно знаком со всеми этими вещами. Для меня full stack определенно стоит того. Если сравнивать с моими Flash-днями, когда я получал огромное удовольствие от работы (без JavaScript!), то зарплата была ниже, а проекты – гораздо сложнее получить.

Кто такой Full-stack разработчик

5997

Python live online
LIVE ONLINE FRONTEND DEVELOPER

Full-stack разработчик (произносится “фулл стек”) — это некий мастер на все руки в мире веб-разработки. Ему под силу реализовать как клиентскую, так и серверную сторону приложения, которыми, обычно, занимаются FrontEnd и BackEnd разработчики раздельно друг от друга. Таким образом, Full-stack специалист способен в одиночку вести проект от начала до конца.

Еще в далеких нулевых и ранее не существовало подобного разделения обязанностей между разработчиками. Относительная простота разрабатываемого ПО, равно как и технологии того времени, позволяли держать процессы, которые сейчас выполняют разные люди, в одних руках. К примеру, в те времена IT-специалист, именуемый веб-мастером, и внешний вид сайта создавал, и серверную часть реализовывал, и размещал сайт на хостинге. То есть, Full-stack разработчики существовали и раньше, просто никто их так не называл.

Однако, IT-сектор не стоял на месте. Требования к программным продуктам росли, появлялись новые языки и технологии, менялись подходы к разработке. Древо IT начало становиться все более и более ветвистым, порождая новые специальности. Вместе с этим, профессия универсального бойца разбилась на два отдельных направления, а затем вновь возродилась с гордым названием “Full-stack Developer”.

Споры вокруг Full-stack

Не все так гладко, как кажется с первого взгляда. Множество опытных программистов и IT-специалистов высшего звена не признают данную должность по определению. “Почему?” — спросите вы. Ведь раньше были те же веб-специалисты, которые успешно совмещали обязанности современных направлений — фронта и бэка. Почему сегодня понятие Full-stack вызывает споры?

Распространено мнение, что Full-stack разработчиков не существует, а те, кто таковыми называются, на самом деле не соответствуют требованиям этой специальности.

Python live online
LIVE ONLINE FRONTEND DEVELOPER

Например, Сергей Немчинский — программист с 20-летним стажем, руководитель и владелец учебно-производственной компании FoxmindEd — в опубликованном видео на YouTube отзывается о Web Full-stack разработчиках следующим образом (ссылка):

В принципе, в идеале, Full-stack разработчик — это классно и замечательно. Проблема в том, что… Таких не бывает. Фактически, всё, что мы имеем на рынке из тех людей, которые называют себя Full-stack девелоперами — это примерно 50% BackEnd девелоперов, которые немножко подучили FrontEnd и уже могут Angular или React скомпилировать и, соответственно, собрать-подключить — плюс немножко понимают в верстке — даже не на уровне Junior верстальщика. Они в большинстве случаев сделать хорошо, красиво не могут никак. Максимум, что могут — сделать так, чтоб кнопка нажималась.

Либо же Full-stack девелоперы — это оставшиеся 50% FrontEnd разработчиков, которые немножко выучили BackEnd; в большинстве случаев — какой-нибудь Node.js. Может быть PHP. Такой разработчик минимально умеет что-нибудь подрихтовать, но, опять-таки, говорить о том, что он сядет и напишет вам нормальное Full-stack приложение — нет, нет и еще раз нет.

Честно скажу, мне идея с объединением в Full-stack девелоперов кажется, с одной стороны, не очень удачной, потому что фактически мы получаем “ни рыба, ни мясо”. С другой стороны, рынок требует — значит, надо. Поэтому востребованность у Full-stack девелоперов, по большому счёту, чуть больше, чем у “чистых” BackEnd или FrontEnd разработчиков. Однако, рынок уже осознал, что они (Full-stack разработчики) в своем большинстве “ни рыба, ни мясо” и потому термин “Full-stack” начинает пропадать. Теперь просто считается, что это BackEnd разработчик с небольшим знанием фронта и, наоборот, FrontEnd разработчик с небольшим знанием одного из BackEnd-языков. Мне кажется, что так гораздо правильнее”.

Другие разработчики склоняются больше к тому, что Full-stack разработка — это ни что иное, как уловки бизнеса. Работодатель не желает переплачивать за двух разных специалистов, предпочитая более дешевого аналога, умеющего всё то же самое.

По сути, весь спор касаемо Full-stack разработчика завязан на скептицизме. Сторонники мифологичности данной профессии не верят в существование разработчика, способного хорошо реализовать как FrontEnd, так и BackEnd части, поскольку за обеими скрывается множество технологий и языков, а выучить всё и работать не хуже фронтендеров и бекендщиков — практически невозможно.

Те же, кто занимаются Full-stack девелопментом, парируют, указывая на большое количество времени, проведенного за разработкой, в ходе которого так или иначе приходится заглядывать по другую сторону баррикад и разбираться во всех процессах, которые сопровождают разработку всего проекта от и до. Ну а дальше дело техники — учишь необходимые инструменты, практикуешься и можешь самостоятельно работать над целым проектом. Конечно, познания во всех используемых языках и технологиях у Full-stack специалиста будут не столь глубоки, как у узкоспециализированных собратьев по цеху, но сделать полноценный рабочий проект с нуля, реализовав как BackEnd, так и FrontEnd ему будет под силу.

Тема связана со специальностями:

Разновидности Full-stack разработчиков

Вариаций Full-stack разработчиков, на самом деле, множество: PHP Full-stack Developer, Node.js Full-stack Developer, Java Full-stack Developer и так далее. Название, которое стоит в самом начале специальности, говорит о том, какой язык/платформа берется за основу во время реализации BackEnd части. Стек технологий FrontEnd-а практически всегда одинаков и отличается лишь используемыми JavaScript-фреймворками — Angular, React или Vue.js. А вот бекенд предоставляет гораздо больше возможностей для реализации своих амбиций.

  • язык верстки HTML и язык стилей CSS;
  • языки программирования JavaScript и TypeScript;
  • препроцессоры SASS и LESS;
  • библиотека jQuery;
  • фреймворк Bootstrap;
  • Angular/React/Vue.js;
  • технологии DOM, AJAX, JSON;
  • навыки адаптивной и кроссбраузерной верстки.

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

Node.js Full-stack Developer

  • платформа Node.js;
  • фреймворк Express.js;
  • пакетные менеджеры npm, yarn;
  • Web Sockets;
  • понимание REST API;
  • другие специализированные технологии.

Java Full-stack Developer

  • язык Java + Java Core;
  • веб-сервер Apache;
  • инструменты для комфортного взаимодействия с БД — JPA/Hibernate;
  • Spring (Spring MVC, Spring Boot, Spring REST, Spring Web . .);
  • применение облачных сервисов Google Cloud, AWS или Azure;
  • знание сервлетов, JSP (Java Server Pages);
  • знание микросервисов.

PHP Full-stack Developer

  • собственно, сам язык PHP;
  • фреймворк Yii2/Symfony/Laravel.

Python Full-stack Developer

  • язык Python;
  • фреймворк Django/Flask;
  • REST API;
  • Web Sockets;
  • навыки работы с ОС Linux и веб-сервером Nginx/Apache (возможно);
  • опыт работы с облачными сервисами.

Также, от Full-stack специалиста могут потребовать навыки мобильной разработки, если работодатель будет намерен портировать веб-приложение на соответствующие платформы.

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

Плюсы профессии Full-stack Developer

Возможность самостоятельно вести целый проект

Очевидное преимущество разработчика данной направленности заключается в объединении двух течений — FrontEnd и BackEnd — в одном специалисте. Помимо того, что такой профессионал способен реализовать обе части веб-приложения, он может беспроблемно настроить их взаимосвязь, что является частым камнем преткновения между фронтендщиками и бекендщиками. Тем самым устраняются недопонимания и противоречия, которые бы неизбежно возникли между несколькими разработчиками, трудящимися над одним и тем же продуктом.

Вячеслав Лобода, Senior Full-stack PHP Developer, о своей профессии отзывается следующим образом:

Часто при решении задач веб-разработки возникает необходимость вносить правки одновременно и во FrontEnd, и в BackEnd. Для этого можно нанять двух разных специалистов или одного Full-stack разработчика. Последний вариант позволяет сэкономить время на коммуникацию

Видео курсы по схожей тематике:

Создание веб приложений на PHP

Создание веб приложений на PHP

HTML5 & CSS3 Стартовый

HTML5 & CSS3 Стартовый

Паттерны проектирования в Java

Паттерны проектирования в Java

Данный отзыв, а также все последующие взяты из статьи на dou.ua “Карьера в IT: должность Full-stack разработчик”.

Высокая скорость разработки, возможность принимать собственные решения, минимальные траты времени на лишнюю коммуникацию

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

Нравится, что могу создавать веб-приложения в одиночку, меньше задержек при работе. Например, когда работаешь как FrontEnd и нужно, чтобы BackEnd отдавал новые данные, ты просишь коллегу внести изменения, ждешь. Full-stack разработчику ждать никого не нужно. Взял и сделал как надо” — Геннадий Догаев, Web Full-stack Developer

Легкость поиска работы на фрилансе

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

Большие карьерные возможности

Широкоформатность профессии Full-stack разработчика позволяет реализовать себя в любой сфере веб девелопмента. Вы можете в любой момент переключиться на более узкий профиль — чистую FrontEnd или чистую BackEnd разработку (горизонтальное развитие, углубление в конкретную сферу деятельности), а можете стать сильным тимлидом либо архитектором, который прекрасно разбирается во всех процессах создания веб-приложений и имеет богатый опыт за плечами (вертикальное развитие, продвижение по карьерной лестнице).

Также, Full-stack разработчик может найти успешное применение своим способностям в стартапах. Стартап-команды, как правило, имеют очень малый бюджет и им гораздо выгоднее иметь тех, кто может взять на себя обязанности нескольких людей. Таким образом, вы и новый опыт получите, и сможете поработать над чем-то свежим, интересным, ранее не виданным.

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

Мало рутины и выгораний

Богатая на разнообразие деятельность Full-stack разработчиков снижает риски погрязнуть в однообразной работе. Вы владеете большим арсеналом знаний, что позволяет вам периодически переключаться между проектами и меньше уставать от применения одних и тех же технологий.

Легкость в развитии своего продукта

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

Минусы профессии Full-stack Developer

Проигрыш узкоспециализированному разработчику на его поле боя

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

Много времени на обучение

Наращивайте компетенцию постепенно, с небольших задач. Пройдите курс по недостающему вам направлению, чтобы вникнуть в базовые принципы. А дальше осваивайте знания на практике по правилу Learning by doing” — Алексей Голубев, Team Lead Full-stack Developer в GlobalLogic.

Трудно следить за новыми тенденциями

Мир IT очень гибкий и переменчивый. Словно империи — возникают и рушатся новые языки, технологии, подходы в разработке ПО, техники написания и ревизии кода. Вам, как специалисту широкого профиля, необходимо быть в курсе всех новинок, ведь, в конце концов, этого и будут требовать от вас работодатели — использования современных инструментов и подходов.

Слишком много обязанностей

Работодатели иногда начинают выдвигать большое количество требований к фулл-стек специалисту. Ранее упоминаемый Full-stack разработчик Геннадий Догаев имеет следующую точку зрения на этот счет:

Заказчики хотят свалить на одного человека слишком много. Например, уже встречаются объявления Node.js + React.js + React Native, то есть к веб-стеку добавляется ещё и мобильная разработка. Это влияет на качество знаний и конечного продукта: чем больше технологий нужно охватить, тем поверхностнее знаешь каждую из них. Кроме того, человеку не могут нравиться все направления одновременно. Мне из этого набора не очень интересна мобильная разработка

Вами хотят залатать очень много дыр

Фулл-стек разработчику могут часто делегировать разнообразные задачи на рабочем месте. Дописать за кем-то код, что-то пересмотреть, пофиксить, доделать. Работать вместо FrontEnd / BackEnd разработчика, который ушел в отпуск — милое дело. А если вас наняли как альтернативу 5-ти разработчикам, то и вовсе будут держать как раба.

Сложные задачи

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

Большая загруженность

Как вы уже заметили по предыдущим пунктам, Full-stack разработчику не дадут отдохнуть. Дел невпроворот — это точное описание его состояния на каждый рабочий день.

Сложности в замене

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

Как стать Full-stack разработчиком?

Бесплатные вебинары по схожей тематике:

Основы ООП в C++

Angular vs React vs Vue.js. Что выбрать в 2021?

Angular vs React vs Vue.js. Что выбрать в 2021?

Ответ прост — выберите наиболее близкий вам вариант профессии и изучите необходимые технологии при помощи различных ресурсов. Советуем сделать свой выбор в пользу образовательной IT-платформы ITVDN — здесь вы сможете найти 90% всех нужных вам видео курсов по любому из выбранных направлений. В конце статьи мы оставим полезные ссылки на все специальности, которые помогут вам в изучении Full-stack ремесла.

К примеру, вам понравился BackEnd-стек Python разработчика — тогда вам подойдут 2 курса по специальностям:

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

Итоги

Full-stack Developer — универсальный веб-разработчик, который объединяет в себе силу FrontEnd и BackEnd направлений. Да, специализированные девелоперы сделают всю работу лучше, чем фулл-стек специалист, однако главный конек героя этой статьи — возможность разрабатывать полноценные веб-приложения самостоятельно, доводя их до полностью готового состояния. Как и любое другое, Full-stack ремесло имеет свои преимущества и недостатки. Однако, не зря говорили классики — терпение и труд все перетрут. Так что все в ваших руках!

Возможно, нас читают практикующие Full-stack разработчики? С удовольствием прочтем вашу точку зрения на позиции, изложенные в данной статье. Также, будем рады любым вопросам и замечаниям от всех читателей!

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

Успехов и кодерского вдохновения на вашем пути!

Полезные ссылки

FrontEnd составляющая: видео курс по специальности FrontEnd Developer.

Привет, Хабр! Представляю вашему вниманию перевод статьи "What is a Full Stack developer?" автора Laurence Gellert.

image

Кто такой Full Stack разработчик?

Разумно ли ожидать, что простые смертные будут владеть всеми аспектами разработки? Скорее всего нет, но в Facebook могут попросить об этом. На OSCON (O’Reilly Open Source Convention — ежегодный съезд, посвящённый обсуждению открытому и свободному программному обеспечению) один из сотрудников Facebook сказал, что они нанимают только Full Stack разработчиков. Что это значит?

Для меня Full Stack разработчик — это человек с хорошим пониманием каждого уровня разработки и искренне интересующийся всеми программными технологиями.

Хорошие разработчики, знакомые со всем стеком, знают, как облегчить жизнь тем, кто их окружает. Вот почему я так против разрозненности на рабочем месте. Конечно, политические и коммуникационные проблемы мешают в больших организациях. Я думаю суть политики найма в Facebook заключается в том, что если умные люди используют свои головы и слушаются своего сердца, то лучший продукт создается за меньшее время.

image

Уровни Full Stack разработки:

Сервер, сеть и среда хостинга

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

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

C. Как приложение масштабируется с учетом аппаратных ограничений?

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

Моделирование данных

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

B. Full stack разработчики знают, как создать разумно нормализированную реляционную модель, дополненную внешними ключами, индексами, представлениями, таблицами поиска и т.д.

С. Full stack разработчики знакомы с концепцией нереляционных баз данных и понимают в чем они превосходят реляционные базы данных.

Бизнес логика

A. Понимание ценности, которую представляет приложение.

B. Знание твердых объектно-ориентированные принципов.

С. Знание фреймворков, которые могут использоваться.

Уровень API / Уровень действий / MVC

A. Как внешний мир влияет на бизнес логику и модель данных.

B. Фреймворки должны активно использоваться на этом уровне.

С. Full stack разработчики имеют способность писать четкие, последовательные, простые в использовании интерфейсы. Меня отталкивает степень запутанности некоторых API.

Пользовательский интерфейс (UI)

A. Full stack разработчики: а) понимают, как сделать читаемый макет, или b) признают, что им нужна помощь художников и графических дизайнеров. В любом случае, реализация хорошего визуального дизайна является ключевым моментом.

B. Владение HTML5 / CSS.

С. JavaScript это перспективный язык будущего и в мире JavaScript делается много захватывающих проектов (node, backbone, knockout. ).

Пользовательский опыт (UX)

A. Full stack разработчики ценят, что пользователи просто хотят, чтобы всё работало.

B. Хорошая система не дает своим пользователям синдром запястного канала или воспаления глаз.

Понимание что нужно клиенту и бизнесу

A. Сейчас мы размываем черту архитектора, но это слишком большая роль.

B. Full stack разработчики имеют представление о том, что происходит, когда пользователь использует программное обеспечение. Они также имеют представление о бизнесе.

Другие важные моменты

  1. Возможность писать качественные модульные тесты. Кстати, в наши дни даже JavaScript может иметь модульные тесты.
  2. Понимание повторяющихся автоматизированных процессов построения приложение, его тестирования, документирования и масштабированного развертывания.
  3. Осознание проблем безопасности имеет важное значение, поскольку каждый уровень представляет свои собственные возможные уязвимости.

Заключительные мысли

Очень плохая практика — жестко привязывать код к конкретной реализации (библиотека, ОС, аппаратное обеспечение и т.д.). Тот факт, что full stack разработчик понимает весь спектр технологий, не означает, что у него есть разрешение на использование самого простого пути. На самом деле они делают это, если это "проект на выброс".

Технологические стартапы нуждаются в full stack разработчиках из-за их универсальности! Однако, по мере развития организации, ей требуется всё больше и больше целенаправленных специалистов.

Я не уверен, что вы можете называть себя full stack разработчиком пока вы не поработаете на нескольких языках, платформах и даже отраслях в своей профессиональной карьере. Full stack выходит за рамки "senior engineer", поскольку он находится в том же направлении, что и программист-полиглот, но с более высоким представлением всех соединительных частей. Обратите внимание, что в моем списке только 3-5 пунктов, связанных с написанием кода.

Можно ли всерьёз обсуждать fullstack-разработку? Если смотреть в сторону больших фреймворков для frontend и для backend, то разговор про fullstack выглядит сомнительно. Предлагаю посмотреть на термин fullstack с точки зрения Ruby on Rails и прежних более простых принципов реализации интерактивности на классических веб-страницах. Представляю обзор frontend-возможностей, предусмотренных во фреймворке Ruby on Rails или связанных с ним.

image

Ruby on Rails — MVC-фреймворк, сосредоточенный на быстрой разработке, уделяющий много внимания поддержанию устроенности внутри проекта (чтобы «быстро» не оказалось «как попало»). В нём предусмотрено множество инструментов как для backend, так и для frontend разработки. В классическом fullstack-направлении сложилось моментное упущение из-за неосведомленности о его развитии и заблуждения об отставании используемых средств. Задача этой статьи осветить каким путем развивается fullstack-подход и сколько в нём появилось разных интересных возможностей.

Webpacker

Webpacker — гем, который идет в поставке с Ruby on Rails.

Webpacker предоставляет обертку над Webpack: команды для подключения и стартовые конфигурации для работы. Webpacker де-факто устанавливает стандарт работы с frontend в Ruby on Rails, способствует использованию последних возможностей языка JavaScript и современных принципов работы с кодом (структурированность, модульность, сборка и многое другое).

Webpacker задает общие конфигурации, необходимые для начала работы, и структуру приложения, что повышает определенность и упрощает понимание проекта разными разработчиками. Для JavaScript-кода отводится папка app/javascript/ с первичным файлом app/javascript/packs/application.js .

config/webpacker.yml
config/webpack/
config/webpack/development.js
config/webpack/environment.js
config/webpack/production.js
config/webpack/test.js
package.json
postcss.config.js
babel.config.js
.browserslistrc
node_modules/
bin/webpack
bin/webpack-dev-server
app/javascript/
app/javascript/packs/
app/javascript/packs/application.js

Webpacker запускается по умолчанию в процессе создания нового приложения и выполняет свои настройки. Создать приложение можно сразу вместе с дополнительными конфигурациями для Stimulus, Vue, Typescript или другого из списка предусмотренных:


Или установить дополнительные конфигурации после создания приложения:


Разрабатывать Frontend с фреймворком Ruby on Rails = использовать самые актуальные подходы к разработке на JavaScript. Все удобства от использования современных стандартов JavaScript хорошо интегрированны с Ruby on Rails. Предусмотрены необходимые конфигурации для работы с Webpack, что позволяет меньше отвлекаться на правильную организацию проекта и сосредоточиться на решении востребованных задач, используя привычное окружение.

Turbolinks

Turbolinks — JavaScript-библиотека, которая поставляется вместе с Ruby on Rails.

Приоритетная задача Turbolinks — облегчение нагрузки на сервер и сокращение «швов» при переходе по url-адресам приложения. Эту возможность часто сравнивают с SPA, так как создается впечатление перерендеринга содержимого в браузере вместо неказистых стандартных переходов между страницами.

  • на запуск перехода к другому адресу: turbolinks:click, turbolinks:before-visit, turbolinks:visit ;
  • или на обработку запроса к новой странице: turbolinks:request-start, turbolinks:request-end ;
  • или на процесс отображения новой страницы: turbolinks:before-render, turbolinks:render, turbolinks:load .

ActionCable

ActionCable — часть фреймворка Ruby on Rails. ActionCable обустраивает работу с веб-сокетами. Для перечисления каналов на сервере предусмотрена папка app/channels/ с первичными файлами channel.rb и connection.rb . Для реализации подключения к этим каналам — папка app/javascript/channels/ с файлами index.js и consumer.js .

Знакомиться с возможностями ActionCable лучше сразу на примере. Простейшее подключение к веб-сокетам с его помощью можно реализовать всего за пару шагов.

    Создать файл с каналом

Теперь чтобы проверить его нам потребуется простейшая страница и экшен для рассылки. Для этого создадим контроллер и добавим в роуты его адреса

Далее отправляем запрос на экшн рассылки:


И смотрим на страницу /hello и на вывод в её консоли.

Хелперы форм и Rails-ujs

Заслуживают внимания и некоторые не новые, но хорошо зарекомендовавшие себя возможности фреймворка Ruby on Rails. Среди них хелперы для представлений и форм. Изначальное удобство хелперов в том, что они облегчают интеграцию разметки с моделями, конфигурациями и другими backend-компонентами. Преимущество хелперов форм над обычной разметкой состоит в предоставлении возможности быстро перечислить поля формы не вдаваясь в подробности их привязки к атрибутам модели — с помощью хелперов связь между ними сформируется автоматически. Фрагмент, показывающий пример связывания полей формы с параметрами контроллера и атрибутами модели:

Подробнее с этим примером можно познакомиться здесь и здесь.

Rails-ujs

Rails-ujs — базовая часть фреймворка Ruby on Rails, отвечающая за ненавязчивый JavaScript.
Rails-ujs предоставляет несколько дополнительных опций для элементов страницы, которые меняют или расширяют работу с ними.

Опция remote — предназначена для элементов, которые выполняют обращение к серверу (ссылки, формы), чтобы сделать запросы асинхронными. Пример ссылки:


Для отображения результатов такого запроса требуются дополнительные манипуляции, например, добавление обработчика к remote-событиям: ajax:success, ajax:error, ajax:complete .

Опция confirm — позволяет запросить подтверждение действия перед его выполнением.

Опция disable_with — позволяет деактивировать элемент после действия

Дополнительно в Rails-ujs есть несколько удобных функций. Вот некоторые из них:

Подключить их к вашему коду можно командой

Stimulus

Stimulus — JavaScript-фреймворк от разработчиков Ruby on Rails.

Stimulus один из редких фреймворков и по своему уникальный, поскольку обустраивает frontend-разработку с применением новых подходов к JavaScript, при этом не стремится управлять всеми вашими действиями и не навязывает отделять frontend от backend.

Базовая задача Stimulus — привязка обработчиков к событиям. Согласно Stimulus исходный код нужно располагать по классам-контроллерам, а в роли обработчиков использовать их методы. По умолчанию для stimulus-контроллеров в проекте отводится папка app/javascript/controllers/ с первичным файлом index.js . Здесь мы можем добавлять наши контроллеры, для этого нужно создать файл с суффиксом _controller.js , например, articles_controller.js . Далее загрузчик Stimulus импортирует такие файлы и подключит контроллеры к соответствующим блокам на наших страницах.

У контроллеров в Stimulus предусмотрены дополнительные оснащения: инициализация объекта контроллера ( initialize ), хелперы для обращения к элементам внутри блока ( targets , таргеты), присоединение объекта контроллера к блоку ( connect ) и отсоединение от него ( disconnect ), обращение к дата-аттирибутам блока ( this.data.get ). Ниже приведен пример блока с переключением состояния активен/неактивен, написанный на Stimulus.

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

Дополнительно стоит подчеркнуть, что Stimulus хорошо сочетается с другими возможностями Ruby on Rails — почти в каждой связке возникает полезная эмерджентность.

Stimulus и Webpacker

В Webpacker предусмотрены команды для создания приложения с подключенным Stimulus:


Или для подключения его в уже созданный проект:

Stimulus и JavaScript

Stimulus способствует применению современных принципов разработки на JavaScript для реализации интерактивности на ваших страницах. Со Stimulus frontend-решение собирается модульно, для обработчиков событий используется ООП, продуманно структурируется код. Посредством таргетов с помощью stimulus-контроллеров удобно управлять подключением к элементам блока сложных графических компонентов, взятых из сторонних библиотек или написанных самостоятельно (календари, автокомплитеры, списки, деревья и другие). Благодаря этому, Stimulus — один из простейших способов перейти от устаревших frontend-инструментов и получить необходимую продуктивность от применения современного чистого JavaScript.

Stimulus и Ruby on Rails

Со структурой кода, рекомендуемой Stimulus, вы продолжаете писать на JavaScript по той же схеме, как писали бы на Ruby on Rails. Так же объявляете контроллеры, так же привязываете экшены к методам. Со Stimulus frontend-разработка становится схожа с backend, что облегчает работу и там, и там.

Stimulus и ActionCable

Stimulus и Turbolinks

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

Turbolinks не только облегчает загрузку страниц, но и кеширует их содержимое при переходе. При возврате на закешированную страницу из истории Stimulus активируется автоматически, как при загрузке новой страницы. Если требуется сохранить какие-то значения перед отключением контроллера от блока, то можно воспользоваться методом disconnect — и тогда, при возврате и подключении контроллера, он сможет восстановить своё последнее состояние. В коде первого примера работы со Stimulus можно увидеть как при отключении ( disconnect ) в data-атрибуте блока контроллера фиксируется значение this.active , а при подключении ( connect ) извлекается обратно.

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

Таким образом, возврат по истории страниц может использоваться как удобный прием работы с вашим веб-приложением.

Stimulus и Хелперы форм

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

app/javascript/controllers/articles_controller.js (фрагмент)

Stimulus и Rails-ujs

С помощью Stimulus и remote-опций можно напрямую подключать контроллеры к ajax-событиям и обрабатывать результаты запросов. Объявим ссылку с использованием Rails-ujs и привяжем к ней stimulus-обработчик.

При нажатии на эту ссылку произойдёт асинхронный Ajax-запрос в rails-контроллер articles_controller.rb на экшен show. При получении положительного ответа сработает событие ajax:success и вызовется метод showArticle из контроллера app/javascript/controllers/articles_controller.js

метод showArticle контроллера app/javascript/controllers/articles_controller.js

Что дальше?

Перечисленные средства вместе с фреймворком Ruby on Rails открывают новые горизонты для fullstack-разработки. При этом описанные инструменты относительно просты и не требуют длительных погружений — всё необходимое для успешного проекта находится на поверхности.

Создавайте веб-приложения с помощью современных и быстрых fullstack-инструментов разработки с фреймворком Ruby on Rails и получайте от этого удовольствие!

«Full-stack разработчик — это технический волшебник, который знает все языки программирования и технологии, а также прекрасно поет и танцует» Иэн Питерс-Кэмпбелл (Ian Peters-Campbell),
опытный разработчик и основатель
софтверной компании Stickbuilt.


Есть в сфере IT-разработки позиция, о которой до сих пор идут жаркие споры, потому как программисты и прочие технические специалисты не могут прийти к единому мнению о компетенциях этого IT-джедая. Речь идет о позиции Full-stack разработчика.

Потребность в таких специалистах растет с каждым месяцем в силу их универсальности, потому как один IT-джедай может заменить трех-четырех узких специалистов, легко выполняя самые разнообразные задачи. Full-stack разработчики могут работать с большим набором технологий, они способны создать веб-проект в одиночку, паралелльно выполняяя задачи Frontend-программиста и Backend-разработчика: верстка дизайна сайта, настройка функционирования форм и кнопок, создание серверной части, настройка сервера и даже создание мобильной разработки при необходимости портировать веб-приложение на соответствующие платформы.

Конечно, у каждого разработчика был свой путь к фуллстеку:

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

Знания Full-stack разработчика

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

Full-stack Developer — это разработчик, который принимает непосредственное участие во всех этапах разработки веб-приложений — от создания клиентской части (визуальная часть + пользовательская логика) до реализации серверной (базы данных, серверная архитектура, программная логика). Выделяют 4 основных столпа, на которых базируются компетенции IT-джедая:


Frontend-стек технологий практически всегда одинаков и отличается лишь используемыми JavaScript-фреймворками (Angular, React или Vue.js.):

  • язык верстки HTML и язык стилей CSS;
  • языки программирования JavaScript и TypeScript;
  • препроцессоры SASS и LESS;
  • библиотека jQuery;
  • фреймворк Bootstrap;
  • фреймворк Angular/React/Vue.js;
  • технологии DOM, AJAX, JSON;
  • навыки адаптивной и кроссбраузерной верстки.

Вариаций Full-stack-программистов множество и отличаются они лишь языком/платформой – основой Backend-разработки:

Стек технологий Java Full-stack Developer:

  • язык Java + Java Core;
  • веб-сервер Apache;
  • инструменты для комфортного взаимодействия с БД — JPA/Hibernate;
  • фреймворк Spring (Spring MVC, Spring Boot, Spring REST, Spring Web);
  • применение облачных сервисов Google Cloud, AWS или Azure;
  • знание сервлетов, JSP (Java Server Pages);
  • знание микросервисов.

Стек технологий PHP Full-stack Developer

  • язык PHP;
  • фреймворк Yii2/Symfony/Laravel.

Стек технологий Node.js Full-stack Developer

  • язык JavaScript
  • платформа Node.js;
  • фреймворк Express.js;
  • пакетные менеджеры npm, yarn;
  • Web Sockets;
  • понимание REST API.

Стек технологий Python Full-stack Developer

  • язык Python;
  • фреймворк Django/Flask;
  • REST API;
  • Web Sockets;
  • навыки работы с ОС Linux и веб-сервером Nginx/Apache (возможно);
  • опыт работы с облачными сервисами.

Помимо перечисленных технологий, Full-stack разработчикам необходимо знать:

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

  • сервис для планирования и управления проектами (GanttPRO);
  • популярная система для планирования и отслеживания проектов (Jira);
  • инструмент для Project-менеджмента (LiquidPlanner).

Знание DevOps Full-stack разработчика могут сильно отличаться в зависимости от проекта. Как правило, к ним относиться все, что касается запуска программного кода: настройка серверов, обеспечение слаженной работы специалистов команды вместе с техническими решениям. Full-stack разработчику нужны знания:

  • систему управления версиями Git, сервис для хостинга IT-проектов GitHub;
  • CI/CD-инструменты (Ansible, Jenkins, Chef);
  • тулзы для коммуникации и коллаборации (Slack и Microsoft Teams);
  • сервисы облачных вычислений и хранения данных (AWS, Azure и GCP).

Плюсы профессии Full-stack разработчика

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

Минусы профессии Full-stack разработчика

Заработные платы Full-stack разработчиков

На данный момент на известном работном сайте 442 вакансии Full-stack разработчика (выборка осуществлялась по г.Москве).

Размер заработной платы Количество вакансий
От 115 000 рублей 164
От 195 000 рублей 117
От 270 000 рублей 57
От 350 000 рублей 30
От 430 000 рублей 9

Конечно же, уровень заработной платы зависит в том числе и от уровня разработчика: Junior, Middle, Senior. Именно так в среде разработчиков определяют уровень компетенций. Он не зависит от возраста, а различается лишь кодом и уровнем выполняемых задач. В следующей статье мы поговорим об этом.

Заключение

Full-stack-разработка – это умение воспринимать самые разнообразные идеи. Со временем такой талант будет становиться все более востребованным. Быть Full-stack разработчиком не означает мгновенно переключаться с настройки сервера на программирование связующего ПО на Java, а потом на JavaScript, работающий в браузере. Специализации придуманы не зря. Но разработчик, понимающий весь стек технологий, будет писать более качественные приложения.

Спор вокруг профессии Full-stack разработчика только подчеркивает важность ее появления в IT-сфере. Очевидно, что ее содержательное наполнение и значение самого термина еще будут меняться.

Читайте также: