Над каждым проектом, будь то разработка сайта или мобильного приложения или какого-то сервиса, всегда трудится целая команда. Бэкенд-разработчик — боец невидимого фронта. Спрос на работу таких специалистов не падает даже при потрясениях, зарплаты растут, но и требуется от бэкендеров немало. Разбираемся в профессии.

Бэкенд — это программист, который находится на невидимой стороне ресурса и отвечает за внутреннюю и вычислительную логику систем:

  • обработку пользовательского ввода;

  • хранение и передачу данных.

Он занимается всей программно-административной частью веб- или мобильного приложения, сайта: 

  • базами данных;

  • программной логикой; 

  • архитектурой;

  • внутренним содержанием системы;

  • серверными технологиями. 

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

Мы уже писали о разработчике, который выучился программированию самостоятельно и переехал работать в заграничную компанию. В комментариях нас просили рассказать о нём подробнее. Игорь поделился опытом обучения и работы.

Игорь С.

Вackend-разработчик на Java

Пойти в ИТ вообще я решил, потому что хотел иметь востребованную профессию, которая позволит мне не быть привязанным к месту, путешествовать или жить за границей. В начале карьерного пути представление о профессии разработчика у меня было абстрактным. Понимал, что бэкенд-разработчики — это люди, которые пишут программы. Но как базовые структуры и конституции типа if и while превращаются в реальные программы, понимания не было, для меня это оставалось чёрным пятном. На уроках информатики о таком не говорили. Backend-разработкой и Java стал заниматься по воле случая. Я пообщался с друзьями-айтишниками, именно они мне посоветовали джаву. Через четыре года я понимаю, что это был правильный выбор. Разработка на Java широко распространена и высоко оплачивается как на внутреннем, так и на международном рынке. Уровень представления о профессии среди близких родственников был такой же, как и у меня до начала работы в ИТ — сильно отличается от того, чем я на самом деле занимаюсь. Людям кажется, что я целыми днями сижу за компьютером, не разгибая спины, и что-то печатаю — типичный «вклавиатурупальцемтыкальщик». 

В круг задач бэкенд-разработчика входят:

  • разработка домена; 

  • разработка бизнес-логики;

  • разработка разработка безопасных приложений, поддерживающих пользовательский интерфейс;

  • настройка боевого, тестового и рабочего серверов и программ по мониторингу их состояний;

  • настройка баз данных, создание моделей предметной области и взаимодействий между ними;

  • настройка процессов непрерывной интеграции и поставки.

Возьмём простой пример — покупку в интернет-магазине. Работа backend — сделать так, чтобы сайт правильно определили ваш банк, карту, платёжную систему, и оплата прошла корректно. Для этого разработчик должен владеть целым набором инструментов. Основной — это серверные языки программирования. 

Вот что точно пригодится: 

  • языки PHP, Python, Ruby, Java, C#;

  • программная платформа Node.js;

  • библиотеки: Express, библиотека для взаимодействия платформы Node.js с сервером;  

  • базы данных Mongo DB, MySQL, PostgreSQL, SQLite;

  • фреймворки: Laravel, Symfony, CodeIgniter, Django, Flask, Ruby on Rails, Spring, Express. 

Очень многое зависит от языка и доме́нной модели. Некоторые занимаются мобильными приложениями, другие работает в сфере ретейла или разрабатывают сервисы для банков. В каждом направлении есть свой набор инструментов.

Игорь С., Вackend-разработчик на Java

Какие знания точно необходимы:

  • базы данных SQL;

  • минимум одного из языков программирования и фреймворков: в Java это Spring, Spring Boot;

  • алгоритмов, паттернов проектирования, если есть планы расти дальше джуниора;

  • инфраструктурных инструментов для сборки и деплоя, таких как Gradle, Maven, Docker, Kubernetes;

  • инструментов для работы с машинами, которые всё это деплоят — Linux;

  • дополнительных скриптовых языков: Groovy, Bash;

  • системы контроля версий — Git;

  • редакторов кода, для Java это IntelliJ idea. 

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

Написать код — быстро. Но большую часть его жизненного цикла занимает обслуживание и поддержка. Главная задача бэкенда состоит в том, чтобы люди, которые будут в дальнейшем обслуживать код, могли легко его модифицировать за минимальное время. Поэтому код, прежде чем попасть в продакшн, проходит несколько этапов тестирования: на производительность, качество, читаемость.

С точки зрения технического обеспечения бэкенды не нуждаются в сложном и дорогом оборудовании. Потому что, как правило, приложения они деплоят удалённо, на облаках или виртуальных машинах. Главное требование к железу — оно должно быть производительным и не тормозить. 

На своём компьютере разработчик редко запускает что-то тяжёлое. А при необходимости применяет соответствующие dev или Test Env. Компьютер, на котором работает бэкенд, больше используется как печатная машинка. Другое дело — дополнительные мониторы, чем больше, тем лучше. Потому что открыто сразу много приложений, в которых надо работать одновременно и следить за процессами. На одном мониторе редактор кода, а на другом — документация для разработки, на третьем — справочник по функциям, рабочий чат. То есть вся необходимая информация перед глазами, не надо переключать вкладки.

Игорь С., Вackend-разработчик на Java

Бэкенд-разработка: сколько за это платят

Hh.ru по запросу «backend-разработчик» выдаёт более 2 000 вакансий. Джуниорам предлагают от 40 тысяч рублей, а сеньорам уже 250–300 тысяч. На Superjob — почти 3 000, зарплатные предложения примерно такие же. При этом аналитика Superjob показывает, что спрос в сфере ИТ в мае 2022 года остался стабильным. Но в апреле — мае на 56% упал спрос на начинающих специалистов. Опытные мидлы, синьоры и лиды по-прежнему нужны и платят им много.

Backend-разработка — это сложно, но не страшно. Порог входа в бэкенд высокий. Освоить всё с нуля самостоятельно новичку сложно. Зачастую код, который пишет бэкендер, не является конечным. Его дорабатывают, переписывают. В день разработчик может создать несколько десятков строк готового кода, которые пойдут в конечный продукт.

Сегодня системы становятся такими сложными, что разработчикам приходится разбивать их на более мелкие подсистемы — наборы решений, фреймворков. В результате появилась необходимость в тех, кто будет заниматься исключительно конфигурацией этих систем. Их можно собирать, как конструктор Lego. Для этого не нужно кодить с основ, а лишь соединять между собой части через простое конфигурирование.

В команде всегда много специалистов: тестировщики, аналитики, разработчики фронт и бэк, инженеры баз данных, дизайнеры. На этапе груминга — общего планирования — ты выбираешь себе задачи, оцениваешь, сколько по времени будешь их выполнять. Это всё, что связано с бэкенд-стеком. Дальше кодишь.

Постановка целей происходит по-разному. В западных компаниях технические задания размыты и описываются поверхностно. Поэтому приходится выяснять детали, много общаться с другими участниками процесса разработки. В российских компаниях наоборот — ТЗ обычно очень подробное, с описанием всех деталей, и нет необходимости в уточнениях.

Типичное задание — добавление новой логики, которая будет затрагивать n-ое количество систем. Бэкендер должен изучить их, понять, как с ними взаимодействовать, интегрировать эту логику. На это уходит около 85% времени. Непосредственное написание кода занимает около 5%. Ещё 10% — это тестирование и отладка багов. Есть ещё отдельный процесс CI/CD. Он определяет то, как твой новый код попадёт в конечный продукт. По сути, то же тестирование кода. 

Игорь С., Вackend-разработчик на Java

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

Очень большие выплаты в компаниях с легаси, на который в здравом уме не пойдут разработчики. То есть когда продукт создавали, технология была актуальной. Потом продукт стал популярным. Он может быть востребованным даже десятилетиями. А технологии устарели. При этом продукт надо развивать, обслуживать. Тот же Microsoft Office, которому уже больше 30 лет. Наверняка есть те, кто поддерживает его все эти годы. И зачастую проще и дешевле поддерживать на таких продуктах первоначальные решения, чем переписывать заново. Но никто уже не хочет работать на таких технологиях. Поэтому, чтобы удержать разработчиков, компания много платит.

Игорь С., Вackend-разработчик на Java

Где учиться и как развиваться

Идеальная база для бэкенд-разработчика — математическое, физическое или ИТ-образование. Именно эти направления закладывают основу понимания алгоритмов, функций, паттернов, вычислительных процессов и всего, что важно для бэкендера. Вуз даёт фундаментальное образование и прочную системную базу. Но его мало. Чтобы расти, нужно всегда быть в курсе изменений в технологиях и инструментарии. Поэтому в сфере бэкенд-разработки, как и в любом другом профиле программирования, важно самообучение. Более того, придётся много практиковаться, потому что в вузе дают базовую информацию, а она быстро устаревает. Важнее всего опыт, интеллект и мотивация человека. Если их достаточно, то стать бэкендером можно и без профильного образования. Только это гораздо сложнее и требует больших усилий.

Учиться нужно постоянно. Если ты не будешь учиться, останешься вне рынка. Во многих компаниях это обязательное условие, потому что инструменты, библиотеки, языки, которыми ты пользуешься, постоянно развиваются. Выходят новые версии — у Java недавно вышла Java17. Меняются подходы, сама архитектура приложений. Раньше была монолитная, сейчас — микросервисная. А вместе с ней и вся инфраструктура.

Игорь С., Вackend-разработчик на Java

Путей развития у backend-разработчика много. Можно развиваться технически и с позиции джуниора подняться до синьора, или освоить более широкий инструментарий и стать фуллстек-разработчиком и вертикально двигаться уже в этом направлении. Перейти в DevOps, DevSecOps, информационную безопасность — это логично, когда знаешь систему изнутри, и востребовано. Можно перейти на менеджерские позиции или открыть свою компанию.

Если работать в одной компании на единственном или нескольких похожих проектах, можно стать профи в узкой области за 1,5–2 года. Если же трудиться в крупной компании, на разных проектах и осваивать широкий инструментарий, то вырасти в профи можно за 2–3 года. Условия одинаковые:

  • усердно работать;

  • постоянно улучшать навыки;

  • изучать иностранные языки — без этого стать востребованным на крупных проектах тяжело. 

Разница между джуниором и миддлом — глубина знаний языка, инфраструктуры, инструментария и навыки владения ими. А вот разница между миддлом и синьором — глубина знаний паттернов, архитектуры, но ещё и наличие гибких навыков, менеджерских качеств, умение общаться с командой и заказчиком, решать возникающие проблемы. При этом по техническим знаниям они могут быть примерно одинаковыми.

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

Типичный день backend-разработчика

Игорь С.

Вackend-разработчик на Java

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

Затем нас бывает daily meeting — обычно быстрый созвон на 15 минут. Не каждый день. Каждый участник команды рассказывает, с какими проблемами столкнулся, остальные делятся предложениями, как ему можно помочь. Обозначаем, на каком этапе у нас реализация текущей задачи, что уже готово. 

Рабочее время обычно распределяем самостоятельно. Допустим, у меня есть две недели на разработку. Нужно постараться сделать код в первой половине спринта, чтобы дать время тестировщикам всё проверить и вернуть мне для доработки, если она нужна.  

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

Когда я представляю текущее состояние системы, я начинаю продумывать, как интегрировать в неё новые функции. После этого я начинаю пробовать что-то имплементировать, смотрю, будет это работать или нет. Потом отправляю своим коллегам на код-ревью, чтобы они визуально оценили код, проверили явные ошибки и опечатки. Есть такое правило — минимум два человека должны посмотреть код, прежде чем он попадёт в продакшн. 

Если это уже этап тестирования, то мы плотно работаем с тестировщиками, прорабатываем работоспособность кода. А если они находят какие-то баги, вместе их разбираем. Бывает и так, что тестировщик считает, то в коде есть ошибка, а на самом деле они просто не до конца поняли его назначение, и, соответственно, неправильно подобрали алгоритмы тестирования. 

Могу сказать, что бо́льшая часть работы заключается в общении с коллегами, анализе, поиске решений и всего одна десятая времени — непосредственно кодинг. Обычно все обсуждения проходит в фоновом режиме , под аэрохоккей или настольный теннис, за чашкой кофе или пока болтаешь с коллегами у кулера в холле. 

Часто бывает, что задача трудная, кажется, она потребует много времени. Но вот такое общение с людьми из разных команд помогает быстро сложить мозаику и понять, как решить даже сложную задачу.

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


Просто овладеть инструментами, выучить языки — не значит стать программистом. Это компьютерная грамотность. Чтобы быть востребованным программистом, который создаёт качественный продукт, надо превратиться в фаната своего дела. Подходов и способов решения задач много, выбрать нужно оптимальный. Это разница между отличным специалистом и посредственным. Важны коммуникативные качества. Чем лучше они развиты, тем быстрее будешь расти. В конструктивных дискуссиях с коллегами из разных подразделений рождается качественный продукт.

Быть бэкенд-разработчиком непросто, надо постоянно учиться и прокачивать свои навыки, чтобы оставаться в рынке. Причём и технические, и коммуникативные, ведь продукт создаёт команда. Одним из самых важных качеств разработчика должна быть любознательность, чтобы хотелось искать пути решения, выстраивать алгоритмы и делать продукт ещё более эффективным. 

Комментарии (9)


  1. GraDea
    25.06.2022 16:51
    +24

    Когда будут статьи «что такое веб-сайт» и «что-такое компьютер»?


    1. dimuska139
      25.06.2022 17:11
      +25

      Это уже на курсах, сперва их купить нужно


  1. Akon32
    25.06.2022 17:56
    +21

    Забавно, что в статье повсюду есть противоречия, если не в каждом абзаце, то через абзац:

    Backend-разработка — это сложно, но не страшно.

    бо́льшая часть работы заключается в общении с коллегами, анализе, поиске решений и всего одна десятая времени — непосредственно кодинг. Обычно все обсуждения проходит в фоновом режиме , под аэрохоккей или настольный теннис, за чашкой кофе или пока болтаешь с коллегами у кулера в холле. 

    Быть бэкенд-разработчиком непросто

    Да уж, по 7 часов аэрохоккея под кофеёк каждый день - "непросто"!


  1. Aleks_ja
    25.06.2022 18:01
    +11

    Вы уверены, что это статья для хабра?


    1. Graf54r
      25.06.2022 18:12
      +6

      А что не так? Все разработчики релокейтнулись, так что такие статьи теперь самое то!!!


      1. gmist
        25.06.2022 23:48
        +6

        Не, можно было бы понять такие статьи в журнале Садовод-любитель или в Кройка и шитье 2022, но заливать про аэрохоккей на ресурсе, где 99% аудитории айтишники - это совсем за гранью.


  1. wscms
    25.06.2022 21:37
    +4

    В круг задач бэкенд-разработчика входят:

    разработка домена; 

    вот тут совсем не понял ((

    настройка боевого, тестового и рабочего серверов и программ по мониторингу их состояний;

    DevOps как класс у вас отсутствует?


    1. Nialpe
      26.06.2022 00:29
      +2

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


  1. andreyvoroncov
    27.06.2022 10:03

    В круг задач бэкенд-разработчика входят:

    • разработка домена; 

    можно подробнее, что это значит?