«Бэкенд — это просто! Выгрузить данные в нужном формате из одной системы и загрузить в другую. И так почти на каждом проекте!», — заявил недавно мой коллега Сергей, старший Python-разработчик. Я решил спросить у бэкендеров в нашей компании, с какими задачами они сталкиваются, какими hard и soft skills должны обладать мидлы в бэкенд-разработке.
«90% задач — это работа с базами данных»
Сергей
Старший разработчик Python
Типовые задачи
Делать обработку данных, которые заполнил пользователь.В работе с базами данных используют четыре основные функции — CRUD: create (создание), read (чтение), update (редактирование), delete (удаление).
Взаимодействовать с другими системами. Например, прикрутить систему оплаты.
Мы пишем API, с ним взаимодействует клиент. Либо мы взаимодействуем с помощью API между собой, если это микросервисная архитектура. Как правило, у нас не одна база: есть база очередей, база Redis. Мы заходим в базу, берем оттуда данные, возвращаем либо куда-то отправляем, отдаем клиенту.
Опыт Сергея: работал тимлидом, разрабатывал бот, настраивал обработку заявок в банке
Hard и soft skills мидла в бэкенд-разработке
Hard skills
Знать базу, связанную с разработкой конкретной ниши, иметь опыт работы на разных проектах. Но это возможно только в аутсорсинговой компании. Рекомендую хотя бы пару лет поработать в этом формате, получить навыки, понять причины технических проблем.
-
Уметь писать чистый код и создавать чистую архитектуру.О концепции чистого кода писал Роберт Мартин в книге «Чистый код» и Стив Макконнелл в книге «Совершенный код». Чистый код — это код, который легко читать, понимать и поддерживать. Он улучшает качество продукта и упрощает работу команды разработчиков.
В последнее время замечаю, что эту концепцию критикуют за увеличение времени разработки и чрезмерное внимание к разным формальностям, что может отвлекать от реальных бизнес-целей. Иногда принципы чистого кода могут ухудшить производительность приложений и добавить ненужную сложность коду.
Но я считаю, что знать принципы чистого кода нужно каждому разработчику. Это важно не только для общего развития, но и для того, чтобы говорить с коллегами на одном языке и понимать, когда можно и нужно отойти от этих принципов ради более важных приоритетов. Ведь команда разработки работает в первую очередь для бизнеса.
Soft skills
Самое важное — это soft skills. Мидл-разработчик должен не бояться разговаривать с коллегами, принимать конструктивную критику.
Что почитать
Адитья Бхаргава «Грокаем алгоритмы. Руководство. Иллюстрированное пособие для программистов и любопытствующих».
Аллен Бенджамин Дауни «Основы Python. Научитесь думать как программист».
Дэвид Бизли «Python. Исчерпывающее руководство».
Читайте книги. Если не читается, то смотрите видео. Если не смотрится, то задумайтесь, надо ли вам это?
«Стандартная задача — написание endpoint для веб-сервисов»
Андрей
Разработчик Python
Типовые задачи
Частая задача — написание endpoint для веб-сервисов. Это относится к обработке данных: получить данные, что-то с ними сделать, сохранить базу, извлечь что-то из базы и отдать обратно клиенту.
Опыт Андрея: работал с данными ЦИК, разрабатывал систему расчета стоимости квартир
-
ЦИК
Работал на двух проектах, связанных с ЦИК. На одном из них скачивал данные о кандидатах с сайта центральной избирательной комиссии. Клиенты занимались проведением избирательных кампаний для кандидатов на разных уровнях. Они обратились с такой задачей, потому что на сайте избирательной комиссии не было поиска по фамилии, хотя запрос тривиальный. В качестве рекламы клиенты хотели запустить сервис — удобный инструмент для работы с кандидатами.На втором проекте скачивал данные о составе избирательных комиссий и сохранял в нашу базу в удобном для нас формате, дальше работал со скаченными данными.
Система расчета стоимости квартир
Проект по расчету стоимости квартир был несложным. Аналитики определили формулу. Разработчикам нужно было извлечь из базы данные по высоте квартиры, выгрузить данные по количеству детских садов в районе, автобусных остановок, дорожных развязок с онлайн-карт и рассчитать по формуле.
Сначала мы сводили данные в базу, потом делали по ним расчет. Затем расчет трассировали. Формулы были простыми, но их было много. Код был понятный, но нужно было аккуратно скомпоновать много мелочей.Другие проекты
Занимался поддержкой интернет-магазина. Еще разрабатывал систему для гостиниц: администраторы заводили в ней бронь, отмечали обеды, оплаты, формировали отчеты для МВД.
Hard и soft skills мидла в бэкенд-разработке
Hard skills
Знать SQL, чтобы от зубов отскакивал. Нет проектов, которые с ним не взаимодействуют.
Знать ORM-библиотеки, которые позволяют взаимодействовать с SQL.
Знать стек, как приходят веб-запросы, что происходит под капотом.
Soft skills
Из софтов: нужно уметь разбираться в чужом коде. От мидлов требуют больше самостоятельности. Так вы расширите опыт, узнаете новые программы, будете задавать меньше вопросов.
Что почитать
Эрих Гамма, Ричард Хелм, Ральф Джонсон, Джон Влиссидес «Шаблоны проектирования».
Мартин Фаулер «Шаблоны корпоративных приложений».
Стив Макконнелл «Совершенный код».
Энди Орам, Грег Уилсон «Идеальный код».
Роберт Мартин «Чистый код».
Егор Бугаенко «Элегантные объекты».
«Типовые задачи: работа с REST-сервисами, схемы SQL, работа с внешними сервисами»
Георгий
Разработчик Java
Типовые задачи
Работать с REST-сервисами.
Работать с безопасностью, аутентификацией, авторизацией пользователей.
Создавать схемы SQL: писать сложные запросы с Join, HAVING и прочими. Это позволяет приложению быстрее реагировать на запросы пользователей.
Уметь работать с внешними сервисами, с микросервисами. Например, интегрировать в свое приложение платежные системы. Это тоже актуальный навык.
Уметь работать с данными от пользователя.
Опыт Георгия: госпроекты, корпоративные проекты, кредиты пользователей, наставничество
Начинал с госпроектов: казначейство, минфин, электронный документооборот. Первый проект был связан с универсальной системой документооборота. Я выполнял задачи по жизненному циклу документов и исправлению багов.
Перешёл на корпоративные проекты: продажи продуктов, работу с продуктами, работу с пользователями, полноценные REST-приложения, JSON, Spring Boot.
Работал на проекте с кредитами пользователей. Занимался системой расчета долговой нагрузки.
Выполнял роль наставника. Помогал новым разработчикам на моем проекте: показывал, как и с чем взаимодействовать, как «дебажить», где логи и метрики.
Hard и soft skills мидла в бэкенд-разработке
Hard skills
Нужно в совершенстве знать свой язык, владеть синтаксисом.
Уметь работать с базами данных, реляционными, нереляционными.
Уметь работать с безопасностью, знать, как настраивать аутентификацию и авторизацию.
Проводить оценку задач и разбивать задачи на подзадачи.
Проводить интеграционные и модульные тесты. Да, мы не тестировщики, а программисты, но знать модульные и интеграционные тесты важно. На собеседовании это один из основных вопросов.
Soft skills
Уметь работать в команде. Например, когда разработчики говорят, что нужно поменять технологию, потому что она будет быстрее, ты должен это принять. Если проводится код ревью, нужно признать свои ошибки. Не должно быть такого: «Я все знаю сам, вы неправильно меня ревьюите». Самое важное — слушать членов команды, даже джунов.
Уметь правильно и вовремя задавать вопросы по задачам, чтобы потом не переделывать по несколько раз.
Быть вежливым, спокойным.
Бывает, что дают задачу, а потом говорят: «Ой, она, оказывается, не нужна». Твоя работа, над которой ты три дня сидел, уходит в мусорку. Это просто нужно воспринимать как опыт.
Что почитать
Я начинал изучать разработку с чтения книг.
Роберт Мартин «Чистый код: создание, анализ и рефакторинг».
«Паттерны проектирования».
В Ютубе много информации и для новичков, и для продвинутых. Также я проходил онлайн-курсы. Хороших и качественных курсов мало, но мне повезло найти такие, задачи на курсах были максимально приближены к рабочим. После каждого модуля, задачи, проекта было настоящее собеседование по всем пройденным темам.
«Частая задача — работа с данными: сохранить, извлечь, удалить, оптимизировать запросы»
Роман
Разработчик 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».
В этих книгах приводятся основные термины, которые чаще всего используются в работе.
Как вы считаете, какие задачи чаще всего решают мидлы в бэкенд-разработке?