Разработка веб-приложений уже давно разделилась на frontend и backend, и отвечают за эти стороны, как правило, два разных программиста. А то и две команды программистов. При этом, кто такой backend-разработчик и чем он занимается, немногим известно. Формулировка «разрабатывает внутреннюю логику и архитектуру» мало о чём говорит.
Designed by LipikStockMedia/freepik
Итак, все веб-приложения и сайты имеют видимую сторону, то есть интерфейс, с которым он взаимодействует, и скрытые от его глаз процессы, то есть программно-аппаратную часть.
Типичный пример работы backend-разработчика: представим любой интернет-магазин. Поле ввода покупок, красивая отрисовка анимации, удобная корзина – всё это frontend. Ну а правильная обработка запросов, хранение данных в СУБД, интеграция с платежной системой, обновления контента и его загрузка без задержек и подвисания – это backend.
Чем конкретно занимается бекэнд на рабочем месте:
Выстраивание внутренней архитектуры и логики сайта (веб-приложения);
Работа с базами данных, настройка и оптимизация СУБД;
Разработка алгоритмов приложения (как оно будет работать и какие функции выполнять в ответ на команды);
Взаимодействие приложения с другими программами и программными средами (API);
Интеграции с другими сервисами и приложениями;
Тестирование и отладка системы, устранение багов.
Навыки любого IT-специалиста принято делить на hard skills и soft skills. Под первыми в широком смысле понимают его умения по технической части, под вторыми – способность коммуницировать и находить общий язык с коллегами и заказчиками.
Пройдемся по техническим навыкам. Бекэнд должен уметь и знать:
Языки программирования. В первую очередь PHP, Python, C/C++, Ruby и другие. Нередко требуется знание JavaScript (хотя бы развертывание на Node.js);
Работу с базами данных, например, MySQL, PostgreSQL, MongoDB, Redis;
Фреймворки и алгоритмы;
Принципы работы Git и серверов;
Как функционируют сетевые протоколы TCP/IP, HTTP;
Администрирование UNIX или по крайней мере один из дистрибутивов Linux;
Как составлять техническое задание по спецификациям от заказчика.
Насущная необходимость для любого бекэнда – знание английского, не обязательно разговорного. Однако его должно быть достаточно, чтобы читать документацию.
Что касается личностных качеств, требования просты. Нужно уметь общаться с коллегами:
Умение вести диалог, отстаивать свою точку зрения, задавать вопросы, признавать ошибки и не сваливать вину на других;
Стремление к самообучению, непрерывное освоение новых навыков;
Умение планировать и оптимизировать рабочий процесс, навыки тайм-менеджмента;
Здравая оценка собственных знаний и опыта, готовность слушать и учиться у старших коллег;
Чувство ответственности, умение работать на конечный результат;
Усидчивость, терпеливость и скрупулезность в работе.
Набор технологий, которыми должен владеть backend-разработчик по версии Хабр:
Стажёр (Intern) | Младший (Junior) | Средний (Middle) | Старший (Senior) | Ведущий (Lead) |
C++ C# Golang SQL .NET | PHP Python Java Java spring framework PostgreSQL | PHP Python Java PostgreSQL Java spring framework | PHP Java Python PostgreSQL Java spring framework | PHP Java MySQL PostgreSQL Высоконагруженные системы |
— | + ООП, фреймворки | + ООП, фреймворки, Docker | + высоконагруженные системы, ООП, фреймворки, Docker | + Linux, ООП, фреймворки, Docker |
Designed by senivpetro/freepik
Традиционный путь в IT начинается с поступления в вуз на специальность, связанную с математикой и информатикой. Разумеется, нигде нет факультета или института, который бы готовил backend-разработчиков. Однако всем этим умениям учат на специальностях:
«Информационные системы и технологии» 09.03.02.
«Информатика и вычислительная техника» 09.03.01.
«Прикладная информатика» 09.03.03.
«Программная инженерия» 09.03.04.
«Системный анализ и управление» 27.03.03.
«Специальные организационно-технические системы» 27.05.01.
Плюс вузовской подготовки в системном подходе: специалист по итогу более полноценно владеет методиками вычислений. Кроме того, талантливых студентов могут уже на втором-третьем курсе пригласить на работу или хотя бы стажировку в крупную компанию. Кроме того, в среде backend ценятся математические навыки, а получить и прокачать их проще всего именно в вузе.
Минус в общем-то один и существенный: слишком много ненужных знаний и длительное обучение, плюс нередко невозможность совмещать полноценную работу с учебой.
В отличие от вузовской программы курсы обучения дают только конкретные навыки и компетенции. Какие конкретно, зависит, под что она заточена программа обучения. Однако традиционно учат:
Python;
Django;
SQL и PostgreSQL;
Nginx;
GitHub.
Проблема в том, что курсы для backend-разработчиков с нуля не настолько распространены, как для frontend. При этом нет каких-то единых стандартов образования и каждый подбирает те программы обучения, которые для него актуальны.
Кроме того, знания зачастую разрозненные – например, курсы могут быть разбиты по языкам программирования под общим названием «Веб-разработка». Поэтому нужно четко понимать, в какую сторону хотите двигаться и подбирать тот набор инструментов, который пригодится в дальнейшей работе.
В общем, успешному бекэнду нужно знать и уметь очень многое. Хорошая новость в том, что инструментарий в этой области меняется не так стремительно, как во фронтэнде, поэтому торопиться некуда.
Да практически везде. Если у фирмы, компании или государственной структуры, есть сайт или приложение, значит, понадобится и штат программистов.
Пандемия COVID-19 немало повлияла на мировую торговлю, поэтому наиболее перспективными сейчас считаются направления электронной коммерции, доставки и перевозки товаров и прочие направления.
Другое дело, что потребности у работодателей разные. Если разработчика берут в офис на фуллтайм, скорее всего он будет работать над высокоуровневыми системами данных, микросервисами, виртуальными приложениями и т.д. Соответственно, и требования к его навыкам будут выше.
Проще устроиться на удаленную работу или какой-то конкретный проект, например, создание небольшого интернет-магазина или сайта местного ресторана с доставкой.
Самая насущная проблема – это сколько получает хороший бекэнд. Хороший в нашем случае, значит, опытный, то есть со стажем от 3 лет и уровнем не ниже middle. Если судить по вакансиям на HeadHunter и другим сайтам по поиску работы, в Москве таким специалистам готовы платить от 100 тысяч рублей. Для Senior зарплаты ещё выше: от 200 до 350 тысяч рублей.
В вакансиях для начинающих вообще предпочитают не указывать конечную сумму. Что логично: нужно сначала оценить, что умеет соискатель и подходит ли он для конкретной работы.
Плюсы:
Устойчивое положение на рынке труда и востребованность;
Высокая заработная плата и её повышение по мере роста навыков;
Карьерные перспективы, возможность вырасти в lead-разработчика.
Минусы:
Более тяжелая в освоении специализация;
Высокая ответственность;
Как правило, загруженность и переработки;
Высокие требования к скиллам и навыкам при трудоустройстве.