Наталья Кайда 05 сентября 2023

🐍 Дорожная карта Python-разработчика в 2023 году

Расскажем, что и в какой последовательности нужно изучить, чтобы стать Python-джуном и найти первую работу.
12
🐍 Дорожная карта Python-разработчика в 2023 году

Популярность Python растет из года в год, а экосистема языка непрерывно расширяется: арсенал разработчиков постоянно пополняется новыми инструментами, которые дают возможность написать почти любое приложение. Python отлично зарекомендовал себя в веб-разработке, и это закономерно:

  • Фреймворки на основе Python отличаются впечатляющими возможностями, функциональностью и гибкостью. На базе Flask и Django, к примеру, можно создать фуллстек-проект, гибридное приложение, API или микросервис.
  • Веб-приложения на базе Python легко масштабируются и интегрируются с компонентами и сервисами, написанными на других языках.
  • Широкий выбор дополнительных плагинов и модулей для Python-фреймворков позволяет быстро разрабатывать веб-приложения любой направленности и степени сложности.
  • Нетривиальные решения для веб-разработки на базе Python появляются с завидной частотой, а проверенные временем фреймворки и модули – регулярно обновляются и совершенствуются.

Благодаря этим преимуществам Python основательно потеснил прежнего лидера в сфере веб-разработки – PHP. Если в 2023 году перед вами стоит выбор – с какого языка начать путь веб-разработчика, – выбирайте Python, не пожалеете. А мы предоставим пошаговую стратегию изучения Python, которая поможет освоить все аспекты веб-разработки.

🐍🎓 Библиотека собеса по Python
Подтянуть свои знания по Python вы можете на нашем телеграм-канале «Библиотека собеса по Python»
🐍🧩 Библиотека задач по Python
Интересные задачи по Python для практики можно найти на нашем телеграм-канале «Библиотека задач по Python»

Первый этап: изучаем основы Python

Основы Python
Основы Python

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

  • В особенностях основных типах данных – списков, строк, словарей, кортежей и множеств. К примеру, кортежи работают быстрее списков, а множества – быстрее всех остальных типов, вместе взятых, но при этом используют внушительный объем памяти и не поддерживают индексацию.
  • Во встроенных методах, которые Python предоставляет для работы с каждым из этих типов, и в универсальных встроенных функциях. Некоторые функции позволяют лаконично и эффективно выполнять достаточно сложные операции – например, проводить параллельную итерацию нескольких коллекций сразу (zip), или получать доступ к элементу и его индексу одновременно (enumerate), либо применять какое-то действие ко всем элементам сразу (map).
  • В методах работы с файлами и файловой системой.

Кроме того, необходимо освоить написание пользовательских функций:

  • обычных и вложенных, с фиксированным и произвольным количеством аргументов;
  • декораторов и замыканий;
  • анонимных (lambda);
  • рекурсивных.

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

Что еще нужно изучить:

  • Как запускать Python-код в онлайн-IDE, не требующих установки – Jupyter Notebooks, Google Colab, Repl.it.
  • Как установить и настроить десктопную IDE – PyCharm, VS Code.
  • Как устанавливать модули, необходимые для решения специфических задач – pandas, numpy и т.п.

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

🐍 Библиотека питониста
Больше полезных материалов вы найдете на нашем телеграм-канале «Библиотека питониста»

Второй этап: ООП и основы работы с веб-сервисами

ООП и основы работы с веб-сервисами
ООП и основы работы с веб-сервисами

Пора зарегистрировать аккаунт на GitHub, разобраться в концепции системы контроля версий и изучить основные команды Git. Хотя GitHub – не единственный хостинг IT-проектов, его с уверенностью можно назвать самым популярным. Один из плюсов сервиса – бесплатный хостинг для статических сайтов GitHub Pages, где можно разместить любой проект объемом до 1 Гб. Многие разработчики используют GitHub Pages для размещения портфолио, резюме и статических блогов, созданных с помощью Jekyll, Hugo, или генераторов на основе Python – Pelican и Lektor.

Чтобы в репозиториях на GitHub поскорее появились первые серьезные проекты, необходимо вникнуть в парадигму объектно-ориентированного программирования и его основные концепции:

  • классы;
  • объекты;
  • наследование;
  • инкапсуляцию;
  • полиморфизм.

Кроме того, на этом этапе нужно изучить:

  • Обработку HTTP-запросов с помощью библиотеки request.
  • Получение данных от публичных API.
  • Форматы JSON и XML.
  • Регулярные выражения (Regex).
  • Основы веб-скрапинга и парсинга с BeautifulSoup и XPATH.

Знаний, полученных на этом этапе, должно быть достаточно, чтобы написать:

  • код для поиска и обработки данных в древовидных структурах;
  • скрипты для скрапинга и парсинга;
  • программы для получения и обработки данных публичных API.

Третий этап: основы веб-разработки

Основы веб-разработки на Python
Основы веб-разработки на Python

Теперь багажа знаний достаточно для создания первых настоящих веб-приложений. Существует несколько фреймворков на базе Python, но бесспорных лидеров всего два – Flask и Django:

  • Flask называют микрофреймворком – он содержит абсолютный минимум инструментов, но отличается впечатляющей гибкостью, подходит для небольших веб-приложений. Функциональность Flask легко расширить с помощью установки дополнительных библиотек и модулей.
  • Django поставляется с обширным набором модулей и отличается более жесткой структурой. Отлично подходит для создания масштабных веб-приложений со сложной функциональностью. Как и в случае с Flask, возможности Django можно расширить дополнительными модулями. К примеру, Django по умолчанию включает модуль для тестирования на основе unittest, но при желании протестировать Django-приложение можно с помощью дополнительного модуля django-pytest на основе pytest, и точно такой же модуль flask-pytest доступен для Flask.

Оба фреймворка используют шаблонизаторы – инструменты, которые упрощают передачу и обработку на фронтенде данных, полученных от бэкенда. Однако шаблонизаторы не генерируют HTML и CSS, поэтому базовый синтаксис этих языков нужно освоить на этом этапе. Становиться полноценным фронтендером не потребуется, но необходимо понимание того, как интегрировать в Django готовые HTML/CSS, Bootstrap и Tailwind шаблоны.

Одно из главных преимуществ Flask и Django – наличие ORM, прослойки между базой данных и кодом, которая позволяет программисту работать с БД без знаний языка запросов SQL. В то же время оба фреймворка предусматривают возможность работы с базой напрямую – это может потребоваться для создания максимально оптимизированных запросов на SQL. Для создания небольших веб-приложений подходят базы SQLite и MySQL, для более масштабных – PostgreSQL.

Еще один весомый плюс Flask и Django – простота разработки REST API. Самый популярный инструмент разработки API для Django-приложений – Django REST Framework (DRF), однако при необходимости можно использовать FastAPI и Django Ninja, которые обеспечивают более высокую производительность. Для базового тестирования DRF API достаточно встроенного интерфейса, который доступен по адресу http://localhost:8000/api/, для более продвинутого тестирования обычно используют Postman.

Для создания Rest API с Flask используют инструменты Connexion, OpenAPI и Flask-Marshmallow, а для тестирования – Swagger UI. Процесс разработки API на основе Flask выглядит чуть сложнее, чем создание API на базе Django.

Что нужно уметь после завершения этого этапа обучения:

  • Проектировать структуру серверной части веб-приложения.
  • Создавать несложные веб-приложения на основе Flask и Django – блоги, лендинги, лайт-версии известных соцсетей и сервисов.
  • Разрабатывать бэкенд и API для приложений, фронтенд которых сделан на JS-фреймворках React, Vue, Angular.
  • Размещать статический контент в CDN.
  • Понимать, как пишутся запросы к бэкенду с помощью Fetch или Axios.
  • Использовать линтеры (Flake8, Ruff) для «причесывания» и стандартизации кода.
  • Писать тесты для проверки работы компонентов приложения и API.
  • Разворачивать приложения на Linux сервере с помощью Nginx и Gunicorn.

Четвертый этап: продвинутые инструменты и концепции

Продвинутые инструменты и концепции
Продвинутые инструменты и концепции

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

  • Принципы разработки высоконагруженных/асинхронных приложений и микросервисов.
  • Управление очередями задач и брокеры сообщений: Celery, Dramatiq, RabbitMQ, Redis, Kafka.
  • Веб-сокеты и Django Channels.
  • Передача потоковых данных с WebRTC.
  • Вебхуки (обратные вызовы).
  • CI/CD (непрерывная интеграция и доставка) для Django-проектов: Jenkins.
  • Контейнеризация Django- и DRF-приложений: Docker и Kubernetes.
  • Безопасность приложений на основе Django и Flask: предотвращение SQL-внедрений, межсайтового скриптинга и подделок запросов.

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

МЕРОПРИЯТИЯ

Комментарии

 

Мне и жизни не хватит, чтобы это всё изучить! К тому же есть и другие языки программирования. 😱

Надеюсь, зная Питона, будет проще использовать другие языки. Благодарю за статью, Наталья! 😊

11 марта 2024

Спасибо за отзыв, Антон! Да, после Питона любые другие языки даются гораздо проще. В дополнение к Питону стоит освоить JavaScript в первую очередь, как мне кажется.

01 октября 2023

Спасибо за ваши уроки, авторизировался тут только ради этого)

01 октября 2023

И Вам спасибо за отзыв, уроков скоро будет больше :)

06 сентября 2023

Так, а как же найти работу? Вакансий для стажеров нет, а для junior-позиций требуется как минимум год коммерческого опыта. Даже до собеседования не дойти, так как HR отклонит резюме.

06 сентября 2023

Пилите проекты

Решайте задачи

Больше проектов и задач найдете здесь 🐍🛣️ От нуля до джуна за 90 дней: путеводитель по Python от «Библиотеки программиста»

Оформите профиль на гитхабе

Пройдите стажировку

  • Статья с актуальными стажировками выйдет на следующей неделе.
06 сентября 2023

Нет никакого смысла в создании красивого профиля на GitHub или в pet-проектах. Если у вас нет коммерческого опыта в разработке (который pet-проекты не предоставляют), то рекрутер отклонит ваше резюме. https://github.com/OlegRemizoff (проекты доступны онлайн)

 
06 сентября 2023

Привет! Ты поднял классную тему, но давай по порядку:

  1. Стажерских вакансий для Python-разработчиков — достаточно, если захотеть поискать. Прикреплю скрины из хехе.ру и хабра к этому комменту. + просматривай changellenge.com (и тому подобные сайты), раздел со стажировками.
  2. Требования к опыту работы от 1 года чаще всего не являются строгими (только если ты не хочешь работать в какой-нибудь госструктуре или около того). Поэтому смело отправляй отклики на вакансии. Главное — укажи в резюме хоть какие-нибудь релевантные проекты в разделе «Опыт работы» (в том числе фриланс/подработку) с длительностью от одного года, чтобы пройти фильтр и не словить отказ автоматом.
  3. Пиши убедительные сопроводительные письма. Это реально важно. У меня есть кейс, когда кандидат с нулевым опытом написал очень классный текст о себе и получил оффер (я сильно сократила эту историю, но такое было, да).
  4. Human-cloud платформы. Это как фриланс-биржа, но с долгосрочными проектами, нормальными заказчиками (компаниями), работой в команде и без допинга цен. Принимают разрабов (и не только) из разных направлений + в том числе без опыта работы. Самая популярная в России — Skipp.pro, вроде.
  5. Напиши о себе в соц.сетях. В Твиттере эта тема норм работает. Попроси ретвита у популярных «микроблогеров», в конце концов)))
  6. Можно попробовать обратиться в HR-агентства с запросом «Найдите мне работу». Иногда это помогает.
  7. Напиши напрямую компаниям (на корпоративную почту в HR-отдел, она везде указана) с вопросом типа «Здравствуйте, вам стажер Python-разработчик нужен? Умею в ... . Знаю ... . Делал такое вот ... ».

P.S. - сорре, если где-то что-то сумбурно написала. Это первое, что пришло мне в голову)

06 сентября 2023

2 и 4 картинка неверные. Спасибо.

06 сентября 2023

Почините картинки.

ВАКАНСИИ

Добавить вакансию
Senior DevOps Engineer
по итогам собеседования
Senior MLE (SE)
от 5000 USD до 9000 USD
Senior DevOps Developer
Лимасол, по итогам собеседования

ЛУЧШИЕ СТАТЬИ ПО ТЕМЕ

LIVE >

Подпишись

на push-уведомления