«Бэкенд — это просто! Выгрузить данные в нужном формате из одной системы и загрузить в другую. И так почти на каждом проекте!», — заявил недавно мой коллега Сергей, старший 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».
В этих книгах приводятся основные термины, которые чаще всего используются в работе.
Как вы считаете, какие задачи чаще всего решают мидлы в бэкенд-разработке?
ссылка на оригинал статьи https://habr.com/ru/articles/835644/
Добавить комментарий