Что такое frontend и backend разработка
Frontend и backend-разработка позволяет создавать полноценные веб-приложения и сайты. Обе области требуют разных навыков, подходов и даже складов характера. Это как инь и ян в мире программирования — одно не может существовать без другого.
Frontend
(рус. фронтенд)
Frontend-разработка — это процесс создания пользовательского интерфейса, который пользователи видят и взаимодействуют с ним. Frontend-разработчики делают сайты, приложения, в том числе интерактивные элементы на веб-страницах, такие как кнопки, формы, меню, анимации. Они также отвечают за работу и оптимизацию интерфейса в разных браузерах и на разных устройствах, чтобы обеспечить положительный UX[1] от продукта. Грубо говоря, их обязанность — воссоздать макет, который им выдал дизайнер, и наполнить его движением.
Backend
(рус. бэкенд)
Backend разработка — это создание скрытой от пользователя серверной части приложения, то есть логики сайта. Она включает в себя работу над архитектурой сайта, управление базами данных, обработку запросов от клиентской части, подгрузку и обновление контента, работу с API и многое другое. Backend разработчики также отвечают за безопасность и защиту от возможных атак хакеров.
Разница между frontend и backend
- Место отработки. Frontend работает на мощности компьютера или смартфона пользователя, a backend — на сервере.
- Наличие базового стека технологий. Современный frontend чаще всего пишут с помощью HTML, CSS и JavaScript. Backend может быть написан на многих языках программирования.
- Взаимодействие с пользователем. Frontend взаимодействует с пользователем напрямую, backend — через frontend.
- Различие в коммуникации. Frontend разработчики больше контактируют с дизайнерами, маркетологами, а backend разработчики с аналитиками, системными администраторами и DevOps-инженерами.
Как взаимодействуют frontend и backend
Все очень просто — клиентская часть (frontend) отправляет запросы на серверную часть (backend), а сервер обрабатывает эти запросы и отправляет ответы.
Представьте, что вы сидите в ресторане. Все, что вы видите — это frontend. Вы можете взять меню в руки, позвать официанта и сделать заказ. Клиент отнесет заказ на кухню (backend), где повар проверит есть ли в наличии нужные ингредиенты. Если да, то вам принесут заказ, если нет, то официант предложит вам выбрать что-то другое.
Общение клиентов и серверов происходит посредством протоколов передачи данных, таких как HTTP, HTTPS, FTP, SMTP. Некоторые особенности:
- Когда клиент (например, веб-браузер) делает запрос на сервер, он отправляет HTTP-запрос на определенный IP-адрес и порт, на котором запущен сервер.
- Сервер, в свою очередь, принимает этот запрос и обрабатывает его, выполняя определенные действия, такие как чтение или запись данных в базу данных или отправка ответа клиенту. Сервер также может отправлять запросы на другие серверы, чтобы получить необходимые данные.
- Клиент и сервер могут обмениваться данными в форматах HTML, XML или JSON. Для обеспечения безопасности передачи данных используются методы шифрования, такие как SSL/TLS.
Frontend-разработчик
(сленг. фронтендер)
В рутинные задачи фронтендеров входит:
- Создание структуры проекта. Выбор стека технологий для реализации пожеланий заказчика, создание масштабируемую и легко поддерживаемую иерархию папок и файлов.
- Верстка макетов. С помощью HTML составляется структура документа. Написание CSS отвечает за стилизацию и итоговый внешний вид.
- Написание логики динамических элементов. Например в слайдере с помощью кода JavaScript отслеживается нажатие по стрелочке и происходит перелистывание на следующий элемент.
- Кроссбраузерность. Сайты должны отображаться во всех браузерах одинаково.
- Налаживание взаимодействия с backend. Например, работа с API — для получения доступа к данным на сервере.
Что должен знать frontend-разработчик, чтобы устроиться на работу
Минимум это:
- Git & GitHub
- Уметь пользоваться редакторами кода (Visual Studio Code, WebStorm)
- HTML
- СSS + препроцессор SASS
- JavaScript
- TypeScript
- Один из фреймворков на выбор: React, Vue.js, Angular.
- REST API
- Основы Figma
- Один из сборщиков на выбор: Webpack, Grunt или Gulp
Максимума не существует, так как на каждом месте работы будут свои требования и изменения в IT-мире происходят очень быстро.
Кроме технических навыков, придется прокачать гибкие — soft skills:
- Базовый английский
- Обучаемость и адаптация
- Коммуникабельность
- Креативность
- Инициативность и любопытство
- Ответственность и самостоятельность
Карьерный путь frontend-разработчика
- Стажировка или участие в проектах на волонтерской основе. Такие проекты можно начинать искать после изучения верстки и JS. Этот этап необязателен, но поможет в дальнейшем трудоустройстве: работодателю можно будет показать готовые проекты. Существуют оплачиваемые стажировки, но чаще всего работа строится на энтузиазме. Ориентировочные сроки — три-пять месяцев.
- Junior позиция. Тут понадобятся более глубокие знания JS, а также фреймворк и дополнительные технологии (например, REST API, Redux). Junior Frontend разработчику, как новичку, обычно назначают наставника — middle и senior разработчика и дают простые задачи, такие как верстка макета, написание простой логики создания форм и слайдеров. На уровне junior люди находятся около года. При достаточном уделении времени обучению переход на middle позицию происходит быстро. Средняя зарплата в России — 120 тыс. рублей по данным Glassdoor.
- Middle позиция. Добавляется Node.js, работа с SQL, GraphQL, СУБД MySql. Средняя зарплата — 220 тыс. рублей.
- Senior позиция. Чтобы стать senior нужно иметь много опыта и расширять свои знания в глубину. Средняя зарплата — 300 тыс. рублей.
- Дальнейший путь. Можно пойти в тимлиды[2], в менеджеры проектов или в преподавание.
Backend разработчик
(сленг. бэкендер)
В рутинные задачи бэкендеров входит:
- Разработка базовой логики и алгоритмов продукта
- Работа с базами данных при помощи СУБД
- Создание интеграций с внешними сервисами
- Разработка и поддержка API
- Разработка системы авторизации и безопасности
- Тестирование и устранение ошибок
- Оптимизация производительности сервера и баз данных
- Деплой проекта
- Работа с системами кэширования и кластеризации для обеспечения масштабируемости
- Поддержка и сопровождение проекта после его запуска.
Что должен знать backend-разработчик, чтобы устроиться на работу
- Язык программирования: например, Java, Python, Ruby, PHP, C#. Необходимо знать основы языка, структуры данных, алгоритмы, объектно-ориентированное программирование и/или функциональное программирование.
- Базы данных и SQL: владение реляционными базами данных и языком SQL для создания, изменения, чтения и удаления данных, а также понимание баз данных NoSQL.
- API: создание API и работа с существующими API. Знакомство с RESTful API, SOAP, GraphQL.
- Системы контроля версий: знание Git — ветки, коммиты, пул-реквесты, сливать ветки и решать конфликты.
- Операционные системы и сервера: знать особенности Windows, macOS, Linux, Apache, Nginx, уметь устанавливать и настраивать серверное ПО, обеспечивать безопасность сервера, мониторить его работу и настраивать сетевые соединения.
- Тестирование и отладка: писать модульные, интеграционные и функциональные тесты, использовать отладчик и логировать ошибки.
- Безопасность: основы безопасности и защиты данных. Обеспечение защиты от SQL-инъекций, XSS-атак, CSRF-атак.
Гибкие навыки:
- Знание Agile-методологии
- Базовый английский
- Обучаемость и адаптация
- Коммуникабельность
- Креативность
- Стрессоустойчивость и адаптивность
- Организованность и ответственность
- Аналитические способности
Требования к знаниям и навыкам зависят от конкретной вакансии и проекта.
Карьерный путь backend-разработчика
- Стажировка. Будет полезна тем, кто хочет попасть в крупные компании. Например, вот ссылка на стажировку в Yandex.
- Junior позиция. Это начальный уровень для новичков в программировании. Junior Backend Developer обычно работает под руководством более опытных разработчиков и выполняет простые задачи, такие как создание баз данных, написание простых запросов и тестирование кода. Средняя зарплата в России — 120 тыс. рублей.
- Middle позиция. После того как Junior Backend Developer получит достаточный опыт и знания, он может перейти на следующий уровень — Middle Backend Developer. Middle Backend Developer отвечает за более сложные задачи, такие как разработка сложных алгоритмов, создание веб-сервисов и оптимизация баз данных. Средняя зарплата 200 тыс. рублей.
- Senior позиция. Senior Backend Developer — это высшая ступень карьеры backend разработчика. Он отвечает за разработку сложных систем и архитектур, а также за управление проектами. Senior Backend Developer также может заниматься менторством более молодых разработчиков и помогать им в их профессиональном развитии. Средняя зарплата около 350 тыс. рублей.
- Дальнейший путь. Вариантов много, можно стать тимлидом, техлидом, проджект менеджером, СТО или уйти в преподавание.
Fullstack-разработчик
(сленг. фулстакер)
Fullstack разработчик — это универсальный специалист, который способен работать как с клиентской, так и с серверной частью приложения. То есть создавать продукт с получения макета от дизайнера и до выпуска в продакшн. Fullstack разработка ценится малым бизнесом и пригодится на фрилансе. В крупных компаниях по факту, начиная с уровня middle, фронтенд специалисты должны владеть Node.js и знать принципы бэкенда, поэтому руководства также с удовольствием берут фулстакеров.
Что fullstack разработчик должен уметь делать:
- Обладать навыками программирования на языках, используемых в веб-разработке
- Работать с базами данных
- Знать основы системного администрирования
- Иметь опыт работы с фреймворками и библиотеками
- Создавать пользовательские интерфейсы
- Работать с API
- Создавать и настраивать серверную инфраструктуру
- Обеспечивать безопасность
- Работать с Git
- Иметь понимание о тестировании и отладке приложений
- Создавать продукт от и до
Карьерный путь fullstack-разработчиков похож на путь бэкенд разработчиков. Средние зарплаты несколько выше, например для junior позиции это будет 140 тыс. рублей.
Что выбрать: frontend- или backend-разработку?
Выбор зависит от ваших интересов и навыков. Вы можете начать с изучения основ одной из областей и, если она вам понравится, углубляться в нее дальше.
Рекомендуем пройти бесплатный тест от Профгид.
Если вам трудно сделать выбор, начните с изучения fullstack-разработки, где вы сможете работать с обеими областям. Помните, что любому frontend-разработчику для развития карьеры понадобятся скиллы бэкенда.