Мы решили показать, какие обязательные остановки ждут новичков на маршруте от полной неизвестности до джуна — разработчика на Python.
Университет рентабельного образования Skypro заверяет: Python-разработчик, даже обучившийся с нуля, будет востребован на рынке. И это один из самых очевидных способов сменить профессию на более оплачиваемую.
Путь к работе разработчиком получится интенсивным, но довольно быстрым: можно управиться за 9-12 месяцев.
Хотите скачать книги по Python в 2 клика? Тогда вам в наш телеграм канал PythonBooks
Популярен ли Python?
Python (произносится как «пайтон», в простонародье — «питон») — один из самых популярных языков программирования в мире в 2023 году. И его популярность не падает.
Например, TIOBE Index измеряет популярность языков программирования по тому, как часто их ищут в поисковых системах. В своем индексе за январь 2022 года он поместил Python на третье место. В марте 2023-го — на первое.
Кроме того, сайт GitHub, где программисты хранят и делают доступными свои проекты с открытым исходным кодом, тоже показывает рост популярности Python. На главной странице GitHub можно увидеть статистику наиболее популярных языков за последние годы — и Python занимает первое место по количеству репозиториев и вкладов в них.
Почему:
- Python легко читать, легко понимать, он идеален для начинающих разработчиков. Его синтаксис прозрачнее, чем у других языков программирования, а конструкции — проще.
- На Python есть спрос. Его используют даже очень крупные компании. Например, Spotify применяет его для анализа данных, автоматизации задач и других проектов. YouTube написан на Python. Всё, что связано с ИИ, сейчас пишется на Python.
- Чем больше людей пишет на Python — тем больше создается готовых наборов инструментов, упрощающих жизнь разработчикам. Такие инструменты называются модулями и плагинами, а их наборы — фреймворками. И для Python их создано огромное количество (GitHub и Stack Overflow не дадут соврать). На Stack Overflow, например, ответов на вопросы по Python уже больше двух миллионов.
- Чем больше людей работает с Python, тем проще новичку найти помощь, если он столкнется с проблемой.
В общем, чем больше популярность Python, тем проще с ним начать работать. А Python сейчас популярен как никогда.
Основы Python
Куда пишем?
Перед тем как начать писать код на Python, нужно установить интерпретатор языка Python на компьютер и настроить среду разработки.
Компиляторы и интегрированные среды разработки (IDE) нужны для написания и отладки кода на Python. Но им нужен интерпретатор языка, чтобы вас понимать.
Интерпретатор можно скачать с официального сайта. А вот сред разработки много — придется выбрать что-то. Для новичков могут подойти онлайн-инструменты, не требующие установки: Jupyter Notebooks, CodePen, CodeSandbox, Replit или Google Colab.
Десктопные среды разработки (PyCharm, Sublime Text, VSCode) более мощные и гибкие. Набор функций у них шире, возможностей настройки — больше. Они нужны профессиональным разработчикам, которые работают над сложными проектами, требующими множества инструментов и плагинов.
А что мы там пишем-то?
Язык программирования — это в первую очередь язык. И у этого языка есть синтаксис — то, как надо сочетать между собой команды и ключевые слова, чтобы получить корректный, работающий код.
Первая хорошая новость: у Python очень простой синтаксис. Смотрите сами — вот как на Python выглядит код для сложения двух чисел:
x = 5 y = 3 z = x + y print(z)
Этот пример очень легко прочитать: мы задали значение переменной x
, затем переменной y
— и, наконец, сложили x
и y
, чтобы получить z
— сумму. Затем мы используем команду print
(печать), чтобы вывести значение, указанное в скобках (z)
.
Если бы мы писали этот же код, скажем, на Java, нам пришлось бы как минимум задавать типы переменных для x
, y
и z
. И закрывать каждую команду точкой с запятой. А в C++ пришлось бы еще и указывать поток ввода-вывода… В общем, поверьте: синтаксис у Python — проще некуда.
Конечно, не весь код будет настолько простым. Чтобы писать код на Python, вам потребуется изучить:
- переменные (емкости для хранения значений);
- условия (думаем, вы понимаете, о чём речь);
- циклы (указания программе выполнять определенный блок кода несколько раз);
- функции (код, который можно вызывать из других частей программы);
- списки (упорядоченные коллекции элементов), кортежи (неупорядоченные коллекции элементов), словари (данные в формате «ключ — значение») и множества (коллекции уникальных, неповторяющихся элементов).
Как начать упрощать себе жизнь
Чем дальше вы будете продвигаться в изучении Python, тем сложнее будет код. Так вы придете к тому, чтобы начать пользоваться библиотеками.
Python имеет много библиотек и модулей, которые упростят работу. Мы рекомендуем начать с библиотеки Requests и файлов JSON. Еще дальше можно ознакомиться с такими библиотеками, как NumPy, Pandas, Matplotlib. Их используют почти все — от разработчиков научных и аналитических приложений до создателей веб-приложений.
А еще любому программисту придется научиться на этом этапе работать с базами данных. Для этого — освоить простой язык SQL-запросов. А для фреймворка Django (о нём чуть позже) могут пригодиться основы работы с ORM-библиотеками — такими, как SQLAlchemy или Django ORM.
И SQL-, и ORM-библиотеки нужны для того, чтобы обращаться к базе данных: делать запросы к ней, извлекать данные и обрабатывать их. ORM-библиотеки дополнительно позволяют работать с базой данных через объекты и классы Python, что может сделать код более читаемым и легким для понимания. Но на этом этапе нужно изучить именно язык SQL-запросов.
Наконец, крайне рекомендуем пользоваться Git и GitHub: это система контроля версий, которая помогает отслеживать изменения в коде и сотрудничать с коллегами. Разработчики используют GitHub еще и для размещения портфолио — так что он вам очень пригодится в конце пути.
Что я смогу делать к концу этого этапа?
Базовые знания, приобретенные на этом этапе, позволяют решать разнообразные задачи: написать скрипт для поиска и замены слов в тексте, программу для определения часто встречающихся слов в тексте, скрипт для создания калькулятора с базовыми математическими операциями, код для проверки, является ли число простым, скрипт для нахождения наибольшего общего делителя двух чисел.
ООП и основы работы с веб-технологиями
Что такое ООП
Чтобы перейти к более сложным задачам, придется углубиться в основы объектно-ориентированного программирования. Вам придется вникнуть:
- в классы,
- объекты,
- наследование,
- инкапсуляцию,
- полиморфизм.
Python — это объектно-ориентированный язык. Это означает, что он представляет весь мир как набор объектов, взаимодействующих друг с другом с помощью методов. Эти объекты объединяются в классы — своего рода шаблоны, схемы или абстракции для групп похожих объектов.
Объекты могут наследоваться от классов. Это значит, что похожие друг на друга объекты будут обладать похожими свойствами и методами, которые нам не придется прописывать для каждого объекта с нуля. Вместо этого мы пропишем их в классе — а объекты эти свойства и методы просто унаследуют.
И объекты, и их атрибуты, и методы должны существовать в каком-то классе. При этом вы можете защитить объект, атрибут, метод или весь класс с помощью инкапсуляции. Тогда к ним нельзя будет обратиться за пределами этого класса. Это повышает безопасность и облегчает использование приложения.
Однако объекты в одном классе не обязаны обладать идентичными методами. Метод может существовать в разных вариациях.
Например, вы учите пару собак методу «голос». Одну собаку вы при этом учите гавкать, а вторую — выть. Обе будут выполнять одну команду, и в целом суть остается одной: подать голос, когда хозяин дает команду. Но нюансы реализации этого метода собачками остаются разными.
Способность языков программирования вызывать один и тот же метод для разных объектов так, чтобы при этом различалась их реализация, называется полиморфизмом. Она значительно сокращает и упрощает сложный код, поэтому без нее — никак.
С какими веб-технологиями нужно познакомиться
После того как вы узнали, что есть классы и объекты, можно перейти к знакомству:
- С HTTP-запросами и API. Благодаря им вы сможете в свои приложения передавать данные из внешних источников. Без этого не получится написать ни одно приложение, которое использует базы данных и интернет-сервисы.
- JSON и XML. Они передают данные между приложениями.
- Регулярными выражениями (Regex). Они помогут вам искать и обрабатывать текстовую информацию.
- BeautifulSoup и XPATH. Это инструменты, которые помогают программистам получать данные с веб-страниц.
Что я смогу делать теперь?
Теперь вам должно хватать знаний, чтобы написать:
- скрипты для автоматизации рутинных задач, например обработки файлов в папке или отправки электронных писем;
- программы для создания и обработки баз данных, например для хранения информации о заказах или учета продаж;
- приложения для взаимодействия с пользователем, например для создания простого GUI-интерфейса или написания телеграм-бота;
- программы для анализа данных, например для обработки больших CSV-файлов или визуализации графиков.
А еще ваш код станет заметно лаконичнее. И это очень хорошо: ведь никому не удобно читать приложение из тысячи строк.
Основы веб-разработки
Зачем мне Flask и Django?
Чтобы приступить к разработке веб-приложений, обычно изучают один из двух фреймворков: Flask или Django.
Flask — это легкий и простой фреймворк, который позволяет быстро создавать несложные веб-приложения. Он не навязывает жестких правил, поэтому разработчик имеет большую свободу в выборе архитектуры и способов реализации.
Например, с Flask вы можете выбрать любой ORM (SQLAlchemy или Pony ORM), чтобы работать с базой данных. И использовать любую библиотеку для отправки электронной почты, например Mailgun, Mandrill, SendGrid и т. д.
Но мы рекомендуем начать с изучения именно Django. Django — это мощный и масштабируемый фреймворк, который предоставляет готовые решения для многих типов задач, связанных с созданием веб-приложений. Он имеет жесткую структуру и определенные правила — но это позволяет создавать более сложные и стабильные приложения.
В Django вы должны следовать той структуре проекта, которую заложил фреймворк: использовать те папки для шаблонов, статических файлов и т. п., которые заложил сам фреймворк.
В интернете вы сможете найти большое количество библиотек для Django. По сути, это — готовые решения: аутентификация и авторизация, административная панель, формы и т. д., которые позволяют быстрее создавать приложения.
С одной стороны, это помогает организовать код. Его становится проще поддерживать в будущем. С другой стороны — ставит разработчика в определенные рамки.
Какие еще веб-технологии понадобятся?
На этом этапе вам придется подтянуть знания:
- По HTML и CSS. Нет, вам не нужно самостоятельно работать над тем, как выглядит ваше веб-приложение: это задача фронтендера. Но знать, допустим, как интегрировать в Django готовые HTML/CSS-шаблоны, пригодится.
- REST API. Он нужен для обмена данными между клиентом и сервером в современных веб-приложениях. С его помощью можно получать данные с сервера, отправлять данные на сервер и обновлять их — например, получать информацию о товарах, добавлять товары в корзину, оформлять заказы, получать информацию о статусе заказов и т. д.
Что я смогу делать теперь?
После завершения этапа обучения вы сможете:
- Создавать серверную часть веб-приложений, которые будут обрабатывать запросы от пользователей и отправлять им данные.
- Разрабатывать различные типы веб-приложений, например онлайн-магазины, новостные порталы, системы управления контентом и многое другое.
- Писать тесты для компонентов вашего приложения и API, чтобы убедиться, что всё работает как задумано.
Продвинутый инструментарий
На заключительном этапе изучения Python следует обратить внимание на инструменты, которые помогают создавать более масштабируемые, безопасные, производительные и гибкие веб-приложения на базе Django и Flask.
Эти инструменты могут работать с большими объемами данных, обрабатывать запросы в режиме реального времени и управляться в условиях высокой нагрузки.
Не все эти приложения и сервисы обязательно знать, чтобы работать на уровне джуна-разработчика. Это то, что логично продолжать изучать, когда вы освоили необходимые основы.
Что нужно большому и сложному приложению?
Во-первых, выдерживать большое количество пользователей и запросов. Для этого применяют принципы разработки высоконагруженных/асинхронных приложений и микросервисов. Используют асинхронные фреймворки, микросервисную архитектуру и различные техники оптимизации работы приложений.
Управление очередями задач и брокеры сообщений используют для обработки задач, которые требуют больших ресурсов и времени. Наиболее распространенные — Celery, Dramatiq, RabbitMQ, Redis, Kafka.
Во-вторых, нужна надежная передача данных.
Соединение между сервером и клиентом устанавливают веб-сокеты. С их помощью сервер и клиент обмениваются данными в режиме реального времени. Django Channels — это библиотека, которая добавляет поддержку веб-сокетов в Django-приложения.
А для передачи аудио- и видеоданных в режиме реального времени используют WebRTC.
Помимо пользователей приложение «общается» с другими, внешними сервисами. Зачастую это требует непосредственного участия разработчика. Чтобы автоматизировать процесс, используют вебхуки (обратные вызовы). Они уведомляют эти сервисы о событиях, происходящих в приложении, чтобы сервис мог среагировать заранее определенным образом.
В-третьих, важен и сам процесс сборки, тестирования и развертывания приложения.
Для автоматической сборки, тестирования и развертывания приложений используют CI/CD-процессы (непрерывная интеграция и доставка). Jenkins — один из наиболее популярных.
А Docker и Kubernetes — это инструменты, которые позволяют упаковать приложение в контейнер, который можно легко развернуть на любом сервере.
Наконец, есть еще вопрос безопасности.
Чтобы приложение на базе Django или Flask считалось безопасным, оно должно быть в состоянии предотвращать такие угрозы, как SQL-внедрения, межсайтовый скриптинг и подделки запросов. Для этого можно использовать различные инструменты: Django Security Middleware, Flask-Security, SQLAlchemy, Django ORM.
Реально ли выучить всё это за 9–12 месяцев?
Не всё из того, что мы упомянули, требуется знать, чтобы начать работать джуном-разработчиком. Особенно если говорить про последний описанный нами этап погружения в Python.
Но в целом ответ — да. Потребуется много самодисциплины, учебники, задания и помощь от комьюнити питонистов. В интернете довольно много бесплатных тренажеров, пособий и учебников. Комьюнити разработчиков на Python живо и здравствует.
Skypro предлагает всё это в комплекте:
- Основы программирования на Python и основы веб-разработки, оформленные в единый курс «Python-разработчик».
- Обучение продвинутым инструментам Python.
- Работа с GitHub.
- Разработка на Django и размещение приложения на хостинг.
- Работа с SQL-запросами и инструментами.
- Индивидуальная проверка домашних заданий и поддержка наставника, помощь в подготовке к собеседованию и 6 консультаций с рекрутером.
- 500+ часов обучения и 12+ проектов, из которых 7 пойдут в ваше портфолио.
А если этого окажется недостаточно — они вернут деньги (и это прописано в договоре).