бэкэнд разработчик с чего начать
13 инструментов крутого backend-разработчика
Программирование — это магия. Но только для тех, кто не знает его изнутри. Сегодня поговорим о backend-разработке и о том, с чего начать её изучение.
Что такое
backend-разработка
Начнем с того, чем вообще занимается backend-программист. Он создаёт скрипты, которые выполняются на стороне сервера. Область его работы — получение данных от сайта, их обработка и подготовка к возвращению пользователю. Если нужно, то обращение в базу данных. К этому добавляется создание задач, которые решаются спустя время.
Иными словами, backend-разработка — это получение информации, её запись в базу и возврат данных на сайт, где они будут представлены пользователю средствами Frontend.
Автор в сфере IT, digital, экономики и финансов. Ведет некоммерческий проект для начинающих писателей «ЛитЦех».
Что должен знать и уметь backend-разработчик
Этого достаточно для начинающего программиста. В дальнейшем подключается работа с очередями через Cron. Он запускает скрипты по расписанию: раз в минуту, день или месяц. Так как более 80% сайтов в интернете написано на PHP, мы расскажем об инструментах веб-разработки именно на этом языке. Ну, а курс «PHP-разработчик» сделает из вас гуру в этой области.
Веб-сервер
Backend-разработчик должен развернуть на компьютере веб-сервер, чтобы тестировать свой код. Организация локального сервера возможна в трёх вариантах.
1. Поставить «чистые» PHP, Apache и MySQL самостоятельно с нуля или применить готовые пакеты — Xampp, Denwer и другие.
Такая сборка работает в системе разработчика и воспринимается программным окружением как локальный сервер.
Это виртуальная машина с широкими возможностями. Физически Vagrant находится на компьютере, но воспринимается не как локальный сервер. Разработчик подключается к нему не по localhost, а по другому IP, который он сам и прописывает.
Vagrant не зависит от системы: берём эту сборку, переносим на другую машину, и всё работает в том же режиме. Это более гибкое и удобное решение для организации веб-сервера.
Docker — уникальная и универсальная программа в области виртуализации. Она использует систему образов для хранения файлов, благодаря чему процессы операционной системы запускаются изолированно друг от друга. Веб-сервер воспринимается программным окружением как находящийся в облаке, а не на физической машине.
Более того, отдельно от основной системы в разных местах находятся PHP и MySQL. Обновить беспроблемно и быстро версию PHP или любого другого языка — это настоящее достижение в мире разработки.
Программы для создания кода
Код пишут где угодно, даже в блокноте. Однако для удобства придуманы системы, где работает автоподстановка, можно заниматься дебагом (подсказка: Процесс отладки кода) и использовать массу иных возможностей. Такая программа называется IDE — интегрированная среда разработки, или редактор кода.
Для работы с PHP рекомендуем две IDE:
Основное преимущество — это бесплатная система. Однако NetBeans съедает много памяти во время работы и не такой прогрессивный, как редактор ниже.
Очень удобный интеллектуальный редактор от компании JetBrains. Обладает отличной автоподстановкой и продвинутой системой семантического анализа. Программист допустил опечатку — анализатор тут же показывает, где именно. Незаменимый инструмент для веб-разработчика на PHP.
Работа с базой данных
MyAdmin — стандартное решение для этих целей, но не самое удобное. Во-первых, он запускается в браузере, и соединение иногда прерывается из-за таймаута. Во-вторых, он частенько выдаёт сбои и не может похвастаться гибкостью.
Советуем два варианта, превосходящие MyAdmin по характеристикам:
Они одинаковы в возможностях и качестве, так что при выборе отталкивайтесь от удобства использования. Разве что Navicat поддерживает больше баз данных, чем SQLyog, но это важно не всем.
Тестирование API
Любой backend-разработчик столкнётся с тестированием API. Для этого нужны запросы PUT, DELETE, PATCH и POST. Протестировать их работу невозможно через командную строку. Приходится писать запросы в коде PHP и использовать CURL, что занимает много времени и создаёт лишние проблемы.
Советуем программу Postman, где тестирование максимально комфортно. Просто вбивайте URL и параметры, и ответ вернётся в трёх форматах: как запрос выглядит на сайте, в JSON и в текстовом виде. Postman невероятно удобен и очень облегчает разработку API.
Программы для версионизации
Чтобы не сталкиваться с проблемой случайного удаления кусков кода, программисты используют версионизаторы. А ещё они помогают команде без проблем работать над одним функционалом совместно.
Часто выбирают систему контроля версий Git без графической реализации. Однако работать через командную строку неудобно и муторно, здесь слишком много нюансов и проблем. Например, возникающие при слиянии файлов конфликты гораздо лучше решать в графическом интерфейсе, чем в консоли.
Рекомендуем три системы:
1. GitKraken — платная программа. Предназначена для Ubuntu и macOS.
Что нужно знать начинающему бэкенд-разработчику, кроме языка программирования
Авторизуйтесь
Что нужно знать начинающему бэкенд-разработчику, кроме языка программирования
продакт-менеджер программы «Python-разработчик» в Яндекс.Практикуме
Некоторые новички считают, что достаточно выучить нужный язык программирования — и всё, это знание по умолчанию делает из вас отличного бэкендера. Помните подход «купил зеркалку — стал фотографом»? Но это далеко не так.
Меня зовут Лера Солодовникова, я продакт-менеджер на программе «Python-разработчик» в Яндекс.Практикуме, сегодня хочу обсудить необходимые для работы бэкендера смежные знания и умения. По большей части текст ориентирован на Python-разработчиков, но пригодится и тем, кто работает с другими языками, — принципы довольно общие, разница лишь в инструментах.
Ещё в посте — отношение различных компаний к вашим навыкам, их важность для прохождения собеседования, а также подборка полезных книг по теме.
Базис
Начнём с главного — с ОС. Хороший бэкендер должен быть знаком с unix-подобной операционной системой. Это могут быть не только разные Linux-дистрибутивы, но и macOS или FreeBSD, но общепринятым стандартом всё же является Linux. Работать вы можете на ПК или ноутбуке с любой ОС, но Linux нужно знать. Ведь вам придётся довольно активно взаимодействовать с серверами, а большая часть из них работает на Linux.
3–4 декабря, Онлайн, Беcплатно
Из этого пункта плавно вытекает второй — работа с командной строкой. Это нужно для того, чтобы говорить с сервером на его языке. Нужно не просто знать, как нагуглить ту или иную команду и что она делает, а разбираться в командном интерфейсе. Опять же, допустимы варианты в зависимости от личных предпочтений или литературы, по которой вы учились: zsh, bash, fish, но стандарт — bash.
Следующее требование ― знание систем контроля версий. И тут уже без особых альтернатив: нужен именно Git, несмотря на наличие выбора. Изучите сам Git и механику взаимодействия с ветками, если собираетесь работать в команде. Впрочем, если вы интересуетесь бэкенд-разработкой и сейчас читаете этот текст, аккаунт на GitHub у вас уже наверняка есть (а если нет, вы знаете, что делать).
Очень пригодится базовое знание принципа работы Сети в целом. Мы сейчас не говорим о доскональном изучении HTTP и всех тонкостей DNS, но вы должны представлять, что именно происходит при попытке зайти на какой-то сайт. Что к чему подключается, какие работают связки, что грузится в первую очередь и тащит за собой остальное.
Дополнительным преимуществом для начинающего бэкенд-разработчика будет знание хотя бы одного веб-фреймворка — для Python это Django или Flask. Плюс базовые знания SQL. Никто не будет выставлять вас на ежемесячные соревнования SQL-программистов, но важно уметь самому проектировать БД, работать с ними через ORM, если мы говорим про Django, или через SQLAlchemy в случае с Flask.
Ну и, конечно, никуда без основ администрирования сервера, хотя бы на уровне «Я могу сам задеплоить свой проект по SSH, не отвлекая коллег от чтения Хабра».
Алгоритмы и тестирование
В плане базовых требований к кандидату и знания основ профессии компании делятся на два лагеря.
В первом сидят серьёзные практики, которых волнует только то, что вы умеете делать. У вас может быть любое образование, и, если вы докажете им, что на текущем жизненном этапе вы в состоянии выполнять все задачи, которые они взвалят на бэкендера, вы в деле.
Второй лагерь более требователен — для них важны фундаментальные знания. Техническое образование, математическое мышление и знание алгоритмов — вот тот набор, с которым надо заходить в такие компании. Например, в Яндексе без алгоритмов никуда. Послабление могут сделать в плане самого образования — оно тут как дополнительный плюс, потому что бывают ситуации, когда человек обладает такими знаниями, даже не обучаясь этому в вузе: самоучек много и курсов тоже.
Если вы хотите в Яндекс, то самое важное, на что будут смотреть HR и на техническом собеседовании — это на результаты прохождений самих секций собеседования и на то, насколько вы знаете алгоритмы. Ваш диплом и название вуза здесь как вишенка на торте. Вишенки может и не быть — без неё торт не перестанет быть тортом.
Примерно такое же отношение у работодателей к тестированию. Кто-то уверен, что джун должен заниматься тестированием, и это будет чуть ли не первым вопросом на собеседовании. Кто-то замечает, что для тестирования есть тестировщики. Кто-то вообще ничего не тестирует.
GitHub и хакатоны
Иногда в комментариях к подобным постам встречаются теории о важности наличия у кандидата прокачанного профиля на GitHub или опыта участия в хакатонах. Ваши проекты на GitHub, множество коммитов и форков, килограммы бейджиков с IT-конференций и хакатонов — это дополнительный фактор вашей оценки как специалиста.
Прежде всего на собеседованиях смотрят на практическое решение конкретных задач в рамках прохождения секций. Иногда дополнительно могут посмотреть ваш проект на GitHub, иногда — нет. Если вы идёте на мидла, то хакатонский опыт поможет вам быстрее и легче проходить секции собеседования. Для джуна опыт участия в хакатонах, даже без призовых мест, будет реальным подтверждением того факта, что человеку интересна профессия, он старается быть в курсе новых решений и инструментов, пытается самостоятельно прокачивать навыки. Да, это тоже плюс.
Командная работа
Про soft skills написано множество постов и, скорее всего, несколько книг, поэтому я не будут сильно вдаваться в их важность и необходимость — вы всё это уже читали много раз.
На мой взгляд, главное — уметь работать в команде. Это не значит, что условный интроверт не справится, никто не требует от вас быть душой компании и зажигать на тимбилдингах. В этом пункте речь о способности задавать вопросы. Вы не представляете, сколько проблем в проектах бывает связано с тем, что человек просто вовремя не спросил, не уточнил, не сообщил коллегам, что заметил потенциальный баг.
Разговаривайте, спрашивайте, уточняйте. Это нормально. Так же нормально, как пойти и усердно погуглить что-то, если не получается.
Говоря об отношениях в команде, стоит упомянуть дедлайны. Их важно соблюдать, особенно если они командные. Ситуации, в которых кто-то один просто забыл что-то сделать или не успел (и не сказал об этом), часто заканчиваются тем, что у всей команды съезжает график. Как это отражается на отношении к человеку, регулярно срывающему сроки, вы и без меня знаете.
Ещё несколько советов. Спокойно реагируйте на критику и замечания, прокачивайте уровень самоорганизованности, давайте коллегам обратную связь, не бойтесь ошибаться в работе и исправлять ошибки. И учитесь — возможностей для этого сейчас множество.
Полезные книги
Марк Лутц, «Изучаем Python». Марк написал эту книгу по мотивам собственных курсов, которые ведёт уже более 10 лет. Здесь всё важное: обзор инструментов, типы объектов, функции плюс описания моделей и инструкции по обработке исключений.
Антонио Меле, «Джанго 2 в примерах». Книга делает упор на практическое создание приложений для реальных задач. Кроме непосредственной работы с компонентами самого фреймворка, рассматриваются также и возможности интеграции сторонних инструментов.
Лекции Тимофея Хирьянова по алгоритмам. Тимофей — один из преподавателей МФТИ. Лекций по алгоритмам множество, но эти наглядные. Особенно полезны для новичков, но и разработчику с опытом тоже пригодятся.
Если вы можете свободно читать профильную литературу на английском, то порекомендуем ещё и пару книг о разработке на основе тестов: Harry Percival, «Test-Driven Development with Python» и Kevin Harvey, «Test-Driven Development with Django».
Как стать бэкенд-разработчиком: требования, пошаговая инструкция, полезные книги
Теневой генерал, пожалуй, так можно охарактеризовать специалиста в области backend. Именно от его усилий зависят функциональность и производительность веб-ресурсов и приложений. То есть всё то, что не видно глазу пользователя, но приносит ему комфорт в процессе пользования IT-продуктом.
Как стать бэкенд-разработчиком, учитывая, что эта профессия востребована сегодня, как никогда, но требует больших знаний и умений? Наша статья поможет в этом. Ниже описаны функции и задачи, которые должен решать этот специалист, требования к нему, а также приведена пошаговая инструкция и список книг, которые помогут найти путь в новую профессию.
Описание бэкенд-разработчика
Для начала необходимо разобраться, кто такой бэкенд-разработчик и чем он занимается. Если говорить простым языком, то это программист, который отвечает за то, чтобы приложение быстро работало, обеспечивало качественный поиск информации, надёжно и безопасно хранило данные и при необходимости работало с другими внешними системами.
У бэкенд-разработчика есть «брат», в профессиональном плане конечно. Разграничив функции, за которые отвечает каждый из них, мы лучше поймем их вклад в работу любого приложения.
Предположим, вы зашли на страницу интернет-магазина, вас встречает приятный интерфейс, красивая корзина, удобный поисковик, всплывающие окна дополнительной информации об обновлениях приложения – за эту работу отвечает фронтенд. Бэкенд-разработчик – обратная, теневая сторона сайта, которую не видит пользователь, но без которой не может работать приложение. Он создает программы для серверной части веб-платформы, заставляет сайт работать и выполнять свое предназначение.
Ваш Путь в IT начинается здесь
Задачи бэкенд-разработчика
Главной целью работы бэкенд-разработчика является написание сценариев работы приложения на специальном скриптовом языке программирования. Например, это скрипты, касающиеся интеграции сайта с платежным шлюзом, рассылки уведомлений, хранения данных в СУБД. Базы данных – самый понятный пример, то есть здесь хранится вся информация о пользователях, их комментарии, форум, жалобы и многое другое. Объем невероятно внушительный.
Бэкенд-разработчик отвечает за работу сервера, внутреннюю логистику сайта, улучшение функционирования приложения. Есть более локальные задачи для таких специалистов. Вот некоторые из них:
Зарплата и рост по карьерной лестнице бэкенд-разработчика
В интернет-пространстве, которое занимает в нашей жизни весомую часть, backend-разработчик может выстроить неплохую карьеру с высокой заработной платой и отличными перспективами.
Задачи бэкенд-разработчика
Если брать статистику Соединенных Штатов Америки, то зарплата такого специалиста будет варьироваться от 49 до 118 тысяч долларов в год (по данным авторитетного рекрутингового портала PayScale). То есть средняя заработная плата в этой области – примерно 80 тысяч долларов.
Ситуация с зарплатой в других странах немного скромнее:
Мы в GeekBrains каждый день обучаем людей новым профессиям и точно знаем, с какими трудностями они сталкиваются. Вместе с экспертами по построению карьеры поможем определиться с новой профессией, узнать, с чего начать, и преодолеть страх изменений.
Карьерная мастерская это:
Уже 50 000 человек прошли мастерскую и сделали шаг к новой профессии!
Запишитесь на бесплатный курс и станьте ближе к новой карьере:
Зарегистрироваться и получить подарки
В России бэкенд-кодеры получают около 100 тысяч рублей в месяц (или 1400$).
Требуемые знания и навыки, чтобы стать бэкенд-разработчиком
Если рассматривать работу с теневой стороной приложения как науку, то можно сказать, что это точная наука. Именно поэтому бэкенд-программист – это чаще всего специалист с высшим математическим образованием. Если вы не любите четкие алгоритмы, графики функций, то это работа не для вас. Но если вы задумались, как стать бэкенд-разработчиком и какими навыками нужно обладать, то вот лишь некоторые запросы компаний, занимающихся поиском бэкенд-кодера:
Если вам показалось, что требования несколько завышены, то, по крайней мере, они не меняются так быстро, как, например, для фронтенд-специалиста. Вам не придется настолько часто учиться новому, следить за современными тенденциями.
Требуемые знания и навыки, чтобы стать бэкенд-разработчиком
Существует стереотип, что все IT специалисты – зацикленные на своей работе, необщительные люди, однако это не так. Список личностных качеств, выдвигаемый компаниями в поисках нового бэкенд-разработчика, тоже немаленький:
Преимущества и недостатки должности бэкенд-разработчика
Проанализировав все вышесказанное, отметим основные плюсы и минусы работы в сфере бэкенд-разработки.
Достоинства должности backend-developer:
Отрицательные стороны профессии:
8 шагов, чтобы стать бэкенд-разработчиком
Книги для желающих стать бэкенд-разработчиком
Не обесценивая работу фронтенда, чей труд более ощутим пользователями, по крайней мере, визуально, нужно отдавать себе отчет, что из-за ошибки фронтенд-программиста пользователи просто останутся недовольными, а из-за промаха backend-специалиста бизнес может рухнуть, и заказчик потеряет деньги.
Что должен уметь бэкенд-разработчик
Пока кто-то не может найти работу, на hh.ru открыто 1270 вакансий по специальности бэкенд-разработчик, на Indееd.com — 440. Работодателям нужны подготовленные специалисты, и они готовы платить. В среднем в Москве Junior получает 60 000 рублей, в регионах — 30 000 рублей.
Рассказываем, кто такие бэкенд-разработчики, какие навыки и умения им нужны и как стартовать новичку.
Teamlead, PHP & Rails developer в Нетологии
Место бэкенд в веб-разработке
Веб-разработка — создание сайтов и веб-сервисов. Включает программирование на стороне клиента и сервера. Эту часть работы выполняют программисты. Они работают совместно с дизайнерами и верстальщиками, которые разрабатывают веб-дизайн и создают макеты страниц.
Веб-разработчики работают в трёх направлениях:
Кто такой бэкенд-разработчик
Сложно. Бэкенд разрабатывает программно-административную часть проекта, занимается его внутренним содержанием и серверной частью — базами данных, архитектурой, программной логикой.
Просто. Бэкенда можно сравнить со строителем, который:
Порог входа в бэкенд высокий, новичкам сложно освоить всё с нуля самостоятельно. Поэтому в специальность чаще переходят бывшие фронтенды, которые знают JavaScript, разбираются в библиотеках и фреймворках, используют некоторые из них.
Профессия
Веб-разработчик с нуля
Какие навыки нужны
Hard skills — основные рабочие навыки, которые нужны для выполнения задач. Бекэнд-разработчику нужно знать:
Чтобы освоить профессию, нужно понимать работу языка и его окружения, функционирование сетей — стека протоколов TCP/IP, HTTP. Бэкенду нужно разбираться в работе системы версионирования Git и сервера, например, по схеме ubuntu server + nginx + mysql + фреймворк.
Начинающему бэкенду нужно знать английский хотя бы на уровне чтения документов.
Soft skills — неспециализированные навыки, которые не связаны с должностными обязанностями прямо, но помогают устроиться на работу, стать частью команды и развивать карьеру:
Как развивать карьеру
Junior
Знает язык программирования, умеет работать с базой данных, может выполнять простые задачи в проекте. Чтобы развиваться профессионально:
Middle
Знает язык программирования на продвинутом уровне, ознакомлен с code style проекта, умеет использовать фреймворки. Самостоятельно выполняет несложные задачи на проекте, может проектировать решения для небольших задач. За счёт опыта может оценить задачи и ставить сроки выполнения.
Senior
Опытный разработчик, хорошо знает специфику своего стека и особенности его работы в разных окружениях. Может проектировать масштабные задачи и проекты, понимает необходимость использования или отказа от определённых паттернов или решений. Благодаря большому опыту может консультировать других разработчиков. Обладает развитыми soft skills:
Как стать Back-End разработчиком.
Back-end, в переводе серверная часть, осуществляет всё то, что вы не видите на сайте.
Back-end, в основном, призван для работы с базой данных, а именно:
СОЗДАВАТЬ, ХРАНИТЬ, ИЗМЕНЯТЬ и УДАЛЯТЬ информацию.
Приведу пример. Регистрационная страница социальной сети, когда пользователь вводит свою информацию происходит 3 этапа:
1) Обработчик – программа, написанная на каком-либо серверном языке программирования, обрабатывает полученную информацию и посылает в базу данных.
2) Создание и упорядочивание полученной информации в базе данных.
3) Хранение информации в базе данных.
Обобщим, Бэк энд часть сайта отвечает за хранение, организацию, получение и отправление, запрашиваемой сайтом информации.
Теперь, что нужно знать Back-end программисту.
1) Один или несколько серверных языков программирования, таких как PHP, Python или Ruby, чтобы писать программу-обработчик.
И 2-ое – язык запросов к базе данных SQL, дабы взаимодействовать с информацией.
Back-end программисты получают, конечно больше фронт эндщиков, но и порок вхождения выше.
На этом моменте закончим, в следующем посте мы рассмотрим тему ресурсов обучения.
Вообще, у нас есть группа в вк, там вы сможете найти полезную информацию по теме web-программирования. https://vk.com/public178153816
и да, @moderator, реклама порочных говнокАналов
Это либо по 5+ часов каждый день уделять учебе, либо идти на позицию trainee.
Например, стек технологий для go-разработчика на junior-позицию выглядит примерно так (а точнее, какие предъявили ко мне требования, когда я устраивался на работу именно на позицию джуна):
1) Go + парочка фреймворков (например, gin, go-micro, gorilla)
2) SQL (с go обычно требуется PostgreSQL + redis/mongodb)
3) Минимальные знания html/css/js (плюс какой-нибудь фреймворк к js аля vue, extjs, react)
4) Плюс-минус примерно представлять, как работает http/https, сокеты
5) Базовые знание команд линукса, гита, докера и какого-нибудь брокера сообщений
6) Знание основных структур данных (деревья, двухсвязанные списки) и хотя бы с помощью гугла суметь написать алгоритмы по работе с этими структурами