Каково это быть бэкенд-разработчиком? Ну, это зависит от того, какого разработчика вы спросите.

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

Тем не менее, все еще полезно знать, каковы основные доли.

Внутренний разработчик — это тот, кто создает и поддерживает серверную технологию, на которой работают приложения и веб-сайты.

Чтобы понять, чем занимается back-end разработчик, нам нужно понять разницу между front-end и back-end в сети. Когда вы взаимодействуете с визуальными компонентами веб-сайта или приложения, вы работаете с внешним интерфейсом. Но когда вы нажимаете кнопку или вводите свою информацию, этот запрос отправляется на серверную часть, в систему, созданную внутренним разработчиком.

Вот несколько примеров того, что могут делать бэкенд-разработчики:

  • Разработайте масштабируемую систему, в которой хранятся миллиарды фотографий Instagram.
  • Создайте систему для потоковой передачи видеоконтента зрителям Netflix.
  • Напишите код на стороне сервера, чтобы сопоставить водителей Uber с пассажирами

Короче говоря, «бэкенд-разработчик» — это тот, кто создает серверную часть. В обязанности внутреннего разработчика входит проектирование, создание и обслуживание серверных компонентов веб-приложения, включая базу данных, API-интерфейсы и серверную логику.

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

Я разорвусь:

  • Базовые технические навыки, включая языки и технологии
  • Обязанности
  • Мягкие навыки

Давайте перейдем к описанию работы бэкенд-разработчика, компонент за компонентом.

Какие технические навыки вам нужны, чтобы получить работу в качестве back-end разработчика? 🔗

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

Начнем с языков.

Языки для освоения

Чтобы получить работу в качестве бэкенд-разработчика, вам необходимо владеть серверными языками программирования. В этой статье мы рассмотрим восемь самых популярных языков программирования для серверной части, которые вы могли бы изучить: Go, Python, JavaScript, Rust, Java, PHP, Ruby и SQL. В этой статье я сосредоточусь на наиболее распространенных и популярных языках бэкенд-разработчика, которые фигурируют в описаниях вакансий бэкенд-разработчика.

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

  1. Python: Python используется для серверной разработки, потому что его легко изучать и читать, а также он невероятно универсален. Он имеет множество библиотек и фреймворков, которые упрощают создание и поддержку сложных веб-приложений. Вот несколько замечательных ресурсов, которые помогут вам начать изучение Python.
  2. Go (Golang). Go, разработанный Google, предназначен для создания масштабируемых и параллельных систем. Он имеет простой синтаксис, встроенную поддержку параллелизма и эффективное управление памятью, что делает его популярным выбором для создания высокопроизводительных серверных систем. Учиться Go довольно весело!
  3. JavaScript. JavaScript чаще всего используется для интерфейсной веб-разработки, но с помощью платформы Node.js он становится очень полезным и для серверной разработки. Он известен своей способностью обрабатывать несколько подключений одновременно, что делает его идеальным для создания быстрых и масштабируемых серверных частей для приложений реального времени. Вот несколько способов выучить JavaScript.

Тем не менее, каждая компания имеет немного разные настройки. Хорошая новость заключается в том, что в большинстве описаний вакансий бэкенд-разработчика говорится что-то вроде «Опыт работы с языками программирования, такими как Ruby» (выделено мной).

Пока вы знаете, как работают внутренние языки, и вы использовали один или два из них, все будет готово. Вы, очевидно, захотите найти работу для тех языков, которые знаете лучше всего.

Базы данных

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

Существует две основные категории баз данных: SQL и его зеркальное отображение, noSQL.

SQL

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

Большинство традиционных баз данных SQL подходят для вертикального масштабирования. Эти базы данных обычно увеличиваются в размерах за счет добавления к ним большего количества оборудования.

Во многих описаниях вакансий также будет указано, что вы знакомы с наиболее популярными серверными базами данных SQL, такими как PostgreSQL, SQLite и MySQL.

Я рассмотрел их в предыдущей статье, поэтому я резюмирую основные из них здесь:

  • PostgreSQL: основная база данных для производства и операций с большими объемами данных. Помимо хранения данных, вы можете определять типы данных, типы индексов и функциональные языки. Очень настраиваемый.
  • SQLite: легче настроить и запустить, но поддерживает только некоторые типы данных, а не все. Не супермасштабируемый и не оптимизированный по производительности. Лучше всего для начинающих или прототипирования.
  • MySQL: самый стандартный и популярный из вариантов, хотя PostgreSQL обгоняет его по популярности, так как мало что может сделать, что Postgres не может сделать лучше.

Есть несколько других — MariaDB становится все более популярной в качестве еще одной замены MySQL с течением времени, Oracle — это корпоративный вариант, который используют многие крупные компании, а Microsoft SQL Server обычно используется для .NET, на базе Windows. проекты.

NoSQL

Что произойдет, если ваши данные менее структурированы, например, тексты, фотографии, видео или PDF-файлы? Введите NoSQL. В моей технической статье Я описываю базу данных NoSQL как нетабличную базу данных, которая использует разные модели данных для хранения, управления и доступа к данным. Это может быть ориентированный на документ, ключ-значение, график, широкий столбец или что-то еще.

Эти базы данных часто (но не всегда) масштабируются горизонтально, а не вертикально. И хотя все базы данных SQL конкурируют друг с другом, потому что они довольно похожи, базы данных NoSQL обычно более оптимизированы для определенных вещей, которые вы не получаете от базы данных SQL.

Давайте рассмотрим некоторые из них, которые вы можете увидеть в описании работы бэкенд-разработчика:

  • MongoDB: Самая популярная база данных NoSQL согласно опросу StackOverflow. Это позволяет вам запрашивать документы по одному или нескольким ключам, диапазонам или текстам поиска. У него более свободная структура, больше похожая на документы в формате JSON.
  • Redis: вы можете запрашивать его только через доступ к первичному ключу, что означает, что у него более ограниченная функциональность запросов. Преимущество его использования заключается в том, что Redis использует значение хранилища ключей в памяти, поэтому данные хранятся в оперативной памяти хоста, а не на столе. Это делает его очень быстрым, но вы также должны ограничить размер набора данных.
  • Elasticsearch: используется в основном для поиска и анализа журналов.

Фреймворки

Фреймворки часто используются, но это действительно зависит от рассматриваемого языка. Например, Go немного уникален тем, что многие разработчики вообще не используют фреймворк при написании серверных сервисов на Go. Однако в Python распространены Django и Flask.

Как и в случае с любым решением plug-and-play, я скажу, что не рекомендую начинать с фреймворков, если вы впервые изучаете язык. Это может дать вам ложное чувство уверенности. Фреймворк может помочь вам запустить что-то за несколько дней, но вы не будете иметь ни малейшего представления о том, что происходит под капотом.

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

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

В мире без серверных фреймворков вам пришлось бы писать код для извлечения статей из базы данных, форматирования их для отображения и обработки входящих запросов на список статей.

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

Таким образом, в каждом описании работы бэкенд-разработчика вы увидите такие вещи, как:

  • Джанго или Flask для Python
  • Ruby on Rails для Ruby
  • Экспресс для Node.js (JavaScript)

Это будет зависеть от того, на каком языке в первую очередь требуется описание работы, но, как и в случае с языками, большинство работодателей будут рады, если вы немного знакомы с некоторыми серверными фреймворками.

Разработка API и RESTful дизайн 🔗

API-интерфейсы являются критически важным компонентом любой должностной инструкции бэкенд-разработчика. С их помощью бэкенд-разработчики создают масштабируемые и надежные веб-сервисы, которыми могут пользоваться миллионы клиентов. («Масштабируемый» и «надежный» — любимые слова бэкенд-разработчика. «Миллионы клиентов» — любимая фраза их работодателя.)

API или интерфейс прикладного программирования — это интерфейс, который позволяет различным программным системам взаимодействовать друг с другом.

REST означает передачу репрезентативного состояния. Это набор архитектурных ограничений. REST (или RESTful) API — это API, построенный таким образом, который соответствует архитектурному стилю REST, чтобы он мог взаимодействовать с другими веб-службами RESTful.

Как вы можете себе представить, эти два навыка являются ключевыми для любого бэкенд-разработчика.

Развертывание, управление сервером и DevOps 🔗

Долгое время «разработка» и «эксплуатация» были отдельными процессами. Затем, примерно в 2007 году, ИТ-операторы и сообщества разработчиков программного обеспечения начали говорить: «Эй, разве одна рука не должна знать, что делает другая? Не приближаемся ли мы к катастрофе, потому что наши цели конкурируют? Может быть, пришло время завести ребенка и назвать его DevOps?»

(У Atlassian есть статья о захватывающей истории возникновения DevOps, если вам интересно узнать больше об этом довольно радикальном изменении в том, как работали компании в сфере разработки/операций.)

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

Как back-end разработчик, вы должны будете сделать веб-приложения или API доступными для пользователей. Это процесс развертывания.

Для этого вам необходимо быть знакомым с облачными платформами, такими как Google Cloud, AWS или Azure. Вам также потребуется владение технологиями виртуализации, такими как Docker и Kubernetes. Наконец, вам может понадобиться знакомство с программным обеспечением веб-сервера, таким как Nginx или Apache. Как и во всем остальном, вам не нужно быть экспертом во всех этих технологиях, но вы должны быть знакомы хотя бы с парой из них.

Также может наступить день, когда рабочие роли DevOps и back-end разработчика слились воедино!

Обязанности

Что все эти навыки и технологии бэкэнд-разработчика позволяют вам делать? Они позволяют вам выполнять очень важные обязанности бэкенд-разработчика. Хотя они различаются от одной должностной инструкции к другой, в основном они соответствуют нескольким общим обязанностям.

Проектировать и внедрять серверные системы и архитектуру 🔗

Разработчики серверной части отвечают за разработку и реализацию архитектуры серверных систем, поддерживающих веб-приложение.

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

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

Интеграция front-end и back-end систем 🔗

Back-end разработчики также обеспечивают доступность данных и функций, предоставляемых back-end системами, для front-end систем и наоборот, чтобы обеспечить бесперебойную работу пользователей.

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

Управление базами данных и решениями для хранения данных 🔗

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

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

Разрабатывать API и сервисы для поддержки интерфейсных приложений 🔗

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

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

Оптимизируйте серверные системы для повышения производительности и масштабируемости 🔗

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

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

Реализация мер безопасности для защиты данных и систем 🔗

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

Мягкие навыки, которые вы бы увидели в описании работы бэкенд-разработчика 🔗

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

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

Давайте разберем несколько наиболее распространенных навыков межличностного общения, которые вы найдете в описании работы бэкенд-разработчика:

Решение проблем и критическое мышление 🔗

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

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

Сильные навыки общения и сотрудничества 🔗

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

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

Гибкость и адаптивность к изменяющимся требованиям и технологиям 🔗

Помните, как я говорил, что все эти технологии и языки бэкэнд-разработчика можно изменять? Джобс может не ожидать, что вы будете знать все языки программирования на планете, но он будет ожидать, что вы будете использовать их по мере необходимости.

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

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

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

Например, представьте, что вы работаете в медицинской компании и разрабатываете новую базу данных. Вам придется поговорить с практикующими врачами, которые разговаривают с пациентами, чтобы убедиться, что база данных, которую вы создаете, доступна и отвечает их потребностям. Если вы начнете говорить об API и логике на стороне сервера, они будут кричать.

Вам нужно уметь объяснять сложные понятия простыми словами.

Что вы можете ожидать найти в описании работы бэкенд-разработчика? 🔗

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

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

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

Изучите бэкенд, не тратя 10 000 долларов

  • Пишите современный код на JavaScript, Python и Go
  • Создавайте и развертывайте реальные серверные проекты в своем личном портфолио
  • Конкурировать на рынке труда, освоив основы компьютерных наук

Нашли проблему в этой статье?

Сообщить о проблеме на GitHub

Первоначально опубликовано на https://blog.boot.dev 10 февраля 2023 г.