В программировании сегодня есть много специальностей, но вот основные технические.
- Фронтенд-разработчики пишут видимую часть сервисов и приложений. Они создают красивые анимации, удобную вёрстку, пишут код, чтобы всё это правильно работало.
- Бэкенд-разработчики отвечают за невидимую часть, с которой связан фронтенд: занимаются серверами, базами данных, делают API для веб-приложений. Пользователи не видят бэкенд, но без него ничего не работает.
- Фулстек-разработчики занимаются сразу двумя направлениями.
- Ещё есть инженеры DevOps и MLOps. Они следят за общей инфраструктурой и улучшают процессы разработки так, чтобы всё работало быстро и без поломок.
- Это не всё: есть тестировщики, аналитики данных, специалисты Data Science, инженеры данных и машинного обучения. IT растёт, и количество направлений тоже увеличивается.
Что делает backend-разработчик
Когда пользователь заходит на страницу веб-приложения в интернете, он видит фронтенд и взаимодействует с ним — это кнопки, формы регистрации и оплаты, корзина.
Но когда мы что-то нажимаем и вводим в вебе, подключается бэкенд: кнопки вызывают действия на сервере, информация для регистрации загружается в базы данных, корзина уточняет, есть ли товар в наличии.
Получается, что красоту фронтенда мы можем увидеть и пощупать. Красота бэкенда ощущается в том, насколько быстро и без ошибок работают сайты и приложения.
Бэкенд — это про разработку и программирование
Обычно бэкенд-разработчики работают с одним из трёх языков: Python, Ruby или Java.
На Python создают веб-приложения, его применяют для автоматизации, используют в машинном обучении и на нём разрабатывают отдельные модули в играх. Это самый популярный, универсальный и востребованный из всех современных языков программирования:
Ещё один универсальный язык — Ruby. На нём написан сервис бронирования жилья Airbnb, крупнейший хостинг IT-проектов GitHub и утилита Homebrew для командной строки в MacOS и Linux.
Python и Ruby популярны из-за своих широких возможностей и простоты изучения. Последний язык в тройке самых распространённых языков для бэкенда — Java — чуть сложнее, зато производительнее.
Java (не путайте с JavaScript, это другое) создавался для программирования техники. Сейчас на нём написаны серверные части сервисов «Госуслуг», «Кинопоиска», «Яндекс Маркета», Amazon и Ebay.
Все три языка достаточно просты в изучении. Тем, кто планирует научиться бэкенду, для выбора одного из них стоит посмотреть, в каких компаниях их применяют и как они выглядят вживую, то есть в коде. Можно не бояться ошибиться: зная один язык, переучиться на другой будет уже несложно.
Самый быстрый язык бэкэнда — C++. Но работать на нём сложнее, поэтому на C++ пишут, только если нужная высокая производительность или нужно выжать максимум из железа.
Разработка — сфера для бесконечного совершенствования. Но чтобы уверенно писать код, для начала нужно изучить:
- синтаксис языка;
- основные принципы объектно-ориентированного программирования;
- библиотеки и хотя бы один фреймворк — это инструменты, которые сильно ускоряют процесс написания кода.
Алгоритмы и структуры данных
Алгоритм — это принцип работы программы: общие схемы, знание которых позволит быстро написать код нужной функциональности, так же как знание формул в математике помогает решать знакомые виды задач. Такие техники могут применяться и в работе с базами данных, и в машинном обучении, и при разработке игр.
Для более удобной работы с данными в разработке используют структуры: способы упорядочивания информации. Разные структуры работают по-разному: в каких-то данные пронумерованы, где-то они представлены попарно, а некоторые структуры неизменяемые и хорошо подходят для сохранения данных статичными.
Фреймворки для ускорения разработки в бэкенде
Написать сервер с использованием только языка программирования довольно долго и сложно, поэтому для упрощения этой задачи есть специальные инструменты — фреймворки. Они объединяют большие части кода, чтобы их можно было использовать одной-двумя строками.
Три самых популярных Python-фреймворка для серверной части веб-приложений на сегодня — Flask, Django и FastAPI.
Flask используется для простых несложных приложений. Это минималистичный фреймворк, на его освоение не нужно много времени, но для крупных проектов лучше взять что-то помощнее.
На Django можно написать любой бэкенд. Из всех фреймворков он самый популярный и сложный в освоении из-за своих широких возможностей.
FastAPI в России догоняет Django по популярности. Главная причина этому — в асинхронности FastAPI: он позволяет работать с несколькими задачами одновременно. В Django тоже добавили такие возможности, но пока что FastAPI остаётся самым быстрым из всех фреймворков на Python.
Работа с Git и другими системами
Чтобы над кодом одновременно могли работать и не запутаться несколько разработчиков, есть системы контроля версий. Самая популярная из них — Git.
С этим инструментом все видят, что было в программе раньше, как она изменялась, что нового предлагают внести. Если что-то всё-таки сломается, можно откатиться к предыдущей версии и начать заново.
Если сравнить с игрой, то это очень развитая система сохранений, в которой можно откатиться назад и посмотреть, как ты проходил этот уровень раньше. Если хочется почувствовать себя бэкендером, попробуйте сыграть в онлайн-игру по этой теме :-)
SQL и базы данных
Все данные приложений нужно где-то хранить:
- информацию о пользователе;
- историю посещений;
- списки сохранённых продуктов;
- заказы, бронирования, отзывы.
Данные могут быть не только в веб-сервисах. Хранить информацию нужно и в компьютерной игре, и в мобильном приложении, и в модели машинного обучения.
За работу со всем этим отвечает тоже бэкенд-разработчик. Для этого нужно освоить устройство хотя бы одной из баз данных и язык для общения с ними — SQL. Создавать самому базы данных не нужно, этим занимаются другие разработчики.
Если говорить точнее, базы данных разделяют на сами базы (БД), где всё хранится, и системы управления базами данных (СУБД) для работы с ними. Но обычно название конкретной технологии означает сразу оба этих понятия.
Вот что нужно делать бэкенд-разработчику:
- сохранять, изменять и находить данные в базах;
- защищать информацию от тех, для кого она не предназначена;
- поддерживать порядок внутри;
- следить, чтобы при росте основных приложений работа с базами данных тоже могла расти и масштабироваться без поломок.
Основные базы данных, с которыми приходиться работать на бэкэнде, — MySQL, PostgreSQL и MongoDB:
Работа с серверами
Чтобы обеспечить надёжную работу бэкенда, программист должен понимать, с чем именно он работает. А для этого нужно знать, как работают серверы и устройство сетей.
Сервером могут называть две вещи:
- Компьютер, на котором установлены и работают программы для бэкенда сайтов и приложений.
- Сами программы.
Программы-серверы тоже бывают разные.
Все фреймворки предполагают работу со своими серверами. Например, для Django и Flask это Gunicorn, а для FastAPI — асинхронный сервер Uvicorn. Разработчик может поднять эти серверы у себя на компьютере двумя-тремя строчками кода и локально протестировать, что всё работает должным образом.
Ещё есть веб-серверы, которые можно взять в аренду у других компаний, например у «Яндекса» или «Амазона». Это избавляет от необходимости заводить свой серверный компьютер и следить, чтобы на нём ничего не сломалось.
Сети и API
В разработке специалисту редко нужно заниматься вещами, которые работают только на одном компьютере и больше ни с чем не общаются. Поэтому бэкенд-разработчик должен разбираться в общем устройстве интернета и в том, как в нём связаны между собой компьютеры.
Для связи по интернету используется несколько технологий: начиная от протокола HTTP и браузера до ответа на сервере и обработки данных. Почти для всех задач бэкенд-разработки достаточно понимания HTTP. Если понадобится что-то ещё, можно доучить.
Одного протокола для общения программ друг с другом недостаточно: нужно написать для каждого приложения свой язык и объяснить остальным, как его использовать. Для этого нужен программный интерфейс приложения, или API. API одной программы будут пользоваться фронтендеры, мобильные разработчики, другие бэкендеры и другие программы, которые научились этому API.
Иногда о сервере и API говорят как об одной вещи — это потому, что для работы API нужен сервер, на который можно отправлять запросы.
Востребованность на рынке
Если посмотреть сайт hh.ru, сейчас открыты почти 3000 вакансий по поиску только Python-разработчиков и только в Москве. При этом в 526 из них уровень дохода начинается от 110 000 рублей в месяц:
Для сравнения, вот количество вакансий по другим запросам:
- Java-разработчик: 2332 вакансии;
- C++-разработчик: 1375 вакансий;
- backend developer: 2887 вакансий;
- общее количество вакансий «разработчик» или developer в Москве — 70 000.
Сайт «Хабр-карьера» оценивает среднюю зарплату Junior-бэкенд-разработчика в среднем в 88 000 рублей, уровня Middle — 200 000 рублей в месяц:
Развитие в профессии бэкенд-разработчика
Получив первую работу, начинающий стажёр или джуниор погружается в инфраструктуру компании. Он знакомится с принятым стеком технологий, учится правильно выполнять чётко сформулированные задачи и оттачивает технические навыки.
Чтобы вырасти до уровня мидла или сеньора, бэкенд-разработчик должен сам уметь продумать устройство небольших частей приложений, то есть начать постепенно разбираться в архитектуре:
- какие данные пользователя нужно хранить в базе данных;
- какие вычисления можно сделать на фронтенде, а какие лучше перенести на сервер;
- как подготовить нужную информацию к выдаче пользователям.
Чем сложнее задача, которую разработчик может решить самостоятельно, тем выше уровень его мастерства и оклада.
Бэкенд-разработчик уровня «сеньор» и выше может развиваться в разных направлениях:
- руководить командой, больше работать с коллегами и клиентами, контролировать выполнение проектов;
- продолжить прокачивать технические навыки и стать экспертом-архитектором;
- выучить новые технологии, стать DevOps-инженером;
- продолжить работать Senior-разработчиком, пока не надоест.
Где научиться
Можно учиться самому: смотреть видео, решать задачи на алгоритмы, читать статьи про разные технологии и пробовать всё это на домашнем компьютере. Это даст понимание устройства технических инструментов.
Если хотите получить помощь и советы от опытных разработчиков, приходите учиться в Яндекс Практикум. С проблемами в учёбе помогут наставники, в портфолио за время курса наберётся несколько проектов, есть тренажёр для программирования. После обучения получаются готовые к работе бэкенд-разработчики. Попробовать всё это можно бесплатно первые 20 часов.
С чего начать
Почитайте наши статьи про бэкенд-языки: Python, PHP и Java.
Начните решать задачи с собеседований.
Попробуйте первые 20 часов курсов Практикума бесплатно. Вам понравится.