IT не дает покоя многим людям – слишком уж в нем хороши зарплаты, особенно по сравнению со средней зарплатой в СНГ. Особенно часто людей интересует backend developer, поскольку бэкендеры требуются всегда и в больших количествах. При этом реальное представление о том, чем занимается backend разработчик и насколько сложно им работать, имеют немногие. Ниже мы заполним этот пробел – расскажем, что backend из себя представляет, какой стек знаний нужен бэкенд разработчику и как этим специалистом стать.
Для начала объясним разницу между бэкендом и фронтом. Есть какое-то условное приложение, например – небольшой интернет-магазин. У этого магазина с точки зрения его архитектуры есть 4 важные составляющие:
Внешним видом занимаются фронтенд-разработчики, внутренним кодом занимаются бэкенд-разработчики, сервером занимаются сисадмины или девопсы.
С базами данных есть одна особенность – ими могут заниматься все подряд, обычно будучи бэкенд разработчиком создавать их намного проще, но эту обязанность с тем же успехом могут повесить на фронта или сисадмина (последнее случается куда чаще первого).
Итак, бэкенд-разработчик отвечает за внутреннюю, скрытую логику приложения. Обычно код, который пишет бэкенд-разработчик, лежит на сервере и выполняется при выполнении определенных условий. Эти условия, в свою очередь, бэкенду поставляет фронт (пользователь на сайте нажал на кнопку – товар с помощью кода на сервере добавился в корзину), поэтому бэкенд и фронтенд находятся в постоянном контакте. Обычно для этого согласовывается внутренний API приложения – конкретизированный интерфейс для взаимодействия. И вот здесь есть важный момент: любой хороший бэкенд-разработчик имеет навыки фронтенд-разработчика, потому что придумать хороший API без понимания внешней составляющей сайта нельзя. Обычно такими вопросами занимается старший бэкенд-разработчик, и вас к таким вопросам на старте карьеры не подпустят, но держите эту мысль в голове и «мотайте на ус» опыт своих коллег из фронтенд-разработки.
Бэкенд невозможен без технологий, с помощью которых эта внутренняя логика работы реализовывается. Основа основ – это язык программирования, обычно – серверный. О конкретных языках программирования мы поговорим позже, здесь же отметим, что сейчас просто знать язык программирования недостаточно – нужно знать еще как минимум основы архитектуры приложений и фреймворки. Архитектура приложений – это план того, как элементы приложения будут взаимодействовать друг с другом. Обычно планирование архитектуры заканчивается тем, что у команды разработчиков появляется скелет, который нужно «обрастить мясом». Поскольку бизнес-задачи обычно очень похожи друг на друга, не нужно каждый раз изобретать велосипед – можно воспользоваться готовыми решениями, то есть фреймворками. Фреймворк – это готовая архитектура + набор инструментов для создания решения под конкретные бизнес-задачи. 99.999999% приложений сейчас пишутся на фреймворках – поэтому вам в любом случае придется их знать.
Еще одна технология, без которой нельзя обойтись – базы данных. Если вы не умеете работать с базами данных – значит, вы не умеете получать информацию, и, как следствие, не можете написать какой-либо полезный код.
Чаще всего требуется знание SQL – языка запросов из базы, конкретный поставщик БД имеет второстепенное значение.
Итак, мы немного уточнили профессию: бэкенд-разработчик строит внутреннюю составляющую проекта, используя в своей работе языки программирования, фреймворки к ним и базы данных. Что здесь упущено? Не хватает детализации того, что именно разработчику нужно делать с помощью кода/фреймворков/БД. Как ни странно бэкенды занимаются разработкой нового функционала не так уж и часто. Существенная часть времени уходит на: а) оптимизацию; б) исправление багов; в) рефакторинг. Оптимизация – это когда мы берем серверный код и заставляем его работать быстрее. Оптимизация особенно критична, если проект размещен на сторонних облачных серверах: владельцы серверов берут себе деньги за израсходованные секунды работы своих процессоров, и чем меньше ресурсов будет есть код в приложениях, тем больше денег сэкономит бизнес. Исправление багов – это то, без чего не обходится ни одна разработка. Баги есть всегда, и любые опытные разработчики имеют опыт вылавливания и устранения этих багов. Поэтому, кстати, все программисты выше уровня junior умеют работать с unit-тестами и в целом проводить полноценное тестирование – чем раньше баг будет отловлен, тем меньше урона будет нанесено бюджету заказчика. Наконец, третье задание, часто сопровождающее серверную разработку – это рефакторинг. В мире уже существует огромное количество работающих проектов, и далеко не все из них написаны хорошо: иногда код так и просится под нож с дальнейшим переписыванием его на нормальный. Еще хуже, когда кривой и непонятный код отвечает за критически важную часть инфраструктуры – за оплату товара, например. В этом случае разработчики должны проводить рефакторинг – разбирать код на составляющие и переписывать его так, чтобы он стал понятнее. Обычно умение рефакторить код приходит с опытом работы.
При этом хотим отметить, что рефакторинг – это практически бесконечный проект, если сейчас программисты пишут код, который им кажется хорошим, то через 5 лет подходы к разработке и обработке данных изменятся, и этому коду снова понадобится рефакторинг.
Везде, где нужна какая-либо бизнес-логика. Чаще всего бэкендов упоминают в веб-разработке, но по факту бэкенд – это тот самый классический программист, который пишет алгоритмы, а где и для чего их писать – вопрос второстепенный. Заметим, что у разных сфер есть свои отличия, когда речь идет о бэкенде:
Бэкенд-разработчик – это работа для тех, кто не любит графику и любит математику/алгоритмы. Вообще, алгоритмизация – основа любого бэкенд-разработчика, поэтому будьте готовы погружаться в чудесный мир графов, таблиц, сложностей и так далее.
Кроме того, бэкенд-разработчик – это довольно инертная профессия, эти разработчики обычно долгое время «сидят» на одном стеке знаний и могут месяцами разрабатывать одну новую фичу.
Минимум:
Бэкенд-разработчики работают практически в любых IT-компаниях. Еще один вариант работы – фриланс, но он не столь популярен, потому что фриланс – это довольно нервная работа, и далеко не каждый разработчик готов покинуть «тихую гавань» крупной компании ради свободы выбора проектов и связанных с этим издержек.
Вообще, языков используется великое множество, где-то бэкенд до сих пор крутится на старых FORTRAN или Delphi и чувствует себя отлично. Но все же есть список наиболее частых:
На 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) или углублять свои знания в программировании (и требовать более существенные зарплаты за свои знания). «Фишка» сеньоров обычно состоит в том, что без них проект имеет немалые шансы затормозить или развалиться, поэтому сеньорам и повышают зарплаты, и повышают до руководящих должностей (поскольку сеньоры знают, как устроен проект).
ВУЗ – это не самый хороший вариант, потому что необходимая база в программе обычно перемешана со второстепенными и далеко не столь необходимыми дисциплинами. Если вы все же хотите поступить в ВУЗ – присмотритесь к этим учреждениям:
Самостоятельное обучение в IT максимально приветствуется, поэтому курсов по бэкенду – очень много. Для начала вам нужно выбрать стартовый язык и изучить его. Затем разберитесь с самым популярным фреймворком для данного языка. А дальше все просто: открываете hh.ru, ищете вакансию на junior или middle, смотрите необходимый стэк технологий, учите эти технологии.
Если вы хотите работать на фрилансе, ваш однозначный выбор – биржи фриланса, из СНГ или зарубежные.
Заполните свой профиль, укажите, какой опыт у вас есть, подавайте заявки на тендеры.
Плюсы:
Минусы:
В целом бэкенды довольны своей работой – доходная, интересная, есть возможности для релокации. Случаи, когда бэкенд уходит из IT вообще, довольно редки – обычно айтишники, которым не нравится бэкенд, просто ищут себя в других направлениях. Недовольство чаще всего связано с начальством.
Книги:
На Ютубе есть миллионы роликов, посвященных начинающим бэкендерам.
Да, хотя бы на уровне А2. Вы должны уметь читать документацию.
Базового школьного курса будет более чем достаточно для начала.
Тезисно: