Можно ли освоить сразу оба направления?
Специалистов, которые занимаются одновременно и фронтенд, и бэкенд разработкой, называют фулстек-программистами. Для создания сайтов они могут использовать разные инструменты (WordPress, Bitrix или другие CMS) и даже совмещать fullstack с мобильной разработкой или UI/UX-дизайном.
Хотя знания обоих направлений разработки существенно облегчают поиск и выбор заданий на фриланс-биржах, в целом fullstack — это ошибочный путь развития для тех, кто хочет добиться в IT значимых результатов.
Поэтому ниже мы рассмотрим отдельно backend и frontend: что это и в чем заключаются отличия между данными направлениями.
Чем занимаются frontend и backend разработчики
В зависимости от того, куда вы пойдете — во frontend или в backend — заниматься придется разными задачами, которые в общих чертах всё-таки схожи.
Frontend
Задача фронтенд-программиста — улучшить взаимодействие пользователя с сайтом, разработать удобный интерфейс, чтобы человеку было понятно, что и куда нажимать. Нередко в обязанности фронтенд-разработчика входит верстка сайта: расположение блоков, придание им внешнего вида, гипертекстовая разметка с помощью языков HTML и CSS.
Статичный сайт выглядит несовременно. Пользователь должен понимать, какие элементы являются активными, как отреагировало приложение на его действия. Фронтендер добавляет сайту интерактивности. Он должен адаптировать сайт так, чтобы тот корректно работал на всех устройствах, в любых браузерах и при различных разрешениях и размерах экрана.
- Создание калькуляторов, счетчиков, изменяемых диаграмм и графиков, конвертеров (например, валют).
- Создание слайдера, карусели, выпадающего меню и других элементов, где не требуется обработка данных.
Фронтендер занимается разработкой приложений, которые не требуют больших объёмов данных или сложной длительной обработки информации.
Backend
Задача бэкенд-разработчика — программирование всего, что находится «под капотом» сайта. Он пишет код, отвечающий за авторизацию, отправку сообщений, покупку товара, перевод денег. Backend developer создает базы данных, оптимизирует их работу, повышает безопасность хранения информации. Он же проводит первичную настройку сервера.
Раньше backend-разработчики создавали всё нутро интернет-магазинов, форумов и сайтов, реализовывали авторизацию, регистрацию, публикацию контента и другие фичи. Сегодня есть CMS — системы, которые являются «конструкторами» или заготовками для порталов. Так что от программиста требуется лишь установить и настроить CMS, а также добавить некоторые плагины, которые расширяют их возможности.
- Написание парсеров (программ для сбора информации с других сайтов) или ботов, которые будут отвечать на распространенные вопросы пользователей.
- Создание кода, который будет обрабатывать какую-либо информацию. Например, данные о пользователях, сообщениях, покупках, денежных переводах.
Бэкенд-программист отвечает за интеграцию с внешними ресурсами, получение партнёрских API. Он работает над безопасностью, защитой от DDoS-атак, взлома; принимает контрмеры на случай, если упадет сервер партнера, с которым нужна интеграция.
Параметры | Фронтенд | Бэкенд |
---|---|---|
Оценка деятельности | Результат работы всегда видно. Его можно показать знакомым, потыкать в него мышкой или пальцем (в смартфоне), сделать его красивым, анимированным. | Это работа «под капотом». Результат деятельности даже в цифрах не всегда можно выразить. Но это более серьезная работа, ведь на сервисных языках держится основной функционал. |
Языки программирования | Язык программирования JavaScript предназначен только для браузеров и нигде более не используется, так что вы будете ограничены только этой платформой. Еще потребуется знание языков разметки CSS, HTML. | Python, Java, PHP и другие языки. На всех, кроме последнего, можно программировать не только сайты. Хотя сейчас лидирует PHP (на этом языке создано 79% сайтов). Так что, по сути, выбор очевиден. |
Периодичность повышения квалификации | Ежегодно создаются новые фреймворки, а возможности JavaScript расширяются. Так что учиться придется постоянно. | Если говорить о PHP, то здесь нет таких частых обновлений, поэтому наблюдается некоторая стабильность. |
Сложность освоения | Более низкий порог входа в профессию. В первую очередь из-за того, что не нужно знать базы данных и работу с алгоритмами. | Сложнее освоить. Но он по-прежнему доступен любому человеку из-за CMS-систем, где уже реализовано 90% задач. |
Кому подходит | Отлично подойдет любому. | Для людей с математическим складом ума подходит лучше. |
Что с рутиной | Есть рутинные задачи по верстке. | Есть рутинные задачи по установке и настройке CMS. |
Необходимые знания и личностные качества
Frontend
Для работы во фронтенде потребуется знание трёх языков:
- HTML — язык разметки (не программирования!). Отвечает за отображение элементов (форм, картинок, ссылок, текста) на странице. Требуется современный HTML5, понимание, где должны применяться новые теги.
- CSS — язык разметки. Отвечает за внешний вид элементов (цвет, размер, тени и другие стили). Сейчас используется CSS3.
- JavaScript — главный инструмент. Необходимо знать его современную версию — ES6. От новичка потребуется знание DOM, event-событий, контекста, замыканий.
Обязательно нужно знать JQuery — это старейшая библиотека JavaScript, которая уже сбавила свою популярность, однако на ней созданы известные препроцессоры и фреймворки. Библиотека позволяет легко вставить простую анимацию.
Любой фронтенд-программист должен знать хотя бы один фреймворк на выбор:
- React — наиболее популярный. Удобный, легкий в освоении.
- Vue — посложнее в изучении, но зато обладающий расширенными возможностями.
- Angular — самый крупный фреймворк для серьезных задач с большим порогом входа.
Backend
Для работы в бэкенде потребуется знание следующих технологий:
- Как работает интернет, хостинг, что такое домен. Эти знания нужны и фронтенд-разработчику, но в бэкенде они должны быть на гораздо более глубоком уровне.
- Базы данных. Они бывают реляционные и нереляционные. Новичку лучше выбрать первый вариант, освоить язык запросов SQL и одну из СУБД — MySQL или PostgreSQL.
- API. Надо знать, какие они бывают и как работают. Понять, что такое REST, уметь грамотно его написать. Освоить JSON:API.
Языков программирования несколько, нужно знать лишь один из них, но на очень хорошем уровне (предпочтителен PHP, но можно выбрать любой):
- PHP — большая часть CMS и сайтов создана именно на нем. Популярен среди бэкенд-разработки, хотя далеко не совершенен.
- Python — перспективный и крайне простой для изучения язык.
- Java — универсальный язык, на котором можно сделать сайт, банковское ПО, мобильное приложение.
Кроме того, нужно освоить один фреймворк, подходящий для вашего языка:
- Yii2, Symfony или Laravel для PHP (на выбор). Все они решают одну и ту же задачу — быстрое создание «движка» сайта. Наиболее распространен Laravel.
- Django для Python. С его помощью можно довольно быстро развернуть сайт. Так же прост в изучении, как и язык Python.
- Spring для Java. Крайне мощный фреймворк, на котором можно создавать почти всё что угодно, в том числе и сайты. Имеет массу модулей: MVC/Boot (основа сайта), REST, AOP, Data (БД) и другие.
Общее
Вне зависимости от выбора направления нужно освоить Git и GitHub — технологии, с помощью которых можно хранить различные версии своего приложения и обмениваться ими с другими разработчиками.
Также всем программистам обязательно необходимо владеть английским языком на достаточно высоком уровне. Новичку хватит B1, чтобы читать документацию и Stack Overflow. Мидлу уже потребуется разговорный английский, чтобы участвовать в конференциях и обсуждениях заданий с заказчиком (часто англоязычным).
- Умение работать в команде. Любой крупный продукт создается в команде. Человек должен спокойно относиться к критике, легко идти на контакт.
- Готовность учиться. Программирование всегда быстро развивается, нужно поспевать за трендами, регулярно посещать конференции и быстро внедрять новые технологии.
- Отсутствие страха перед проблемами. Половина времени специалиста уходит на решение задач, над которыми никто никогда не работал. Другая половина уходит на поиск и устранение багов.
- Любовь к делу. Процесс программирования должен вам быть интересным.
Кто больше зарабатывает — backend или frontend?
На оплату труда сильно влияют условия, которые предоставляет конкретная компания, ее готовность вкладываться в сотрудника. Рост дохода зависит от квалификации специалиста, нежели от сферы, где он работает.
Зарплаты backend и frontend программистов не сильно отличаются. Но в бэкенде доход чуть выше, так как здесь легче стать тимлидом и вакансий на синьора сегодня в этой сфере больше.
Чтобы зарабатывать максимум, нужно стать разработчиком-синьором. Бэкендеру это сделать проще, так как его профессия требует более фундаментальных знаний.
Отдельно стоит рассмотреть фриланс, так как условия здесь иные. В первую очередь необходимо понимать, что доход на фрилансе зависит от коммуникабельности, умения презентовать свои навыки и портфолио. На англоязычных биржах платят в среднем вдвое больше, но успех сильно зависит от уровня владения иностранным языком.
Карьера и перспективы
Прежде чем решить, что выбрать — frontend или backend, нужно рассмотреть карьерные перспективы в каждой сфере. В общих чертах путь схожий.
Человек начинает со статуса trainee или стажера.
Затем около года-двух сотрудник трудится джуниором. Младшие программисты работают над небольшими задачами под руководством опытного наставника. Этот путь быстрее пройти во фронтенде.
Следующий уровень — мидл-разработчик. Это уже полноценная «боевая единица». Переход из джуниора в мидлы примерно одинаковый, сложнее придется бэкендерам, которые изучают язык Java.
Далее специалист может пойти в техническую сферу и получить серьезную квалификацию или стать управленцем, то есть тимлидом. Переход из мидла в синьоры в бэкенде проще, так как здесь изначально требуются более фундаментальные знания.
Главный совет
На деле есть единственный правильный способ выбора сферы программирования — немного изучить язык и выполнить простую задачу (можно по видео-туториалу). Только тогда вы сможете понять, нравится вам это или нет. А вот на зарплату и карьерные перспективы особого внимания обращать не стоит — по данным пунктам у frontend и backend разработчиков ощутимой разницы не наблюдается.