Что должен уметь мидл бэкенд-разработчик

«Бэкенд — это просто! Выгрузить данные в нужном формате из одной системы и загрузить в другую. И так почти на каждом проекте!», — заявил недавно мой коллега Сергей, старший Python-разработчик. Я решил спросить у бэкендеров в нашей компании, с какими задачами они сталкиваются, какими hard и soft skills должны обладать мидлы в бэкенд-разработке.

6f797bb2841d88ae5a2258225c576a39.png

»90% задач — это работа с базами данных»

7aa53230e4c127e66549ea251f681208.jpgСергей

Старший разработчик Python

Типовые задачи

  • Делать обработку данных, которые заполнил пользователь.В работе с базами данных используют четыре основные функции — CRUD: create (создание), read (чтение), update (редактирование), delete (удаление).

  • Взаимодействовать с другими системами. Например, прикрутить систему оплаты.
    Мы пишем API, с ним взаимодействует клиент. Либо мы взаимодействуем с помощью API между собой, если это микросервисная архитектура. Как правило, у нас не одна база: есть база очередей, база Redis. Мы заходим в базу, берем оттуда данные, возвращаем либо куда-то отправляем, отдаем клиенту.

Опыт Сергея: работал тимлидом, разрабатывал бот, настраивал обработку заявок в банке

Hard и soft skills мидла в бэкенд-разработке

Hard skills

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

  • Уметь писать чистый код и создавать чистую архитектуру.О концепции чистого кода писал Роберт Мартин в книге «Чистый код» и Стив Макконнелл в книге «Совершенный код». Чистый код — это код, который легко читать, понимать и поддерживать. Он улучшает качество продукта и упрощает работу команды разработчиков.

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

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

Soft skills

Самое важное — это soft skills. Мидл-разработчик должен не бояться разговаривать с коллегами, принимать конструктивную критику.

Что почитать

  • Адитья Бхаргава «Грокаем алгоритмы. Руководство. Иллюстрированное пособие для программистов и любопытствующих».

  • Аллен Бенджамин Дауни «Основы Python. Научитесь думать как программист».

  • Дэвид Бизли «Python. Исчерпывающее руководство».

Читайте книги. Если не читается, то смотрите видео. Если не смотрится, то задумайтесь, надо ли вам это?

3efe546c834e85882e6bd1572ca746d7.png

«Стандартная задача — написание endpoint для веб-сервисов»

c6b5f7586d0a2469012ee5ee6f1ed951.jpegАндрей

Разработчик Python

Типовые задачи

Частая задача — написание endpoint для веб-сервисов. Это относится к обработке данных: получить данные, что-то с ними сделать, сохранить базу, извлечь что-то из базы и отдать обратно клиенту.

Опыт Андрея: работал с данными ЦИК, разрабатывал систему расчета стоимости квартир

  • ЦИК
    Работал на двух проектах, связанных с ЦИК. На одном из них скачивал данные о кандидатах с сайта центральной избирательной комиссии. Клиенты занимались проведением избирательных кампаний для кандидатов на разных уровнях. Они обратились с такой задачей, потому что на сайте избирательной комиссии не было поиска по фамилии, хотя запрос тривиальный. В качестве рекламы клиенты хотели запустить сервис — удобный инструмент для работы с кандидатами.

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

  • Система расчета стоимости квартир
    Проект по расчету стоимости квартир был несложным. Аналитики определили формулу. Разработчикам нужно было извлечь из базы данные по высоте квартиры, выгрузить данные по количеству детских садов в районе, автобусных остановок, дорожных развязок с онлайн-карт и рассчитать по формуле.

    Сначала мы сводили данные в базу, потом делали по ним расчет. Затем расчет трассировали. Формулы были простыми, но их было много. Код был понятный, но нужно было аккуратно скомпоновать много мелочей.

  • Другие проекты
    Занимался поддержкой интернет-магазина. Еще разрабатывал систему для гостиниц: администраторы заводили в ней бронь, отмечали обеды, оплаты, формировали отчеты для МВД.

Hard и soft skills мидла в бэкенд-разработке

Hard skills

  • Знать SQL, чтобы от зубов отскакивал. Нет проектов, которые с ним не взаимодействуют.

  • Знать ORM-библиотеки, которые позволяют взаимодействовать с SQL.

  • Знать стек, как приходят веб-запросы, что происходит под капотом.

Soft skills

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

Что почитать

  • Эрих Гамма, Ричард Хелм, Ральф Джонсон, Джон Влиссидес «Шаблоны проектирования».

  • Мартин Фаулер «Шаблоны корпоративных приложений».

  • Стив Макконнелл «Совершенный код».

  • Энди Орам, Грег Уилсон «Идеальный код».

  • Роберт Мартин «Чистый код».

  • Егор Бугаенко «Элегантные объекты».

125010fe7ce79d22e67ae4976c78fea6.png

«Типовые задачи: работа с REST-сервисами, схемы SQL, работа с внешними сервисами»

7b5005033e5e32fb1a901d0b91b6690b.jpgГеоргий

Разработчик Java

Типовые задачи

  • Работать с REST-сервисами.

  • Работать с безопасностью, аутентификацией, авторизацией пользователей.

  • Создавать схемы SQL: писать сложные запросы с Join, HAVING и прочими. Это позволяет приложению быстрее реагировать на запросы пользователей.

  • Уметь работать с внешними сервисами, с микросервисами. Например, интегрировать в свое приложение платежные системы. Это тоже актуальный навык.

  • Уметь работать с данными от пользователя.

Опыт Георгия: госпроекты, корпоративные проекты, кредиты пользователей, наставничество

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

  • Перешёл на корпоративные проекты: продажи продуктов, работу с продуктами, работу с пользователями, полноценные REST-приложения, JSON, Spring Boot.

  • Работал на проекте с кредитами пользователей. Занимался системой расчета долговой нагрузки.

  • Выполнял роль наставника. Помогал новым разработчикам на моем проекте: показывал, как и с чем взаимодействовать, как «дебажить», где логи и метрики.

Hard и soft skills мидла в бэкенд-разработке

Hard skills

  • Нужно в совершенстве знать свой язык, владеть синтаксисом.

  • Уметь работать с базами данных, реляционными, нереляционными.

  • Уметь работать с безопасностью, знать, как настраивать аутентификацию и авторизацию.

  • Проводить оценку задач и разбивать задачи на подзадачи.

  • Проводить интеграционные и модульные тесты. Да, мы не тестировщики, а программисты, но знать модульные и интеграционные тесты важно. На собеседовании это один из основных вопросов.

Soft skills

  • Уметь работать в команде. Например, когда разработчики говорят, что нужно поменять технологию, потому что она будет быстрее, ты должен это принять. Если проводится код ревью, нужно признать свои ошибки. Не должно быть такого: «Я все знаю сам, вы неправильно меня ревьюите». Самое важное — слушать членов команды, даже джунов.

  • Уметь правильно и вовремя задавать вопросы по задачам, чтобы потом не переделывать по несколько раз.

  • Быть вежливым, спокойным.
    Бывает, что дают задачу, а потом говорят: «Ой, она, оказывается, не нужна». Твоя работа, над которой ты три дня сидел, уходит в мусорку. Это просто нужно воспринимать как опыт.

Что почитать

Я начинал изучать разработку с чтения книг.

  • Роберт Мартин «Чистый код: создание, анализ и рефакторинг».

  • «Паттерны проектирования».

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

911c2d48290bd024f380062b21aec08d.jpg

«Частая задача — работа с данными: сохранить, извлечь, удалить, оптимизировать запросы»

4b1c5143f837557b4b5204f8922f8022.jpgРоман

Разработчик Java

Типовые задачи бэкенда

Нужно хорошо понимать чужой код, архитектурные решения, лежащие за этим кодом.

Сложно выделить типовые задачи, потому что у каждого проекта своя специфика. Один проект про телекоммуникации, другой про бизнес-процессы. Базы данных на каждом проекте разные: в одном новый NoSQL, в другом PostgreSQL, в третьем MSSQL или Oracle.

Hard и soft skills мидла бэкендера

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

  • Мидлу нужно передавать свой опыт другим, быть ментором.

  • Начинать включаться в процессы проектирования.

  • Очень важно быть терпеливым.

  • Нужно постоянно развивать себя.

Опыт ​Романа: был тимлидом, внедрял third-party,  single sign-on

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

На другом проекте занимался внедрением third party в продукт.

Был опыт, когда внедрял single sign-on для большого софта, который был написан на трёх языках С++, Java и JavaScript — достаточно сложно было. Это были микросервисы.

Hard и soft skills мидла бэкендера

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

  • Мидлу нужно передавать свой опыт другим, быть ментором.

  • Начинать включаться в процессы проектирования.

  • Очень важно быть терпеливым.

  • Нужно постоянно развивать себя.

Что почитать

  • Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides «Design Patterns: Elements of Reusable Object-Oriented Software».

  • Martin Fowler «Refactoring».

  • Martin Fowler «Enterprise Patterns».

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

bbe2512723d1f3093ee5d8896da82936.png

Как вы считаете, какие задачи чаще всего решают мидлы в бэкенд-разработке?

© Habrahabr.ru