🐍 Дорожная карта Python-разработчика
В нашей версии дорожной карты рассказываем, в каком порядке нужно изучать Python, чтобы пройти путь от основ до веб-разработки, тестирования, науки о данных или машинного обучения.
1. Где и как учиться?
Итак, у нас есть четыре способа изучения языка:
- Пойти на курсы с кураторами или купить подписку на онлайн-тренажер.
- Отправиться на буткемп.
- Учить самостоятельно по Ютубу и книгам, делать пет-проекты.
- Найти наставника.
Ищите курсы с трудоустройством, поскольку на всех курсах, ютуб-роликах дают примерно одинаковые знания: отличается только подача материала и наличие куратора, который придет на помощь. Если вам нужно полностью погрузиться в процесс обучения, чтобы чему-то научиться, то выбирайте буткемп – интенсивные курсы/лагеря по программированию. Основам вполне можно научиться самостоятельно и вы не одни на этом пути. Главное при таком подходе – самодисциплина и умение вовремя взять перерыв. И, наконец, идеальный вариант – найти наставника, который проведет по всем подводным камням и поделится знаниями.
Где учат Python с гарантией трудоустройства?
На курсах. Например, GeekBrains ведет прием на факультет Python-разработки, где вас научат:
- пользоваться Linux и Git;
- основам MySql;
- алгоритмам и структурам данных на Python;
- фронт- и бэкенд-разработке на Django и Flask;
- командной разработке по методологии Agile/Scrum;
- и многому другому, плюс 7 проектов в портфолио.
Окей, я выбираю путь самообразования. Что дальше?
Дальше – выбор операционной системы.
2. Операционная система и редактор кода (IDE)
Кодить на Питоне можно на Винде, Макоси и Линуксе. Лучший выбор питонщика – дистрибутив Линукс, который называется Убунту. Питон на нем предустановлен, плюс все инструкции по использованию библиотек преимущественно пишутся под этот дистрибутив. Вопросы на Стековерфлоу по Питону, как правило, тоже задают для Убунту. Редко, но бывают случаи, что на Винде очень сложно установить библиотеку, а в Убунту она ставится за пару команд. Макось – на вкус и цвет.
Какую ОС выбрать?
Не Винду. На ней можно покрывать 90% задач, но потом все равно придется столкнуться с Линуксом, потому что питонщики занимаются бэкенд-разработкой и их программы в итоге запускаются в среде Линукс.
Порядок изучения Ubuntu:
- Установка ОС.
- Командная строка.
- Установка пакетов.
- Управление пользователями и группами.
- Файловая система.
- Скрипты Bash.
3. Основы Python
Каждый проект начинайте в новом виртуальном окружении. Виртуальное окружение – отдельная папка, в которую копируется интерпретатор Python и устанавливаются библиотеки для отдельно взятого проекта. Такой подход позволит в каждый проект устанавливать нужную версию библиотеки.
Скорость разработки – важный параметр, но куда важнее писать код, от которого у другого разраба не будет течь кровь из глаз. Каждому, кто пишет на Питоне, рекомендуется следовать общепринятому стилю написания кода PEP 8.
Как понять, где заканчиваются основы?
Плюс-минус основы включают в себя:
- Понятие интерпретатора.
- Типы данных.
- Переменные, PEP 8.
- Логические операторы.
- Условные операторы if/else.
- Циклы.
- Итераторы и генераторы.
- Файлы.
- Модули.
- Установка библиотек.
- Функции.
4. Git и GitHub
Код хранится в хранилище – репозитории. Проще говоря, в папке с кодом. Репозитории можно хранить на локальной машине и размещать в онлайн-репозиториях, таких как GitHub и GitLab. Без Git не работает ни один серьезный проект и знать его – мастхэв для всех кодеров.
Порядок изучения:
- Установка и настройка Git.
- Репозитории и управление файлами.
- История изменений и ветки репозиторий.
- Публикация репозитория и слияние веток.
- Создание pull request.
5. Веб-разработка
Питонисты пишут бэкенд веб-приложений на фреймворках и микрофреймворках.
Микрофреймворки – Flask, FastAPI, Bottle, Pyramid – имеют минимальный функционал и предоставляют в основном только роутинг (переход на страницу), а для всего остального нужно ставить дополнительный плагины или писать их самому. Больше гибкости, но ниже скорость разработки.
Помимо самих фреймворков, пригодятся начальные знания HTML, CSS, JS, чтобы понимать как связываются бэкенд с фронтендом. Понадобится умение писать SQL-запросы (Django ORM, SQLAlchemy), настраивать сервер Nginx/Apache и понимать разницу между ASGI и WSGI.
Что выбрать?
Если нужно сделать сайт, веб-приложение, которое похоже на обычный сайт, то выбирайте Джанго. Для нестандартных задач – микрофреймворки. Вакансий по Джанго больше, чем по всем остальным фреймворками и микрофреймворкам.
Порядок изучения:
- HTML, CSS.
- Основы JavaScript.
- Django и Django ORM.
- Flask, шаблоны Jinja2, Blueprints и SQLAlchemy.
- Nginx или Heroku.
6. Тестирование
Python широко используется в автоматизации тестирования, например, инженеры SpaceX пишут тесты для бэкенда именно на этом языке. В Python встроены библиотеки для тестирований Pytest и Unittest (запуск независимых тестов для отдельной функции или класса). Для автоматизации действий веб-браузера и тестирования сайтов и веб-приложений применяют библиотеку Selenium.
Порядок изучения:
- Протокол HTTP, концепция DOM.
- HTML, CSS, JavaScript.
- Ручное тестирование.
- Баг-системы, баг-репорты.
- Автоматизация тестирования: Selenium, Pytest.
- Кроссбраузерное тестирование.
7. Наука о данных
Питон имеет понятный синтаксис, код более лаконичен по сравнению с другими языками, поэтому он идеально подходит в качестве высокоуровневого интерфейса для решения сложных задач в науке о данных.
Какие библиотеки освоить:
- NumPy – удобно работать с многомерными матрицами/тензорами.
- Pandas – применяется для обработки, группировки и визуализации больших наборов данных.
- Matplotlib, Plotly, Seaborn, Bokeh и Altair – визуализируют данные.
- Pandas, Numpy, Matplotlib.
- Выгрузка баз данных с помощью SQL.
- Извлечение, преобразование и загрузка данных (ETL).
- Разведочный анализ данных (EDA).
- Задачи классификации, регрессии и кластеризации.
- Построение и отбор признаков (раз, два).
- Линейная алгебра, матанализ, основы теории вероятностей.
8. Машинное обучение
В машинном обучении потребуется отличное знание Python. Начните с библиотек Numpy, Matplotlib, Scikit-learn. Не обойтись без математики и статистики: множества, пределы функций, производные, интегралы, случайные события, линейная регрессия и дисперсионный анализ.
Порядок изучения:
- Numpy, Pandas.
- SQL и получение данных.
- Очистка данных.
- Визуализация данных в Matplotlib.
- Линейная алгебра, математический анализ и теория вероятности.
- Линейные методы, деревья решений.
- Алгоритмы кластеризации.
- Функции потерь и оптимизации.
- Оценка точности модели.
9. Продвинутый Python
Все серьезные библиотеки пишут с использованием объектно-ориентированного программирования (ООП). Разберитесь в парадигмах ООП: инкапсуляции, наследовании и полиморфизме. Узнайте что такое декораторы и когда их использовать. Освойте асинхронное (async/await) и многопоточное (threading) программирование. Помните об алгоритмах, их иногда спрашивают на собеседованиях.
Удачи в пути!