Кстати, вот еще одна дорожная карта, но уже для бэкенд-разработчика (остальные тоже есть на сайте — я считаю ее одной из лучших и наиболее систематизированных, которые я видел на эту тему). Проверьте его, распечатайте и вперед, к высотам бэкенда.
Профессия: бэкенд-разработчик
Если бы эта статья была опубликована в образовательном журнале, а не на Хабре, я бы начал ее так: «Подумайте о сайтах, которые вам нравятся, с удобной навигацией и приятным интерфейсом. Знаете ли вы, что это только верхушка айсберга…». Но все в Хамфре, вероятно, знают это, так что текста нет. Внутренняя часть любого веб-проекта — это сложная система, которая позволяет приложению быстро работать, хорошо искать, быстро возвращать информацию пользователю, безопасно и надежно хранить данные и взаимодействовать с другими внешними системами по мере необходимости. Это как швейцарские часы: вы покупаете их ради стиля и шильдика, но знатоки знают, что под неприметным циферблатом скрывается волшебный мир часов. А back-end разработчики — это волшебники механизмов, организмов, внутренностей, внутренностей или как вы хотите это назвать в веб-приложениях. Эй, я не мог пройти мимо этого текста!
Так или иначе, сегодня мы анализируем еще одну профессию из серии «Профессия…». Как насчет того, чтобы заняться разработкой бэкенда?
Кто это?
Говоря академическим языком, бэкенд-разработчик — это программист, отвечающий за внутреннюю и вычислительную логику веб-сайта или веб-приложения, а также других программных и информационных систем. Строго говоря, бэкенд существует не только для веб-решений, но и для настольных и мобильных приложений, потому что по сути бэкенд — это все, что связано с аппаратным и программным обеспечением сервиса. Но исторически сложилось так, что в веб-разработке преуспели бэкенд и фронтенд. И поскольку это также самая популярная область на данный момент, мы поговорим о вебе (многие посты относятся и к десктопу, а о мобильных разработчиках мы поговорим в отдельном выпуске).
Разработчик бэкенда создает элементы и функции, к которым пользователь приложения или сайта может получить доступ через интерфейс. Проще говоря, бэкендеры — это разработчики, которые разрабатывают все то, что пользователь не может непосредственно увидеть или потрогать. То есть, красивая форма ввода данных или корзина интернет-магазина — это фронт-энд, а хранение данных в СУБД, связывание полей формы регистрации и корзины, интеграция платежных шлюзов, автоматическая электронная почта, загрузка и обновление контента — все это бэк-энд. Так что если регистрационная форма выдает ошибку базы данных, это вина тестера 🙂 (почему — мы расскажем в другой серии).
Разработчик бэкенда отвечает за:
- обеспечение корректной работы всех функций сайта и его вычислительной логики;
- организация и работа с базами данных посредством СУБД;
- разработка базовой логики и алгоритмов работы приложения;
- API;
- необходимые интеграции с внешними сервисами;
- тестирование и отладка приложения и отдельных компонентов.
Разработчик front-end красит лампочку в желтый цвет и втирает back-end’у, что лампочка работает, но только днем.
Разработчик back-end задается вопросом, почему у всех проблемы с этими лампочками, вспоминает, что забыл визуализировать свет в базе данных, успокаивается и обвиняет front-end.
Где нужен?
Как и в случае с front-end разработкой, это применимо везде, где есть сайт или приложение, взаимодействующее с пользователем в Интернете. Другой момент заключается в том, что каждому back-end разработчику нужен свой уровень: В офисе традиционной социальной сети или крупного рекламного сайта бэкенд-разработчик должен обладать не только базовыми навыками, но и работать с большими нагрузками, архитектурой микросервисов и контейнеризацией (Docker, Kubernetes), знать системы мониторинга (например, Zabbix, Grafana) и иметь навыки Scrum (необязательно для некоторых компаний). Но для небольшого интернет-магазина достаточно набора PHP-Ajax- необходимых СУБД- немного HTML, иногда даже меньше. Конечно, требования к заработной плате и опыту работы также сильно различаются.
Традиционно на Habrcareer мы нашли 444 вакансии backend-разработчика, что почти в два раза больше, чем frontend-работ. На hh.ru их около 1800. Как правило, на рабочем месте вас ждут пионеры, поиск которых занимает два часа 🙂 Но если серьезно, то в компании может быть 2-3 backend-разработчика на один frontend, особенно если это приложения со сложной внутренней логикой и бизнес-логикой (интернет-магазин, CRM-ERP, корпоративный портал и т.д.).
Определитесь с языком программирования
В отличие от фронтенд-разработчика, который должен знать только HTML/CSS и JavaScript, бэкенд-разработчику приходится принимать сложные решения. Существует множество языков, некоторые из которых развиваются более активно, а другие используются для решения очень специфических задач.
Для начинающих разработчиков хорошим выбором будет язык сценариев, например, Python. Во-первых, он относительно прост, его синтаксис читабелен, а значит, вы можете искать решения своих проблем и учиться на чужом коде. Во-вторых, позиции Python в самой веб-разработке укрепляются с каждым годом. Если вы планируете заняться веб-разработкой, этот язык предоставит вам ряд интересных проектов.
Согласно «The State of the Octoverse», Go является одним из 10 языков с наиболее быстро растущим сообществом. Он также возглавляет список самых дорогих языков в 2020 году. При разработке бэкенда он необходим для создания микросервисов и проектов с высокой нагрузкой, когда на сайте или в приложении одновременно работает множество пользователей.
PHP остается одним из самых популярных языков в Интернете, а Ruby и Node.js открывают большие возможности для тех, кто их изучает. Как только вы поймете основные правила и функции выбранного вами языка, сразу же попробуйте его использовать. Пишите небольшие приложения, которые компилируют веб-страницы на основе определенного тега, автоматизируйте свои ежедневные задачи, ставьте цели и создавайте пути к этим целям.
Познакомьтесь с пакетными менеджерами
Если вводная часть
Ключевым навыком для любого программиста является умение искать информацию. Учитесь у других разработчиков на Github и других профильных сайтах и изучайте отраслевые стандарты. Некоммерческая организация OWASP (Open Web Application Security Project) регулярно обновляет правила создания безопасных веб-приложений.
Приобщитесь к лучшим практикам
Разобравшись с менеджерами пакетов и ознакомившись с общими принципами разработки, вы сможете создавать более сложные программы. Поищите проекты с открытым исходным кодом на GitHub, поймите, как они работают, и попробуйте построить что-то похожее и добавить свои собственные функции. Не стесняйтесь задавать вопросы, но учтите, что на многие вопросы уже были даны ответы на форуме.
Важно научиться пользоваться терминалом, особенно когда речь идет о Linux.
Операционные системы и базис
Разработчик бэкенда должен знать, как работают операционные системы, что такое потоки и параллелизм, понимать сетевые концепции и стандарты POSIX, уметь управлять процессами, памятью, вводом и выводом (I/O).
Полезное оборудование:
Также есть видео о том, что такое операционная система и как она работает:
Существует множество споров, в которых поклонники того или иного языка программирования демонстрируют свое превосходство над другими в разработке back-end. Но помните, что язык — это всего лишь инструмент, и какой из них вы выберете, зависит от вашей цели и того, что вы уже знаете.
Выбор языка программирования
Например, если вы уже знаете JavaScript и решили изучать бэкенд после фронтенда, Node.js будет хорошим выбором. Знакомы ли вы с Python? Django также предлагает множество готовых решений для серверной части. Java — хороший выбор, если у вас сложный проект, но если ваше веб-приложение небольшое, писать бэкэнд на Java — все равно что забивать гвозди. PHP по-прежнему является классическим языком, поскольку подавляющее большинство современных веб-сайтов написано на нем.
И это еще не все. Подробнее читайте в нашей статье о 8 самых важных языках бэкенда.
Вы узнаете об API как инструменте интеграции приложений для подключения сторонних сервисов, импорта данных и использования стандартных решений для ваших веб-ресурсов. Часто сервисы, имеющие API, описывают процесс подключения в своей документации. Иногда это максимально доступно, а иногда приходится разбираться самому. Вот почему важно не просто знать, а понимать, как устроен API.
API
Стоит научиться устанавливать и настраивать такие распространенные веб-серверы, как Nginx, Apache, Caddy и MS IIS. Все они достаточно надежны и просты в использовании.
Вы также можете прочитать, как самостоятельно установить сервер для вашего сайта с помощью хостинга DigitalOcean и операционной системы Ubuntu 20.04 LTS
На hh.ru представлено 4 988 вакансий для работы в Backend. Только в 1 713 указана зарплата, поскольку в ИТ-индустрии принято обсуждать зарплату непосредственно на собеседовании. Из этих зарплат 1 478 вакансий имеют доход от 90 000 рублей, по сравнению с 450 000 рублей для 57 вакансий. По языкам программирования — они ищут самых разных программистов.
Что должен знать и уметь Backend-разработчик
В Backend-разработке заняты как начинающие, так и продвинутые/старшие специалисты, но вакансий для младших специалистов, как всегда, на порядок меньше (хотя их по-прежнему достаточно много).
Новички обычно сталкиваются с подавляющим объемом технологий, проектов и возможных решений. Их действительно много, и часто бывает непонятно, как подступиться к сложным задачам. По мере того, как разработчик набирается опыта (что решает проблему), сами проблемы становятся все сложнее: как оптимизировать приложение, как сделать меньше ошибок, какой шаблон лучше выбрать и так далее. Разработчики высокого уровня, которые уже знают, как справиться со всеми этими вопросами, сталкиваются с совершенно другой проблемой: где заработать хорошие деньги?
Поскольку старшие могут выполнять самые сложные задачи, обладают большими техническими навыками и опытом разработки, их готова взять любая компания, поэтому вопрос заработка/интересного проекта/социального пакета становится самым сложным.
Плюсы и минусы работы
- Высокие зарплаты специалистов. Бэкенд-девелоперы зарабатывают хорошие деньги даже в условиях кризиса.
- Действительно интересная работа. Вам придется решать разнообразные задачи, иногда – нестандартно и творчески.
- Свобода. Если у вас есть опыт – вы без проблем найдете другую работу при желании, и даже – на удаленке.
- Непростое обучение. Освоить эту новую профессию будет непросто, если вы решите пойти по пути самообучения – без ментора учиться очень тяжело.
- Нужно постоянно учиться. Особенностями профессии являются постоянное обучение и самообучение – технологии не стоят на месте.
- Придется учить логику и математику. Задачи бэкенд-разработчика почти всегда включают в себя построение логических цепей и высчитывание чего-либо, мозги придется напрягать постоянно.
- Сидячая работа. Вам придется дополнительно беспокоиться о здоровье – заниматься спортом в свободное время, адекватно питаться.
С какими сложностями сталкиваются специалисты
Порог вхождения
Продолжительность
Карьерный путь Backend-разработчика
- Интерн. Карьера backend-разработчика начинается либо с этой стадии, либо с джуна. Вы еще даже не разработчик – вас берут на обучение. Начнете с изучения языков, решать сложнейшие задачи вы будете еще не скоро.
- Junior. Вы уже что-то умеете, но на самом деле – еще нет. Вам уже будут платить зарплату, но к реальному проекту еще не подпустят, чтобы вы ничего не сломали. Будете набираться опыта в песочнице.
- Middle. Здесь начнется ваша реальная разработка. На вас будут скидывать простые и рутинные, но уже реальные задачи. Зарплата повысится раза в 1.5-2 по сравнению с джуном, потому что вы начнете представлять реальную ценность.
- Senior. Полноценный разработчик, за которым уже не нужно следить и который может посматривать за джунами. Вы можете взять на себя полную ответственность за какой-либо функционал и самостоятельно решить возникшие проблемы.
- Lead/PM/техдир/… Senior может эволюционировать в любую сторону, в которую ему захочется. Или он может остаться на позиции Senior и углублять свои навыки. В общем, все дороги открыты.
Платные курсы
Java Developer от Skypro
Чтобы стать бэкенд-разработчиком, необходимо пройти долгий путь обучения, состоящий как из практических, так и теоретических курсов. Это достаточно сложная профессия, поэтому невозможно составить конкретный, универсальный пошаговый план. Но можно составить примерный план, как стать таким человеком.
Как стать специалистом по бэкенду шаг за шагом:
Как стать бэкенд-разработчиком
Этого серьезного списка достаточно, чтобы начать работу. В дальнейшем вам может понадобиться изучение администрирования UNIX/Linux, HTTP и систем с высокой нагрузкой.
Да, здесь нужно изучить гораздо больше инструментов и программного обеспечения, чем на переднем крае. Но в этом есть и положительная сторона. Это связано с тем, что инструменты разработки в бэкенде меняются очень медленно, особенно по сравнению с фронтендом. Таким образом, пока специалист по фронтенду изучает новую документацию по HTML, специалисту по бэкенду достаточно взглянуть на последние сводки в этой области (что гораздо интереснее и больше похоже на хобби, чем на работу).
- Очень поверхностно ознакомиться со всеми языками программирования серверов (PHP, Go, ASP.NET, C/C++, Python, Ruby, Java), выбрав один, который будете изучать углубленно. На нашем сайте есть обзор профессии PHP-разработчик.
- Обучиться JavaScript для бэкенда (Node.js).
- Обучиться API. Самый востребованный вариант в последние годы (и наверняка в предстоящие тоже) — REST.
- Понять принципы работы серверов Apache, NGINX, IIS.
- Изучить веб-фреймворки. Здесь тоже можно выбрать любой вариант.
- Научиться работать с базами данных и использовать язык данных MySQL.
- Понимать основы фронтенда, иначе большинство задач бэкенда будет сложно выполнять.
Карта изучения языка для специалиста по бэкенду:
Существует три способа освоить профессию:
Каждый вариант не исключает другой, а скорее дополняет их. Профессия довольно сложная, поэтому рекомендуется сочетание как минимум двух способов обучения. Например, можно учиться в университете и одновременно заниматься самообразованием.
Где и как учиться бэкенду
В принципе, вам, безусловно, стоит заняться самообразованием, но если вы пройдете хороший курс, вам понадобится гораздо меньше, чем если бы вы изучали профессию в одиночку.
- высшее учебное заведение,
- онлайн-курсы от ведущих академий,
- самостоятельное обучение и поиск материалов.
Конкретной специализации по бэкенду не существует, но изучение языков программирования, API, работы с данными и сервисов.
Рекомендуемый тип обучения. Онлайн-курсы специализированных порталов очень систематизированы, а это значит, что студент получает информацию в наиболее эффективном порядке и не загружает голову лишней информацией (что очень важно в начале любого обучения). Более того, онлайн образование имеет большое преимущество — оно поможет вам найти работу.
Обучение в вузах
Популярные онлайн-курсы, обучающие бэкенду и не только (к сожалению, мы не смогли найти ни одного курса только по бэкенду):
1. «Карьера Fullstack разработчика» на Skillbox.
Студент может выбрать один из трех языков программирования: PHP, JavaScript, Python. Для бэкенда рекомендуется выбрать PHP или Python.
- веб-разработка в Московском финансово-промышленном университете «Синергия»;
- прикладная информатика в экономике в МосГУ;
- прикладная информатика в МИСиС;
- прикладная информатика в экономике в МЭИ;
- прикладная информатика в экономике в МГУПП.
Ссылка на обучение и дополнительную информацию: https://skillbox.ru/course/profession-fullstack-dev/
Онлайн-образование
Skillbox также предлагает специализированные курсы, включая «Fullstack Developer in JavaScript» — https://skillbox.ru/course/profession-fullstack-js/ и «Fullstack Developer in PHP» — https://skillbox.ru/course/profession-fullstack-php/.
2-й репетитор по веб-разработке в GeekBrains.
Это полуторагодичная программа обучения. Основное внимание уделяется бэкенду, но курс также включает обучение фронтенду. Партнер курса представлен хостинг-провайдером и регистратором доменов REG.RU.
Несколько полезных ссылок для профессии:
Профессия back-end разработчика сложна и нелегка в освоении, но у нее есть свои преимущества. Вы можете стать экспертом и быть уверенным, что ваши навыки востребованы, ведь чем сложнее что-то, тем ценнее результат.
Что вы думаете об области back-end? Возможно, вы сравнивали специальность с фронтендом? Если да, то к каким выводам вы пришли? Поделитесь любой информацией в комментариях!
Полезные ссылки
- Вопрос « Что нужно знать для backend-разработки? » на Хабре с ответами опытных программистов;
- Подкаст, посвященный бэкенду;
- « Мой извилистый путь от охранника до backend-разработчика » — история становления;
- Статья « Для чего back-end разработчику учить JavaScript »;
- Сообщество программистов в «ВКонтакте»;
- Stackoverflow — востребованный IT-ресурс с вопросами от новичков и ответами от опытных разработчиков;
- Активное сообщество веб-разработчиков Web-Shake .