Лучший стек для питониста-джуна 2024 (2 часть)

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

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

ВАЖНО: Перед прочтением данной статьи рекомендую ознакомиться с моей старой, чтобы иметь понимание о некоторых технологиях.

Старый, добрый Django

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

abfbe36be43231a20c9e22ea056208a8.png

Итак, что же поменялось за чуточку больше чем полгода? Если мы будем говорить об актуальности — ничего. Django до сих пор, а скорее всего так будет и всегда, остается «на плаву». Большая часть вакансий для back-end разработчика на Python имеет в себе требования по знаниям Django. Говорить вечно о том, что он удобен, постоянно поддерживаем, дает довольно обширный функционал и так далее — бессмысленно. Все основные моменты я упомянул в первой части.

Ладно, вступление в сторону! Лучше обсудить то, что изменилось с Django за это время.

Самое грандиозное из этого — выход Django 5! По сути скачок на пятую версию не принес в фреймворк особо крупных изменений, но парочку моментов хочу подчеркнуть. Первое и самое важное, на мой взгляд, это то, что разработчики решили добавить больше асинхронности без подключения таск-менеджеров. Для этого они добавили несколько декораторов и методов. Хотя это немного, на мой взгляд, противоречит самому принципу работы Django (напоминаю: Django синхронный фреймворк и для того, чтобы сделать очередь задач, нужно подключать таск-менеджеры, например, Celery), но тем не менее, это все равно крутой шаг в эволюцию. Надеюсь, что разработчики и дальше будут двигаться в этом направлении.

Далее, не могу не упомянуть очень важный момент — совместимость с Python. Django 5 будет работать только с версиями Python 3.10 и выше. Django 4.2.x — последняя версия, которая работает с Python 3.8 и 3.9.

Остальное я могу отнести в одну кучу: добавление фасетных фильтров в админке, упрощение шаблонов для отрисовки полей формы, прикольная, на мой взгляд, функция для значений по умолчанию, вычисленных базой данных, и еще пару «приколюх» с БД. Все остальное и более подробно вы сможете почитать в официальной документации. Я же не буду все разжевывать, так как отойду от темы статьи.

Также, хочу отметить важный момент, с которым столкнулся лично я. Django 5 не поддерживает django-celery-beat==2.5.0, что является не очень хорошим знаком к переносу вашего проекта, где используется Celery. Я сам попался на эту ошибку, когда решил перенести свой проект с Django 4.2.6 на 5 версию, но не смог даже поднять проект. Возможно, уже это исправили, но на момент написания статьи — ошибка присутствует.

Подытоживая, я до сих пор считаю Django лучшим выбором для входа в back-end разработку на Python для новичков (и не только). Фреймворк давно устоялся и показывает себя с каждым годом все лучше и лучше. Простота в изучении и удобство в использовании дадут вам хороший результат в работе.

Django REST Framework

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

f0aa5e573273ea4808da7912d014a603.jpg

Django REST Framework, он же DRF, до сих пор вместе с «голым Django» остаются в одной лодке. Редко можно встретить вакансии, где просят просто знания Django без REST. Это потому, что все современные веб-сервисы строятся на API, а для его написания по любому понадобится REST Framework.

Таких сильных изменений, как с Django, не случилось. До сих пор DRF поддерживает все версии Python, начиная с 3.6, и работает с Django версии 3.0 и выше. Кстати, DRF еще даже не заточили под Django 5, хотя там особо и не под что его изменять. DRF все также необходим для любого джуна. Библиотека довольно простая и имеет хорошую настраиваемую архитектуру, которая позволит быстро и удобно «клепать» как простые, так и более сложные API. Есть большое комьюнити и огромное количество туториалов даже в самой документации DRF.

PostgreSQL + SQLite3

Говорить о том, что любому back-end разработчику нужно иметь понимание о БД и зачем она нужна — это очевидно. Но я все же скажу:)

694ff621a58b424b4a9b0c220feacbc9.png42049e4a04ee4247d0c5515390e7bba0.png

Все мы знаем, что любые данные хранятся в БД, и все манипуляции с ними требуют особого внимания и навыков. Конечно, работая с Django и DRF, вы не будете писать нативные SQL-запросы, так как у нас есть ORM. Но все же важно понимать, что такое БД, как она устроена, основные принципы и типы хранения данных.

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

В прошлой статье я говорил только о PostgreSQL, но одним предложением упомянул SQLite. В этот раз я решил рассказать и о нем. SQLite вам понадобится в любом случае, так как при миграциях Django автоматически создает базу данных SQLite. Да, вы можете указать путь до другой базы данных в настройках проекта. Однако, особенно на учебных проектах, при разделении БД лучше использовать PostgreSQL для продакшн-среды, а для локальной разработки поднимать SQLite3. Таким образом, вы получите опыт в разделении данных и сможете сравнить отличия между pgAdmin и SQLite.

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

Docker и Docker-Compose

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

30749e50116804717c7bd578e65d85f6.png

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

Docker:

  1. платформа для контейнеризации приложений

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

  3. подходит для упаковки и развертывания отдельных приложений в контейнерах

Kubernetes

  1. система управления контейнерами

  2. автоматизирует развертывание, масштабирование и управление приложениями в контейнерах

  3. обеспечивает автоматическое восстановление, самообслуживание, масштабирование и балансировку нагрузки

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

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

Git

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

49f17e21651afe825cd91ea79f37d430.png

В этой цитате все указано верно — для успешной карьеры в разработке необходимо освоить знания в области Git и облачных платформ. Этот навык важен не только для разработчиков Python, но и для всех разработчиков в целом. Git — отличный выбор, так как он относительно легок в освоении и не требует больших усилий и затрат времени. Основы можно освоить в короткие сроки. Приятным бонусом будет возможность практиковаться на собственных проектах и делиться ими в GitHub или других рабочих средах (GitLab, BitBucket и другие).

JavaScript, HTML и CSS

a154f85bacc57aefd1565004a092acf8.jpeg

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

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

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

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

Redis + Celery

Вот это уже что-то новенькое:)

2364cb547eb64bbfc45871d21baf5abb.png

Здесь более подробно опишу, что это за ребята и зачем они нужны. Давайте разбираться who есть who.

Redis — это мощная система управления базами данных, которая предназначена для хранения данных в формате ключ-значение. Она часто используется вместе с проектами Django, чтобы кэшировать данные, ускорить доступ к ним и улучшить производительность приложений.

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

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

Возможно, многие скажут: ту матч требовать от джуна Celery и Redis. Скорее всего, это так, не всегда можно увидеть вакансии с этими технологиями.  Но на одно место может претендовать более 200 кандидатов-джунов как вы. Как же выделиться из этой толпы и превзойти конкурентов? Правильно! Предложите работодателю больше, чем остальные, покажите, что вы обладаете большими навыками и умениями. К тому же, рынок технологий очень прожорливый, и я уверен, что через полгода-год, Celery и Redis станут стандартными компонентами разработки.

Итоги

Знаю, в этот список можно добавить множество других технологий и требований, таких как ООП, принципы разработки, архитектура API и принципы работы с веб-приложениями. Однако, мы говорили конкретно о технологиях для backend-разработки. Если вы не знакомы с основами ООП, возникает вопрос: что вы вообще будете делать в backend-разработке, если еще не освоили фундаментальные принципы?

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

Требуется ли такой стек технологий? Ответ — да! Безусловно, вы можете заменить Django на любой другой фреймворк. Однако, я считаю, что Django остается наиболее востребованным, простым в изучении и мощным фреймворком. Естественно, у него есть свои недостатки, ведь никто не застрахован от них, но это не мешает Django оставаться «царем горы». Вы, конечно же, можете не изучать Docker, Redis, Celery и какой-нибудь JS, но почему бы не получить дополнительные преимущества?

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

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

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

© Habrahabr.ru