Чем занимается backend-разработчик neon banana?
Содержание:
- Чем занимаются бэкенд-разработчики
- Что нужно делать
- Фулстек-разработчик
- КТО ТАКОЙ BACKEND-РАЗРАБОТЧИК?
- Где учиться на бэкенд-разработчика
- Где обучиться профессии с нуля?
- Очистка кэша
- Распределение вакансий по зарплатам
- Бэкенд-разработчик — «боец невидимого фронта»
- Пример из жизни
- Базовые требования к профессионалу
- Что нужно знать и уметь
- Суть деятельности backend-разработчика
- Статистика зарплат для ‘Backend разработчик’ по некоторым регионам
- Что такое backend-разработка
- Кто такой бэкенд-разработчик, чем занимается?
- Backend-разработчик
- Лучшие книги и средства обучения
- ЧТО ДОЛЖЕН ЗНАТЬ BACKEND-РАЗРАБОТЧИК?
- Плюсы или почему мы все-таки пишем на Go
- Что такое backend?
Чем занимаются бэкенд-разработчики
Бэкенд-разработчик формирует и создаёт модели хранения и управления данными в базах данных. Также он разрабатывает функциональность, с помощью которой другие системы могут взаимодействовать с данными приложения: получать, изменять, добавлять и удалять их. Он обеспечивает устойчивую работу этих систем в разных ситуациях, например, при нагрузках или непредвиденном поведении сторонних приложений.
Сформировать единые требования к знаниям бэкендера сложнее, ведь бэкенд может быть написан на разных языках. Самые распространённые — Python, Java, Go, Rust, C++, Ruby, PHP, JavaScript и TypeScript (технология NodeJS).
Для каждого из языков есть свои фреймворки: в Python это Django, в Java — Spring, в Ruby — Ruby on Rails, а в JavaScript — Express. Их тоже нужно знать. Кроме того, специалисту нужен опыт работы как минимум с одной реляционной (Postgress, MySQL) и с одной нереляционной базой данных (MongoDB, Redis).
Базы данных (БД) — это специальные программы, предназначенные для организации, хранения и управления информацией. В реляционных БД данные хранятся в форме таблиц, а в нереляционных — нет.
Для написания запросов к реляционным базам данных используют язык SQL. Ядро SQL описывает ключевые операции, которые не зависят от конкретной БД, что делает SQL универсальным. Для нереляционных БД нет универсального языка запросов.
На практике для работы с базами данных используют специальные инструменты: ORM для реляционных БД и ODM — для нереляционных. Они позволяют обрабатывать информацию в формате привычных для разработчиков объектов — например, списков. Кроме того, у таких инструментов есть удобный интерфейс для базовых операций: создания, чтения, обновления и удаления данных.
Типичная задача младшего бэкенд-разработчика выглядит так. Предположим, что бэкенд проекта написан на Python и фреймворке Django. На сайте, который поддерживает компания, решили создать блог со статьями. Там уже есть другие разделы, а блог — новый. В нём должно быть несколько категорий статей: новости компании, обновления продуктов и спецпроекты. Когда администратор сайта создает статью, он должен выбрать для нее одну из категорий: то есть каждый материал должен быть привязан к своей категории. В базе данных должны храниться сами статьи, возможные категории и связи между ними. А ещё всё должно управляться из админ-панели сайта.
from django.db import models # Категории статей class ArticleCategory(models.Model): category = models.CharField(max_length=255, verbose_name='Категория') class Meta: verbose_name = 'Категория статей' verbose_name_plural = 'Категории статей' def __str__(self): return self.category # Сама статья class Article(models.Model): link_category = models.ForeignKey('ArticleCategory', on_delete=models.CASCADE, verbose_name='Категория') title = models.CharField(max_length=255, blank=True, verbose_name='Заголовок') text = models.TextField(blank=True, verbose_name='Текст') date = models.DateField(blank=True, null=True, verbose_name='Дата публикации') authors = models.CharField(max_length=500, blank=True, null=True, verbose_name='Авторы') class Meta: verbose_name = 'Статья' verbose_name_plural = 'Статьи' def __str__(self): return self.title
Чтобы решить эту задачу, в файле models.ру мы создаём модели данных для категорий статей и самих материалов. Сначала описываем встроенными инструментам Django, какие поля будут в каждой модели. Затем через ForeignKey выстраиваем связь между статьями и категориями. Также задаем вспомогательные настройки: максимальную длину строк, обязательность или необязательность полей, описываем, как эта конструкция будет отображаться на русском языке в админке.
Что нужно делать
Бэкенд-разработчики пишут программы для серверов, которые формируют нужные нам страницы и отправляют их нам на компьютер. Например:
- они продумывают архитектуру сайта и связи между его компонентами;
- настраивают базы данных, где хранится вся информация;
- делают так, чтобы сайт мог получать и отправлять информацию в эту базу;
- пишут движок сайта — ту программу, которая формирует страницы;
- если движок уже готовый — допиливают его;
- оптимизируют движок, чтобы сайт работал как можно быстрее и стабильнее;
- следят за безопасностью сайта, чтобы злоумышленник не смог украсть или подделать данные;
- иногда настраивают сами серверы — Apache или Nginx.
Фулстек-разработчик
Фулстек-разработчик так или иначе умеет всё — он работает и с фронтендом, и с бэкендом. То есть нужны навыки из двух профессий. Но за это и платят больше — в небольших компаниях такой человек может заменить нескольких специалистов, а в компаниях покрупнее берёт ответственность за значительную часть проекта.
И если с фронтендом всё примерно понятно — там вёрстка и JavaScript — то по бэкенд-части есть разнообразие. И здесь тоже можно учить Python и PHP, а можно отлично выучить JavaScript, разобраться в Node.js и стать фулстеком только с одним языком. Это звучит как минус, но на самом деле и для таких специалистов есть работа.
А ещё таким специалистам хорошо на фрилансе — можно в одиночку брать сложные заказы и получать за это больше денег.
Сколько нужно людей, чтобы сделать сайт с нуля
И может ли один человек заменить всех?
На профессии «Фулстек-разработчик» в HTML Academy мы готовим как раз специалистов по JavaScript, которые могут и сайт оживить, и бэкенд написать, и всё это на JavaScript — с помощью React и Node.js.
Фулстек-разработчик отвечает за фронтенд и бэкенд и может сделать так, чтобы всё заработало вместе и не развалилось.
Выбор за вами — главное, выбирайте сердцем (ну или исходя из того, где больше платят, тут уж вам решать).
КТО ТАКОЙ BACKEND-РАЗРАБОТЧИК?
Бэкэнд — это комбинация технологий и программного кода, которая обеспечивает работу веб-сайта или приложения, оставаясь при этом невидимой для конечного пользователя. Серверная часть состоит из трех основных компонентов: сервера, базы данных и программного приложения. Таким образом, задачей бэкенд-разработчика является создание и поддержка технологической платформы, обеспечивающей работу той части веб-сайта или сервиса, которая видна конечному пользователю, то есть интерфейса.
За что отвечает backend-разработчик:
- Обеспечение корректной работы всех функций сайта и его вычислительной логики;
- Организация и работа с базами данных через Database Management System;
- Разработка базовой логики и прикладных алгоритмов;
- Application programming interface;
- Необходимые интеграции с внешними сервисами;
- Тестирование и отладка приложения и отдельных компонентов.
Backend-разработчики отвечают за создание эффективных и быстрых технологических решений, которые помогают конвертировать данные во внешний код, с которым пользователь может взаимодействовать на своей стороне — при заполнении формы, создании профиля, совершения онлайн-покупки и многое другое.
Где учиться на бэкенд-разработчика
Вы можете самостоятельно освоить эту специальность по статьям, книгам и курсам (бесплатные варианты во множестве представлены на YouTube). К сожалению в этом случае, все полученные знания будут иметь фрагментарный характер и для работы по найму их объема не хватит (как вариант – фриланс, но так же весьма маловероятно).
Отсюда вывод – лучше идти на платные курсы с теоретической и практической частью. В интернете есть компании, которые предполагают подобное обучение. Их безусловный плюс – выполнение максимально приближенных к настоящим проектов, а кроме того – помощь в стажировке или даже в трудоустройстве.
Где обучиться профессии с нуля?
Существуют курсы, на которых можно учиться через интернет. Они позволяют с нуля освоить теорию и получить практику, необходимую для начала карьеры. Если вы хотите работать back end разработчиком, можно записаться в Skillbox или Нетологию:
Название |
Описание |
Подходит новичкам. Обучают прогаммировать на языке PHP, работать с базами данных MySQL, использовать фреймворк Symfony. Отдельные уроки посвящены популярной CMS 1С-Битрикс. Помогают с трудоустройством. |
|
В отличие от первого курса, здесь также затрагивают frontend, обучают верстке и JavaScript. Вы сможете решать больше задач. Вам может быть проще найти стажировку или работу. |
|
Самый объемный курс в обзоре. Идет в Нетологии. Учат front-end и back-end технологиям, проходят библиотеку React, фреймворк Laravel. Отдельные занятия посвящены карьере в сфере веб-разработки. |
Также основы профессии Backend-программиста можно освоить самостоятельно по учебникам и бесплатным курсам, которые есть на YouTube и разных сайтах. При этом важна системная подготовка. Не все новички хотят идти таким путем и учиться без наставников, готовых отвечать на любые вопросы.
Очистка кэша
Каждый запрос проходит через несколько кэшей на пути к бэкэнду. Если вы посещаете сайт в первый раз, подождите, пока он загрузится, а затем перезагрузите страницу.
Веб-приложение загружается быстрее чем в первый раз, поскольку браузер кэширует ресурсы, такие как .
Что если вы хотите внести изменения в ? Вы меняете имя файла. Допустим, вы меняете на , на который ссылается .
Закэшированный становится неактуальным, поскольку к нему никогда не будет другого запроса (если сам index.html не будет закэширован! Запрос к должен быть инвалидирован на бэкэнде).
Современные конвейерные сборки включают в себя очистку кэша для каждой сборки, поэтому большинство javascript файлов выглядят как . Обычно это применяется только к css стилям и скриптам, но вы также можете применить их к изображениям и другим ресурсам.
Однако подобные ресурсы меняются очень редко, и по соображениям производительности стоит их исключить из автоматического кэширования и просто обновлять вручную при необходимости.
*Примечание переводчика:
В оригинале было так:
Распределение вакансий по зарплатам
Рассмотрим распределение вакансий (с указанной зп) по диапазонам зарплат для ‘Backend разработчик’ (Россия).
До 93000.0 руб.: 12.54% вакансий.
От 93000.0 руб. до 121000.0 руб.: 11.11% вакансий.
От 121000.0 руб. до 153000.0 руб.: 11.59% вакансий.
От 153000.0 руб. до 185000.0 руб.: 10.99% вакансий.
От 185000.0 руб. до 201000.0 руб.: 10.04% вакансий.
От 201000.0 руб. до 241000.0 руб.: 10.04% вакансий.
От 241000.0 руб. до 261000.0 руб.: 13.74% вакансий.
От 261000.0 руб. до 321000.0 руб.: 10.16% вакансий.
От 321000.0 руб.: 9.8% вакансий.
Распределение вакансий по зарплатам также может дать приблизительную оценку минимальной и максимальной заработных плат для ‘Backend разработчик’ (Россия).
Бэкенд-разработчик — «боец невидимого фронта»
Многие современные сайты, веб-приложения (те, что запускаются не на шаблонных конструкторах) стали очень сложными, поэтому над ними работает целая команда специалистов. Чтобы создать полноценный, красивый, функциональный и удобный для пользователя сайт, необходима согласованная работа дизайнеров, фронтенд- и бэкенд-разработчиков и тех, кто будет всю эту работу контролировать, чтобы получилось нужное бизнесу приложение: аналитиков, проджект-менеджеров или самих заказчиков, представителей какого-нибудь бизнеса. Разделение труда ускоряет работу по созданию сайта или веб-приложения и облегчает его обслуживание.
Бэкенд-разработчик работает в тесной связи с фронтенд-разработчиком, получая от него пользовательскую информацию и возвращая ему обработанный результат.
Основные инструменты бэкенд-разработчика — серверные языки программирования. В целом в работе специалист использует разные инструменты:
- языки PHP, Python, Ruby, Java, C#, Node.js (программная платформа);
- дополнительно к Node.js полезно изучить Express (библиотека для взаимодействия платформы Node.js с сервером) и Mongo DB (базу данных для получения и хранения информации);
- в качестве дополнительных средств применяются фреймворки Laravel, Symfony, CodeIgniter, Django, Flask, Ruby on Rails, Spring, Express.
- для хранения данных используются MySQL, PostgreSQL, SQLite.
Пример из жизни
Для этой задачи нужно как минимум два человека — фронтенд, который настроит внешний вид сайта, красивые карточки товаров и сделает нужные цвета, и бэкенд-разработчик, который сделает всё остальное. Остального будет много:
- найти нужный движок магазина (или написать свой, но для этого уже нужна целая команда и большой бюджет);
- организовать и настроить хостинг под этот движок;
- запустить его в первоначальном виде и посмотреть, что нужно изменить;
- перепрограммировать шаблоны страниц, чтобы они показывали то, что нужно, а не то, что было изначально;
- связать базу данных магазина с системой онлайн-торговли — чтобы правильно считались остатки на складах, было точно известно наличие товара и т. д.;
- прикрутить к сайту регистрацию и авторизацию по популярным сервисам и соцсетям;
- убедиться, что всё это происходит безопасно и данные хранятся в нужном месте (и всё соответствует законам);
- переделать админку, чтобы менеджеры могли сами заполнять карточки товаров;
- проверить сайт под нагрузкой;
- настроить резервное копирование;
- сделать автоматическое оповещение о заказе по почте.
Вывод такой: работы у бэкенд-разработчика всегда много, потому что заказчик всегда будет стремиться к тому, чтобы сделать сайт ещё лучше, быстрее и удобнее.
Базовые требования к профессионалу
- Знание хотя бы одного «серверного» языка программирования: PHP, Go, ASP.NET, C/C++, Python, Ruby, Java. В некоторых случаях достаточно знания JavaScript для бэкенда (Node.js), но это скорее как плюс, чем как пункт.
- Знание API (REST, SOAP — всё реже).
- Понимание принципов работы серверов Apache, NGINX, IIS и проч.
- Навыки написания юнит-тестов и покрытия кода тестами.
- Основы сетевой безопасности и знание инструментов её обеспечения.
- Знание популярных веб-фрейморков, которые способны решать задачи разработки конкретного приложения.
- Навыки написания запросов к БД и проектирования баз данных.
- Знание основ фронтенда — и это не плюс, а обязательный пункт, иначе вам придётся крайне непросто проектировать и писать приложение.
- Администрирование UNIX или знание Linux (можно любого одного дистрибутива).
- Знание принципов работы HTTP (кэширование, авторизация, структура сообщений, заголовки, коды ответов и проч.)
- Модель OSI.
- Навыки составления и оценки технического задания (ТЗ) — очень важный навык, который необходим для сбора самой точной информации о требованиях к ПО.
Стажёр (Intern) | Младший (Junior) | Средний (Middle) | Старший (Senior) | Ведущий (Lead) |
---|---|---|---|---|
|
|
|
|
|
— | + ООП, фреймворки | + ООП, фреймворки, Docker | + высоконагруженные системы, ООП, фреймворки, Docker | + Linux, ООП, фреймворки, Docker |
Топ-5 востребованных технологий у специалистов по данным «Хабр Карьера», 2 полугодие 2019 года, нижняя строка — «дополнительные» скиллы.Принцип формирования списка: пользователи, внося данные о заработной плате, указывают скиллы, которые у них в приоритете (что они умеют делать!). То есть это не требования работодателя, а навыки специалистов каждой категории.роадмап, но уже для бэкенд разработчика
Что нужно знать и уметь
Каждый второй бэкенд-программист – это специалист с высшим математическим образованием. Backend-разработку можно назвать наукой, и эта наука точная. Множество факторов будет зависеть от того, правильно ли разработчик все просчитал и выверил, например, алгоритмы или функции.
Стандартный список требований к бэкенд-программисту включает в себя:
- Знание серверных языков программирования.
- Понимание принципов работы серверов и интернет-ресурсов.
- Навыки юнит-тестирования.
- Основы сетевой безопасности и ее инструментов.
- Знание веб-фреймворков.
- Умение работать и проектировать базы данных.
- Понимание основ деятельности фронтенд-разработчика и верстальщика.
- Администрирование UNIX-подобных систем.
- Знание API.
- Умение правильно составить техническое задание (ТЗ).
- Знание основ объектно-ориентированного программирования.
- Умение писать код быстро и правильно, а также ориентироваться и исправлять чужой код.
- Знание принципов объектно-ориентированного программирования.
- Понимание систем контроля Git.
- Владение английским языком.
Помимо этих требований, в вакансии могут быть прописаны и другие пункты, которым должен соответствовать будущий работник. Это зависит от сферы деятельности фирмы, предоставляющей вакантную должность. Ведь backend-разработчик должен предоставить решение именно для этой компании.
Список требований получился внушительный. Но инструменты и требования для бэкенд-разработки меняются медленнее, особенно по сравнению с деятельностью фронтенд-специалиста. Эти знания надо один раз освоить, а обновлять их надо нечасто.
К личностным качествам же относятся:
- не бояться просить совета или настаивать на своей правоте;
- быстро ориентироваться и искать информацию;
- составлять план работы и укладываться в сроки;
- логическое и аналитическое мышление;
- инициативность;
- коммуникабельность;
- ответственность;
- упорство и целеустремленность;
- стремление изучать новое и перенимать опыт коллег.
Основные инструменты для работы
Программист может применять любые инструменты для работы, в том числе и языки программирования. Но при выборе он учитывает требования заказчика и область деятельности его проекта.
Серверные языки программирования: PHP, Java, Ruby, Python, Perl.
Но работодатель может поставить в качестве условия работу только с определенным языком программирования. И его backend-developer может не знать. В этом заключается сложность работы.
К тому же язык программирования не оставит выбора в том, с какой базой данных взаимодействовать.
Основные базы данных, с которыми работает бэкенд-разработчик:
- MySQL,
- SQLite,
- PostgreSQL,
- MongoDB.
Например, при работе с PHP с большой вероятностью нужно будет еще и изучить MySQL, если backend-разработчик еще незнаком с этой базой данных.
Фреймворки:
- Zend Framework.
- Symfony.
- Yii.
- Codeigniter.
- Kohana и др.
Они могут использоваться как дополнительные средства. Эти инструменты определяют структуру интернет-ресурса и позволяют создавать API-интерфейсы.
Суть деятельности backend-разработчика
Как известно, любые интернет-сервисы, сайты и мобильные приложения включают в себя две составляющие: backend и frontend:
- Первая часть – выполняемый на серверной стороне код, откуда загружается сайт или веб-сервис. Допустим, вы написали в поисковой строке запрос. Он попадает на сервер. Который ищет информацию в БД и отдает ответ на запрос. Как раз-таки процесс поиска и создания ответа из БД – это и есть backend-часть ПС.
- Вторая часть – исполняемый в браузере код. Иными словами, фронтенд-разработчик отвечает за отображение сайта на разных устройствах (ПК, ноутбук, планшет, смартфон и т.п.), работоспособность форм и кнопок.
Статистика зарплат для ‘Backend разработчик’ по некоторым регионам
Регион | Средняя зарплата, руб. | Медианная зарплата, руб. | Вакансий с зарплатой | Всего вакансий |
---|---|---|---|---|
Новосибирская область | 195936.0 | 175000.0 | 47 | 87 |
Республика Татарстан | 139429.0 | 113000.0 | 28 | 61 |
Свердловская область | 172125.0 | 173000.0 | 32 | 53 |
Самарская область | 199800.0 | 179000.0 | 20 | 47 |
Ростовская область | 137545.0 | 131000.0 | 22 | 44 |
Нижегородская область | 158333.0 | 141000.0 | 18 | 41 |
Краснодарский край | 150579.0 | 131000.0 | 19 | 40 |
Пермский край | 127364.0 | 131000.0 | 11 | 29 |
Томская область | 148412.0 | 151000.0 | 17 | 25 |
Республика Башкортостан | 156667.0 | 105000.0 | 12 | 20 |
Что такое backend-разработка
Backend-разработка – это набор специализированных действий. С их помощью backend-разработчик выполняет свои обязанности.
В задачи бэкенд-специалиста входит:
- Разработка, организация и управление базами данных.
- Проверка личных данных на соответствие.
- Обеспечение безопасности веб-сервисов.
- Настройка автоматических уведомлений.
- Разработка архитектуры кода.
- Создание и при необходимости доработка семантического ядра сайта.
- API-разработка для связи интернет-платформы с посторонними сайтами.
- Оптимизация функций и работы сайта для его быстрой загрузки.
- Работа с системами резервного копирования.
- Контроль за корректной работой сайта и отладка его компонентов.
- Оптимизация алгоритмов для приложений.
- Тестирование всего веб-сервиса или его отдельных элементов.
- Создание приложений, которые будут поддерживать разработанный интерфейс.
- Контроль состояния серверов.
Конечно, не каждый backend-программист способен выполнить все задачи из списка. Но такие разработчики и не выбиваются вперед.
Кто такой бэкенд-разработчик, чем занимается?
Программист этого направления занимается внутренней стороной программ, сайтов, приложений, информационных систем. Он обеспечивает корректную работу программно-аппаратной части любого сервиса. Разработчик должен обеспечить сбор и хранение данных, передачу информации от программы пользователю и обратно, удобство навигации, корректную работу внутреннего функционала, взаимодействие с сервером, программную логику приложения.
Отличие backend от frontend и fullstack разработки
Все эти профессии смежные, встречаются в веб-разработке и создании различного ПО. Работают эти разработчики часто над одними и теми же проектами, но в разных качествах. Разделение профессий пошло именно из веба.
Back-end занимается созданием программно-аппаратной части сайтов, программ, игр и приложений. От его усилий зависит, насколько удобным и быстрым будет сайт или ПО, какие функции на нем будут. Адаптация под различные платформы также на совести бэкенда
Здесь важно отметить, что пользователь при работе с сайтом напрямую не взаимодействует с тем, что заложил в него разработчик
Чтобы было понятней, сравним создание сайта с автомобилем. Тогда бэкенд разработка – это двигатель и ходовая часть благодаря которым машина едет, а фронт-енд – это руль, педали, панель управления, все те элементы, с которыми взаимодействует водитель, чтобы управлять автомобилем.
Full-stack – это программист, который владеет обоими направлениями: бэкендом и фронтендом. Он может работать в команде с теми или другими специалистами или самостоятельно разработать сайт или программу от внутренней архитектуры до пользовательского дизайна.
Основные задачи backend-developer
Бэкенд-специалист занимается следующими вопросами:
- написание программного кода, доработка уже имеющегося кода, поиск и устранение в нем ошибок;
- работа с базами данных;
- разработка программной логики проекта, его архитектуры, ядра всего проекта;
- отладка работы серверов и взаимодействия продукта с ними;
- разработка функций приложений или сайта, добавление новых;
- разработка API;
- тестирование;
- ускорение работы приложения или сайта, оптимизация потребления ресурсов;
- интеграция с другими программами, приложениями;
- контроль версий.
Также бэкенд занимается повышением безопасности сервиса, защиты данных, их резервного копирования и хранения.
Разработчикам нужно решать 3 основные задачи:
- Сделать сайт или программу, отвечающую всем требованиям заказчика, имеющую все функции, указанные в техзадании.
- Сделать сайт или программу максимально оптимизированную. Это означает, что готовый продукт должен быстро работать, корректно и эффективно обрабатывать запросы пользователей, реагировать на их поведение, также необходимо обеспечить корректное взаимодействие с пользовательским интерфейсом, совместимым с большинством платформ (браузеров или операционных систем).
- При этом проект необходимо сделать экономичным, т. е. потребляющим минимум ресурсов.
Современное создание ПО – это не только написание кода, но еще и объединение уже имеющихся разработок в новые программы. Поэтому разработчику необходимо владеть различными языками программирования, фреймворками, уметь работать с базами данных, контролем версий и прочее.
Backend-разработчик
Чем занимается?
Backend-разработчик решает самые разные задачи, начиная от создания каркаса будущего приложения, заканчивая специфическими бизнес-задачами. Например, в банке такой специалист будет анализировать платежи с банковских терминалов и проверять их корректности для предотвращения краж. Еще он проектирует системы хранения и обеспечивает быстроту обмена данными, контролирует их чистоту и корректность доступа к ним. Помимо этого, backend-разработчик пишет системы для автоматического тестирования и проверяет, корректно ли работает программа.
Технический стек
Backend-части часто пишут на PHP, JavaScript и Go; для больших приложений, например банковских, используется Java. У каждого языка, как и любого инструмента, своя область применения. Backend-разработчики активно используют фреймворки — каркасы приложений, в которых фундаментальный функционал уже оптимизирован, это позволяет сосредоточиться на более конкретных задачах.
Рабочий день
Рабочий день backend-разработчика зависит от места работы. В компаниях, занимающихся разработкой собственного продукта, более размеренный ритм, в котором есть пара больших сессий написания кода в день (по 2–3 часа), короткие встречи для синхронизации с командой, обсуждение архитектурных вопросов. У заказной разработки график более рваный: нужно общаться с заказчиками, быстро вносить правки и участвовать во встречах.
Тоже интересно: Чем занимается backend-разработчик в компании, которая делает игры?
Карьерный рост
Карьера начинается с позиции джуниор-разработчика. В течение испытательного срока он изучает процессы разработки, общается с командой и очень много работает. Первые полгода-год джуниор набирается опыта. Если за это время до конца было доведено много задач, багов было немного, а производительность сравнима с более опытными коллегами, можно просить о повышении.
Дальнейший рост может быть разным, как ветки прокачки в компьютерных играх: если вы прокачиваете технические навыки (hard skills), можно вырасти до уровня архитектора. Если вы чувствуете тягу к построению процессов, можно освоить методологии управления Scrum или Agile и обучать команды. Если есть уклон в классический менеджмент, можно вырасти до тимлидов и CTO (Chief Technical Officer, технический директор): в этой области нужно уметь организовывать и строить процессы, а также не бояться общаться с заказчиками.
Личные качества
Ответственность: на плечах такого специалиста лежит очень многое. Но самое главное качество программиста — научиться думать абстракциями. Если человек не может перейти с материального уровня на уровень функций, объектов, паттернов, то ему будет сложновато.
Александр Пряхин, работает в IT-менеджменте, до этого — backend-разработчик на PHP и Java: «Моя профессия нравится мне динамикой. То, что вчера казалось фантастикой, сегодня – реальность. Посмотрите, как Тони Старк в фильме „Железный человек“ 2010 года с телефона показывает видео на телевизоре. Сейчас это обыденность. Программисты создают экосистемы, цифровые миры, высокопроизводительные системы. Разве это не круто?»
Курс
Backend-разработчик
Освойте с нуля программирование на Go и бэкенд-разработку высоконагруженных приложений и станьте незаменимым специалистом. Дополнительная скидка 5% по промокоду BLOG.
Узнать больше
Лучшие книги и средства обучения
- Базовая книга по вашему языку программирования — мне нравятся издания O’Reilly, многие переведены издательством «Питер».
- Аналогично базовые книги по вашему стеку.
- Кукбуки (cookbook) по языкам и рекомендации корпораций, статьи в блогах и т.д.
- Бек Кент, Экстремальное программирование. Разработка через тестирование — отличная книга для любого разработчика в принципе, но особенно для бэкендера. Проникнуться философией TDD дорого стоит.
- Джоэл Х. Спольски — можно читать его блог, можно ещё на просторах Рунета найти электронную книгу «Джоэл о программировании» — сборник постов из блога на русском.
- Роберт Мартин «Идеальный программист», «Чистый код» — переводная книга от «Питера» хороша, но в оригинале стиль и шутки вообще бесподобны.
- Мартин Фаулер и коллектив авторов «Шаблоны корпоративных приложений» — «взрослая» книга для джавистов, но не помешает ни для одного серверного языка как сборник инсайтов и крутых находок.
- Бесплатные курсы и видео, которых бесконечно много на Youtube на русском и английском языках. Просто слушайте, повторяйте, систематизируйте знания. Для начала подойдут любые, очень скоро вы научитесь отличать крутые вещи от дилетантских.
- webref.ru — очень классный сайт для разработчиков веба, разбирайтесь, обучайтесь.
- codecademy.com — интерактивный сайт для обучения разработке на разных языках программирования на английском, с самого низкого, нулевого, уровня.
- ITc | сообщество программистов — вагон организованной информации с курсами, лекциями и чем угодно. Читайте комментарии, легко определяйте лучшее для обучения.
- Библиотека программиста — куча книг по любой айти-тематике.
ЧТО ДОЛЖЕН ЗНАТЬ BACKEND-РАЗРАБОТЧИК?
Список того, что должен знать бэкэнд, напрямую зависит от деятельности и характеристик компании, в которой работает специалист. Если на первый взгляд это кажется нелогичным, то, погрузившись в процесс обучения, становится понятно, что бэкенд должен не просто писать код, а писать решение, которое будет вписываться в конкретную нишу продукта. Для этого вам нужно разбираться в определенных отраслях:
- Программирование. Нужно знать синтаксис языка и основные конструкции, понимать логику работы. Уметь применять шаблоны проектирования, алгоритмы и структуры данных.
- Базы данных. Как писать запросы и организовывать базы данных в MySQL, Postgres или NoSQL. Ну или в других системах управления базами данных — это зависит от конкретной компании.
- Как работает веб. HTTP и HTTPS.
- Веб-серверы. Apache или NGINX.
- Application programming interface. JSON, REST и XML и как их использовать для более эффективной передачи информации.
- Аутентификация. Как организовать сессии, сохранять файлы cookie, заводить токены и ключи. Как работает Oauth.
- Безопасность. Как избежать CSRF, XSS, SQL-инъекций.
- Масштабирование. Как работают асинхронные запросы и кэш.
- Управление сервером. Как настроить Windows, Linux, Unix, OS X.
Несмотря на то, что бэкэнд предполагает работу только с серверной частью, лучше начать путь к профессии с изучения основ HTML и CSS. Далее — освоение языков программирования на стороне сервера, работа с базами данных.
Плюсы или почему мы все-таки пишем на Go
Хочется начать с порога вхождения: он минимален. Вспоминая какой скрежет вызывал в освоении тот же Spring, то Go, по сравнению с ним, можно преподавать в младших классах, настолько он прост.
И эта простота заключается не только в языке, но и в окружении, которое он за собой несет. Вам не нужно читать долгие маны по gradle и maven, не потребуется писать длиннющие конфиги, чтобы все хотя бы просто один раз запустилось. Здесь все обходится парой команд, а достойный сборщик и профилировщик уже является частью языка и не требует глубокого исследования для старта.
Как говорится: easy to learn, hard to master. Это то, чего мне всегда лично не хватало в современных технологиях: их как будто делают не для людей.
Из этого же следует скорость разработки. Язык был сделан для одной цели:
По сути, это backend язык для бизнеса. Он быстр, он прост и позволяет решать сложные задачи понятными способами. Насчет сложных задач и понятности — это отдельная тема для разговора, потому что в Go есть такая классная вещь как горутинки и каналы. Это удобнейшая многопоточность с минимальной возможностью для выстрела себе в ногу.
Что такое backend?
Бэкенд (англ. back-end) — это программно-аппаратная часть сервиса. Это набор средств, с помощью которых происходит реализация логики веб-сайта. Это то, что скрыто от наших глаз, т. е. происходит вне компьютера и браузера.
Как только вы введёте запрос на странице поисковика и нажмёте клавишу «Ввод», frontend закончится и начнётся backend. Ваш запрос отправится на сервер Яндекса или Google, т. е. по месту расположения алгоритмов поиска. Именно там и происходит вся «магия». Но вот, на мониторе появляются данные, которые вы запрашивали, — это происходит возвращение во frontend.
Также можно сказать, что backend — это процесс объединения пользователя с сервером.
Что касается backend-разработчика, то он использует любые инструменты, которые доступны на его сервере. На практике программисты применяют любой из универсальных языков: PHP, Ruby, Python, Java. Кроме того, при backend-разработке задействуются СУБД (MySQL, PostgreSQL, SQLite, MongoDB и пр.).
В зависимости от особенностей продукта меняются и обязанности backend-разработчика.