logo
Ещё

Бэкенд разработчик – обзор профессии

IT не дает покоя многим людям – слишком уж в нем хороши зарплаты, особенно по сравнению со средней зарплатой в СНГ. Особенно часто людей интересует backend developer, поскольку бэкендеры требуются всегда и в больших количествах. При этом реальное представление о том, чем занимается backend разработчик и насколько сложно им работать, имеют немногие. Ниже мы заполним этот пробел – расскажем, что backend из себя представляет, какой стек знаний нужен бэкенд разработчику и как этим специалистом стать.


Бэкенд-разработчик – описание профессии

Чем занимается

Для начала объясним разницу между бэкендом и фронтом. Есть какое-то условное приложение, например – небольшой интернет-магазин. У этого магазина с точки зрения его архитектуры есть 4 важные составляющие:

  • внешний вид;
  • база данных, которая хранит данные о пользователях и товарах;
  • внутренний код, который берет данные из базы и на основе этих данных совершает транзакцию (покупку пользователем сайта товара на сайте);
  • сервер, на котором расположен весь код и база данных.
Внешним видом занимаются фронтенд-разработчики, внутренним кодом занимаются бэкенд-разработчики, сервером занимаются сисадмины или девопсы.

С базами данных есть одна особенность – ими могут заниматься все подряд, обычно будучи бэкенд разработчиком создавать их намного проще, но эту обязанность с тем же успехом могут повесить на фронта или сисадмина (последнее случается куда чаще первого).

Итак, бэкенд-разработчик отвечает за внутреннюю, скрытую логику приложения. Обычно код, который пишет бэкенд-разработчик, лежит на сервере и выполняется при выполнении определенных условий. Эти условия, в свою очередь, бэкенду поставляет фронт (пользователь на сайте нажал на кнопку – товар с помощью кода на сервере добавился в корзину), поэтому бэкенд и фронтенд находятся в постоянном контакте. Обычно для этого согласовывается внутренний API приложения – конкретизированный интерфейс для взаимодействия. И вот здесь есть важный момент: любой хороший бэкенд-разработчик имеет навыки фронтенд-разработчика, потому что придумать хороший API без понимания внешней составляющей сайта нельзя. Обычно такими вопросами занимается старший бэкенд-разработчик, и вас к таким вопросам на старте карьеры не подпустят, но держите эту мысль в голове и «мотайте на ус» опыт своих коллег из фронтенд-разработки.

Бэкенд невозможен без технологий, с помощью которых эта внутренняя логика работы реализовывается. Основа основ – это язык программирования, обычно – серверный. О конкретных языках программирования мы поговорим позже, здесь же отметим, что сейчас просто знать язык программирования недостаточно – нужно знать еще как минимум основы архитектуры приложений и фреймворки. Архитектура приложений – это план того, как элементы приложения будут взаимодействовать друг с другом. Обычно планирование архитектуры заканчивается тем, что у команды разработчиков появляется скелет, который нужно «обрастить мясом». Поскольку бизнес-задачи обычно очень похожи друг на друга, не нужно каждый раз изобретать велосипед – можно воспользоваться готовыми решениями, то есть фреймворками. Фреймворк – это готовая архитектура + набор инструментов для создания решения под конкретные бизнес-задачи. 99.999999% приложений сейчас пишутся на фреймворках – поэтому вам в любом случае придется их знать.

Еще одна технология, без которой нельзя обойтись – базы данных. Если вы не умеете работать с базами данных – значит, вы не умеете получать информацию, и, как следствие, не можете написать какой-либо полезный код.

Чаще всего требуется знание SQL – языка запросов из базы, конкретный поставщик БД имеет второстепенное значение.

Итак, мы немного уточнили профессию: бэкенд-разработчик строит внутреннюю составляющую проекта, используя в своей работе языки программирования, фреймворки к ним и базы данных. Что здесь упущено? Не хватает детализации того, что именно разработчику нужно делать с помощью кода/фреймворков/БД. Как ни странно бэкенды занимаются разработкой нового функционала не так уж и часто. Существенная часть времени уходит на: а) оптимизацию; б) исправление багов; в) рефакторинг. Оптимизация – это когда мы берем серверный код и заставляем его работать быстрее. Оптимизация особенно критична, если проект размещен на сторонних облачных серверах: владельцы серверов берут себе деньги за израсходованные секунды работы своих процессоров, и чем меньше ресурсов будет есть код в приложениях, тем больше денег сэкономит бизнес. Исправление багов – это то, без чего не обходится ни одна разработка. Баги есть всегда, и любые опытные разработчики имеют опыт вылавливания и устранения этих багов. Поэтому, кстати, все программисты выше уровня junior умеют работать с unit-тестами и в целом проводить полноценное тестирование – чем раньше баг будет отловлен, тем меньше урона будет нанесено бюджету заказчика. Наконец, третье задание, часто сопровождающее серверную разработку – это рефакторинг. В мире уже существует огромное количество работающих проектов, и далеко не все из них написаны хорошо: иногда код так и просится под нож с дальнейшим переписыванием его на нормальный. Еще хуже, когда кривой и непонятный код отвечает за критически важную часть инфраструктуры – за оплату товара, например. В этом случае разработчики должны проводить рефакторинг – разбирать код на составляющие и переписывать его так, чтобы он стал понятнее. Обычно умение рефакторить код приходит с опытом работы.

При этом хотим отметить, что рефакторинг – это практически бесконечный проект, если сейчас программисты пишут код, который им кажется хорошим, то через 5 лет подходы к разработке и обработке данных изменятся, и этому коду снова понадобится рефакторинг.

В каких сферах нужен

Везде, где нужна какая-либо бизнес-логика. Чаще всего бэкендов упоминают в веб-разработке, но по факту бэкенд – это тот самый классический программист, который пишет алгоритмы, а где и для чего их писать – вопрос второстепенный. Заметим, что у разных сфер есть свои отличия, когда речь идет о бэкенде:

  • Мобильная разработка. Мобильная верстка – более простая и понятная штука, чем браузеры, поэтому зачастую от мобильного бэкенда ждут того, что он умеет использовать набор инструментов мобильного фронтенда.
  • Энтерпрайз. Энтерпрайз – это разработка каких-либо огромных проектов, нередко b2b. Здесь обитают дистиллированные бэкенды – иногда они вообще не видят фронтенда и фронтендеров, все время они посвящают исключительно своему языку программирования и фреймворку.
  • Стартапы. Стартапы – это Дикий Запад от мира IT, роли здесь расплывчаты. Бэкенда могут попросить воспользоваться любым инструментом из любого стека.
  • Маленькие веб-студии по разработке сайтов. Здесь обычно работают фулл-стек разработчики, то есть мастера на все руки. Такие спецы и создают серверную часть, и занимаются внешней частью сайта, и общаются с пользователями для сбора фидбэка (отзвывов). Должны уметь всего понемногу.
  • Десктопные приложения. Здесь бэкенды должны иметь опыт как в серверной разработке, так и в разработке непосредственно десктопных приложений. Нередко пишут на старых и сложных языках, вроде C++.


Мифы о работе

  1. Бэкенды зарабатывают нереальные деньги. Ну, если сравнивать с МРОТ, то бэкенд действительно получает какие-то космические деньги. На практике же потолок – 300 000 рублей, и нужно из кожи вон вылезти, чтобы получать больше. В странах СНГ вы с таким заработком сможете обеспечить себе luxury-жизнь, в странах с более высоким уровнем жизни вы просто будете неплохо зарабатывать.
  2. Работа бэкенда – самая сложная. Спорно, ибо бэкенду магией будет казаться анимация фронтенда, а фронтенду будут казаться магией алгоритмы бэкенда. Все относительно.
  3. Такой-то язык – лучший для бэкенда, потому что [список аргументов]. Лучшего языка не существует в природе, потому что все бы писали код исключительно на нем. Все языки и фреймворки имеют свои сильные и слабые стороны, и как раз-таки задача архитектора или техдира – выбрать тот язык, который лучше всего подойдет под конкретный проект.

Особенности работы

Бэкенд-разработчик – это работа для тех, кто не любит графику и любит математику/алгоритмы. Вообще, алгоритмизация – основа любого бэкенд-разработчика, поэтому будьте готовы погружаться в чудесный мир графов, таблиц, сложностей и так далее.

Кроме того, бэкенд-разработчик – это довольно инертная профессия, эти разработчики обычно долгое время «сидят» на одном стеке знаний и могут месяцами разрабатывать одну новую фичу. 

Важные личные качества

  • Общительность и командная работа. Проекты, даже небольшие, разрабатываются в команде. Поэтому вам нужно уметь общаться с другими людьми, доносить до них идеи и уметь слушать чужие идеи. 
  • Навыки личного менеджмента. Основная мера разработки в IT – это сроки создания чего-либо, которые для заказчика конвертируются в сумму затрат. Поэтому вы должны уметь контролировать и просчитывать свое время, а также называть сроки исполнения той или иной задачи.
  • Контроль внимания. Когда вы будете разрабатывать что-то, вас будут постоянно дергать: сходи на митинг, срочно подправь баг, обсуди деплой с инженерами и так далее. Вам нужно уметь быстро переключать свое внимание.
  • Упорность. Ваш код далеко не всегда будет работать идеально с первого написания (точнее – почти никогда). Вам придется постоянно дорабатывать свои решения и решать мелкие проблемы. Для этого нужно определенное упорство.
  • Крепкая логика. Логика – основа алгоритмизации, поэтому с логикой у вас все должно быть в порядке.
  • Сопротивляемость выгоранию. Все девелоперы рано или поздно выгорают – начинают работать менее продуктивно и теряют интерес к тому, что делают. Выгорание – это как физическая усталость, только интеллектуальная. Чем реже вы выгораете и чем лучше вы восстанавливаетесь после выгорания – тем более вы продуктивны и тем лучше вам платят.
  • Внимание к деталям. На высоком уровне абстракции интернет-магазин – это «пользователь кликает на кнопку, и товар оказывается в корзине». На низком уровне абстракции фича «Товар в корзине» – это «получить через API запрос на добавление товара в корзину, проверить наличие товара в базе, проверить уровни доступа, проверить валидность запроса, …». Любая разработка – это много маленьких односложных деталей, из которых и складывается большой проект. Чем более вы внимательны к этим односложным деталям и чем более продуманными они являются, тем более хорошим выходит ваш код.
  • Умение принимать на себя ответственность. Если вы допустите ошибку в коде, снимающем деньги с карточек пользователей, вы можете доставить и бизнесу, и людям кучу проблем. Вам нужно осознавать свою ответственность при разработке той или иной фичи и уметь брать на себя такую ответственность. Из хорошие новостей здесь: в первые 2-3 года работы никто вас к такому критичному функционалу и близко не подпустит, ваше нарастание ответственности внутри бизнеса будет постепенным.

Профессиональные знания

Минимум:

  • Серверный язык программирования.
  • Популярные фреймворки этого языка.
  • SQL.
  • Jira.
  • Паттерны проектирования.

Место работы

Бэкенд-разработчики работают практически в любых IT-компаниях. Еще один вариант работы – фриланс, но он не столь популярен, потому что фриланс – это довольно нервная работа, и далеко не каждый разработчик готов покинуть «тихую гавань» крупной компании ради свободы выбора проектов и связанных с этим издержек.

Какие языки используются

Вообще, языков используется великое множество, где-то бэкенд до сих пор крутится на старых FORTRAN или Delphi и чувствует себя отлично. Но все же есть список наиболее частых:

  • C, C++. Крайне сложные в освоении языки, используются там, где нужно максимальное быстродействие.
  • PHP. Довольно старый, но все еще крайне мощный язык. Не в последнюю очередь распространен по той причине, что на PHP написана основная CMS, используемая для сайтов – WordPress.
  • Java. Доминирует в энтерпрайзе, не очень часто встречается в мелких проектах.
  • Python. Универсальный и очень легкий для освоения язык, в 2022-м году вышедший на первое место в веб-разработке.
  • Ruby. Сложный, но мощный и быстрый язык.
  • JavaScript. Если что – не имеет ничего общего с Java. Изначально – язык для создания фронтенда, со временем «просочился» в бэкенд. JavaScript – отличный язык, если вы нацелены на фулл-стэк разработку, но хотите начать с бэкенда.

Обзор рынка труда: зарплаты, востребованность и перспективы

На hh.ru по запросу «бэкенд» можно найти 5 000 вакансий. Доход указан только у 1 700 – для IT частой практикой является обсуждение зарплаты непосредственно на собеседовании. У 1 370 вакансий зарплата начинается от 105 000 рублей, у 48 вакансий зарплата начинается от 450 000 рублей. Ищут бэкендов всех мастей: на разных языках программирования, бэкенд/фулл-стэк, интернов/джунов/миддлов/сеньоров.

Так выглядел расклад по зарплате в конце 2020. Спустя 2+ года цифры выросли на 20-30%.


Примеры вакансий

Senior Backend Developer (NodeJS), зарплата от 230 000 рублей на руки:


Fullstack разработчик (фронтенд + бэкенд), зарплата от 250 000 рублей до вычета налогов:


Бэкенд программист на Ruby on Rails (Senior) в сервис знакомств, удаленно, зарплата от 340 000 рублей на руки:


Карьерный путь

Джун

Джун – это начало карьеры в любой IT-специальности. Обычно к джуну приставляют сеньора (иногда – мидла), который объясняет джуну, как тут все устроено. Джуна не подпускают к критичному функционалу, а иногда и вообще к разработке реального проекта – его отправляют в песочницу, в которой джун набирается опыта и в свое удовольствие ломает все подряд. Чаще всего джуны невыгодны компании, в них вкладывают деньги и время в надежде окупить расходы, когда джун наберется опыта.

Мидл

Мидл – это уже боеспособная единица. Он может самостоятельно решать задачи средней сложности и брать на себя ответственность за свои действия. Мидла уже подпускают к проду (основному серверу, на котором лежит приложение). Разница зарплаты между мидлом и джуном может доходить до 3x, потому что мидл приносит деньги бизнесу.

Сеньор

Ультимативная боевая единица команды. Если пишет код – то божественно. Если что-то ломает – то на десятки тысяч долларов (возможно, в час). Сеньорам дают самую сложную работу – в том числе и обучение джунов. Сеньоры как раз и обладают теми космическими зарплатами, о которых все мечтают.

Что дальше

Сеньоры ввиду своего опыта могут переключаться на все руководящие должности (техлид, PM) или углублять свои знания в программировании (и требовать более существенные зарплаты за свои знания). «Фишка» сеньоров обычно состоит в том, что без них проект имеет немалые шансы затормозить или развалиться, поэтому сеньорам и повышают зарплаты, и повышают до руководящих должностей (поскольку сеньоры знают, как устроен проект).

Обучение на бэкенд разработчика

Платные курсы

  • Fullstack веб-разработчик на JavaScript и PHP. Как понятно из названия, речь идет о полном стэке, то есть вас научат создавать и фронт, и бэк. В основном речь идет о разработке сайтов. Стоимость: 250 000 рублей.
  • Профессия Веб-разработчик. Как и в прошлом случае, здесь речь идет о разработке сайтов: HTML, CSS, PHP, JS. Через полгода обучения вы уже сможете искать свою первую работу. Стоимость курса: 170 000 рублей.
  • Backend-разработчик на Go. Go – это относительно молодой язык от Гугла, который ежегодно набирает все больше популярности. Стоимость курса: 110 000 рублей.

Бесплатные курсы

Обучение в ВУЗе

ВУЗ – это не самый хороший вариант, потому что необходимая база в программе обычно перемешана со второстепенными и далеко не столь необходимыми дисциплинами. Если вы все же хотите поступить в ВУЗ – присмотритесь к этим учреждениям:

  • Московский государственный университет имени М.В. Ломоносова.
  • Московский физико-технический институт (национальный исследовательский университет).
  • Университет ИТМО.
  • Национальный исследовательский ядерный университет «МИФИ».
  • Национальный исследовательский университет «Высшая школа экономики».

Гайд по самостоятельному обучению

Самостоятельное обучение в IT максимально приветствуется, поэтому курсов по бэкенду – очень много. Для начала вам нужно выбрать стартовый язык и изучить его. Затем разберитесь с самым популярным фреймворком для данного языка. А дальше все просто: открываете hh.ru, ищете вакансию на junior или middle, смотрите необходимый стэк технологий, учите эти технологии.

Как и где самому искать клиентов

Если вы хотите работать на фрилансе, ваш однозначный выбор – биржи фриланса, из СНГ или зарубежные.

Заполните свой профиль, укажите, какой опыт у вас есть, подавайте заявки на тендеры.

Плюсы и минусы профессии бэкенда

Плюсы:

  • Хорошая оплата.
  • Довольно престижная работа.
  • Большие возможности для карьерного роста.

Минусы:

  • Интеллектуально тяжелая работа.
  • Много ответственности.
  • Сидячая работа.

Обзор отзывов о профессии

В целом бэкенды довольны своей работой – доходная, интересная, есть возможности для релокации. Случаи, когда бэкенд уходит из IT вообще, довольно редки – обычно айтишники, которым не нравится бэкенд, просто ищут себя в других направлениях. Недовольство чаще всего связано с начальством.

Что еще почитать по теме

Книги:

  • Множество книг по программированию от издательство O’Reilly.
  • Бек Кент, Экстремальное программирование.
  • Роберт Мартин, Чистый код.

На Ютубе есть миллионы роликов, посвященных начинающим бэкендерам.

FAQ

Нужно ли знать английский?

Да, хотя бы на уровне А2. Вы должны уметь читать документацию.

На каком уровне нужно знать математику?

Базового школьного курса будет более чем достаточно для начала.

Подведем итоги

Тезисно:

  • Бэкенд-разработчики пишут внутреннюю бизнес-логику приложения.
  • Основные технологии: язык и его фреймворки, SQL, Jira.
  • Профессия разработчика предполагает наличие ряда софт-скиллов: общение с людьми, эмоциональный интеллект, устойчивость к выгоранию и прочее.
  • Языков программирования – очень много, и лучшего среди них нет.
  • Карьерный путь начинается с джуна, развился открывается после достижения позиции сеньора.
  • Работы более чем хватает, даже в кризис.
  • Учиться можно как по курсам, так и по книгам. ВУЗ – сомнительный вариант для получения профессии, слишком долго + много лишней информации.
Часто ищут