Full Stack, Backend- и Frontend-разработка: в чем разница?

Помните, когда-то была очень популярной и считалась очень смешной шутка про то, что программист – это человек, который чинит телевизоры и разводит мышей? С тех пор прошло много лет, и сейчас над этой шуткой уже не смеются, потому что все знают, что этим занимается системный инженер.
Это еще одна шутка, а если серьезно, сегодня все больше людей понимает, что программирование – очень широкая область приложения усилий, а у разработчиков есть множество специализаций. Например, backend-разработчик, frontend-разработчик и другие направления.
Мы заранее анонсируем нашу программу « Лучшие техники самообразования » для тех, кто хочет «научиться учиться» самостоятельно и с минимальными затратами денег и времени освоить престижную высокооплачиваемую профессию программиста. А сейчас поговорим о разных направлениях в разработке программного обеспечения.
Нам в помощь статья «Чем различается фронтенд- и бэкенд-разработка», где все нюансы разъясняются в сжатом виде [ А. Садиков, 2022 ]. И более подробный материал «Frontend vs backend: различия и особенности разработки» [ В. Бухтеев, 2021 ]. Этого нам пока хватит, и мы приступаем.
Frontend-разработка – это разработка интерфейса сайта, программы, игры, crm-системы, любого цифрового продукта. Проще говоря, все, что мы видим, когда заходим в Интернет или открываем программу у себя на компьютере: шапку, картинку, заставку, текст, кнопки, таблицы и т.д.
Если мы нажмем правую клавишу компьютерной мышки и выберем в контекстном меню строчку «Просмотр кода», мы увидим «многобуков» и некоторые знакомые слова, которые уже видели, когда зашли на сайт. Все это верстается с помощью HTML, CSS и JavaScript.
Это то, что должен знать каждый начинающий или junior frontend-разработчик и чему учат все курсы frontend-разработки для начинающих. Желающие совершенствоваться могут освоить jQuery – набор функций JavaScript, «специализирующийся» на взаимодействии JavaScript и HTML.
Это то, что должен уметь каждый frontend-разработчик. В зависимости от нюансов проекта, в обязанности фронтенд-разработчика может входить создание автотестов, исправление багов, взаимодействие с дизайнерами и бэкенд-разработчиками в формате Agile , работа с Angular (платформа для разработки веб-приложений) и Vue (фреймворк для создания пользовательских интерфейсов).
Наиболее продвинутые читатели знают, что в контексте внешнего вида цифрового продукта часто употребляется такое понятие, как « UX/UI-дизайн », где UI – это пользовательский интерфейс или оформление сайта, а UX – это функционал интерфейса. Проще говоря, UI «отвечает» за то, как будет выглядеть кнопка на сайте, а UX – за то, что произойдет при ее нажатии.
Занимается всем этим UX/UI-дизайнер и, как уже понятно из названия профессии, это не является разработкой. Будет правильнее сказать, что UX/UI-дизайнер – это проектировщик, который проектирует внешний вид и функционал цифрового продукта. А вот сделать так, чтобы это все корректно работало, – это задача frontend-разработчика.
С другой стороны, нынешний уровень развития профессии UX/UI-дизайнера и специальное программное обеспечение Figma для отрисовки прототипа сайта и создания кликабельного макета позволяет всерьез говорить о том, чтобы сэкономить на frontend-разработке [ Е. Нексман, 2022 ].
В целом, тема разделения зон ответственности UX/UI-дизайнера и frontend-разработчика актуальна достаточно давно, и желающие вникнуть в нее поглубже могут ознакомиться со статьей «Что делают UX и UI-дизайнеры, а что – фронтендщики?» [ Э. Керри, 2017 ]. А мы вернемся к нашей теме и поговорим теперь о backend-разработке.
И вот именно эти узлы и детали (двигатель, карбюратор, ходовая часть, прочее) обеспечивают движение автомобиля так, как мы это видим, и возможность управлять автомобилем, нажимая педали и вращая руль. А еще открывать дверцы, окна и багажник, включать указатели поворота и дворники, откидывать спинку сиденья и т.д.
Точно так и любой сайт или приложение – это не только красивая картинка на экране. Это еще и сервер, который обрабатывает наши запросы и присылает их на наши устройства в понятном для нас виде, и множество внутренних данных, которые там хранятся и обеспечивают этот поток информации . В целом, взаимодействие фронтенда и бэкенда имеет циклический вид:
Таким образом, backend-разработчик или backend developer – это специалист, который разрабатывает и программирует внутреннюю часть цифрового продукта. Как он это делает? Для этого нужно знать языки программирования, уметь работать с системами управления базами данных и инструментами загрузки. Что это за языки, системы и инструменты? Давайте перечислим самые основные компоненты backend-разработки.
Из перечисленных языков сейчас весьма популярен для backend Python. Отдельной темой является использование для backend С, С++ и C#. Выбор конкретного языка программирования зависит от проекта и поставленных задач. Мы сейчас не будем рассматривать нюансы использования языков программирования для разных задач, потому что для этого нужно будет написать отдельную статью про каждый из перечисленных языков.