Как стать автором
Обновить

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

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров29K

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

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

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

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

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

Итак, что же поменялось за чуточку больше чем полгода? Если мы будем говорить об актуальности - ничего. 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

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

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 разработчику нужно иметь понимание о БД и зачем она нужна - это очевидно. Но я все же скажу:)

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

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

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

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

Docker и Docker-Compose

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

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

Docker:

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

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

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

Kubernetes

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

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

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

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

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

Git

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

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

JavaScript, HTML и CSS

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

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

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

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

Redis + Celery

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

Здесь более подробно опишу, что это за ребята и зачем они нужны. Давайте разбираться 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.

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

Теги:
Хабы:
Если эта публикация вас вдохновила и вы хотите поддержать автора — не стесняйтесь нажать на кнопку
Всего голосов 10: ↑9 и ↓1+8
Комментарии22

Публикации

Работа

Data Scientist
39 вакансий

Ближайшие события