🐍 Дорожная карта Python-разработчика

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

Чтобы не превратить обучение в рутину можно одновременно учить основы и не спеша изучать что-то продвинутое: Django, Selenium, математику для дата-сайенс, алгоритмы. Придумывайте себе челленджи, участвуйте в хакатонах, конкурсах Kaggle (раз, два, три). Не скучайте.

1. Где и как учиться?

Итак, у нас есть четыре способа изучения языка:

  • Пойти на курсы с кураторами или купить подписку на онлайн-тренажер.
  • Отправиться на буткемп.
  • Учить самостоятельно по Ютубу и книгам, делать пет-проекты.
  • Найти наставника.

Ищите курсы с трудоустройством, поскольку на всех курсах, ютуб-роликах дают примерно одинаковые знания: отличается только подача материала и наличие куратора, который придет на помощь. Если вам нужно полностью погрузиться в процесс обучения, чтобы чему-то научиться, то выбирайте буткемп – интенсивные курсы/лагеря по программированию. Основам вполне можно научиться самостоятельно и вы не одни на этом пути. Главное при таком подходе – самодисциплина и умение вовремя взять перерыв. И, наконец, идеальный вариант – найти наставника, который проведет по всем подводным камням и поделится знаниями.

Где учат Python с гарантией трудоустройства?

На курсах. Например, GeekBrains ведет прием на факультет Python-разработки, где вас научат:

  • пользоваться Linux и Git;
  • основам MySql;
  • алгоритмам и структурам данных на Python;
  • фронт- и бэкенд-разработке на Django и Flask;
  • командной разработке по методологии Agile/Scrum;
  • и многому другому, плюс 7 проектов в портфолио.

Окей, я выбираю путь самообразования. Что дальше?

Дальше – выбор операционной системы.

2. Операционная система и редактор кода (IDE)

Кодить на Питоне можно на Винде, Макоси и Линуксе. Лучший выбор питонщика – дистрибутив Линукс, который называется Убунту. Питон на нем предустановлен, плюс все инструкции по использованию библиотек преимущественно пишутся под этот дистрибутив. Вопросы на Стековерфлоу по Питону, как правило, тоже задают для Убунту. Редко, но бывают случаи, что на Винде очень сложно установить библиотеку, а в Убунту она ставится за пару команд. Макось – на вкус и цвет.

IDE – программа для кодинга, которая значительно упрощает работу за счет разнообразных плагинов: автодополнение кода, автоматическое создание виртуального окружения и т. д. Новичкам советуют IDE PyCharm , потому что в ней все работает из коробки. Альтернативы – Atom, Visual Studio Code, Sublime.

Какую ОС выбрать?

Не Винду. На ней можно покрывать 90% задач, но потом все равно придется столкнуться с Линуксом, потому что питонщики занимаются бэкенд-разработкой и их программы в итоге запускаются в среде Линукс.

Порядок изучения Ubuntu:

  1. Установка ОС.
  2. Командная строка.
  3. Установка пакетов.
  4. Управление пользователями и группами.
  5. Файловая система.
  6. Скрипты Bash.

3. Основы Python

В нашем арсенале десятки курсов на Ютубе, Степике, Coursera и бесплатные онлайн-тренажеры. Если предпочитаете читать книги, обратите внимание на статью «ТОП-15 книг по Python: от новичка до профессионала».

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

Скорость разработки – важный параметр, но куда важнее писать код, от которого у другого разраба не будет течь кровь из глаз. Каждому, кто пишет на Питоне, рекомендуется следовать общепринятому стилю написания кода PEP 8.

Как понять, где заканчиваются основы?

Плюс-минус основы включают в себя:

  1. Понятие интерпретатора.
  2. Типы данных.
  3. Переменные, PEP 8.
  4. Логические операторы.
  5. Условные операторы if/else.
  6. Циклы.
  7. Итераторы и генераторы.
  8. Файлы.
  9. Модули.
  10. Установка библиотек.
  11. Функции.
В публикации «Самоучитель для начинающих: как освоить Python с нуля за 30 минут?» разбираются основы Питона до функционального программирования включительно. Поверхностно, но за пару часов получите минимальное представление о языке.

4. Git и GitHub

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

Код хранится в хранилище – репозитории. Проще говоря, в папке с кодом. Репозитории можно хранить на локальной машине и размещать в онлайн-репозиториях, таких как GitHub и GitLab. Без Git не работает ни один серьезный проект и знать его – мастхэв для всех кодеров.

Порядок изучения:

  1. Установка и настройка Git.
  2. Репозитории и управление файлами.
  3. История изменений и ветки репозиторий.
  4. Публикация репозитория и слияние веток.
  5. Создание pull request.
База освоена. Вы еще не джун, но уже большой молодец, потому что не бросили. Теперь выбираем дорожку, на которую свернуть: веб-разработка, тестирование, наука о данных или машинное обучение.

5. Веб-разработка

Питонисты пишут бэкенд веб-приложений на фреймворках и микрофреймворках.

Фреймворк – платформа, набор технологий, который помогает разработчику создавать, масштабировать и обслуживать веб-приложения. Самый популярный веб-фреймворк на Питоне – Django. Весь необходимый для создания сайта функционал в Джанго присутствует из коробки, например, работа с базами данных. Для него существует огромное количество дополнений, которые подключаются за несколько строчек кода. Акцент в этом фреймворке сделан на скорости разработки.

Микрофреймворки – Flask, FastAPI, Bottle, Pyramid – имеют минимальный функционал и предоставляют в основном только роутинг (переход на страницу), а для всего остального нужно ставить дополнительный плагины или писать их самому. Больше гибкости, но ниже скорость разработки.

Помимо самих фреймворков, пригодятся начальные знания HTML, CSS, JS, чтобы понимать как связываются бэкенд с фронтендом. Понадобится умение писать SQL-запросы (Django ORM, SQLAlchemy), настраивать сервер Nginx/Apache и понимать разницу между ASGI и WSGI.

Что выбрать?

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

Порядок изучения:

  1. HTML, CSS.
  2. Основы JavaScript.
  3. Django и Django ORM.
  4. Flask, шаблоны Jinja2, Blueprints и SQLAlchemy.
  5. Nginx или Heroku.

6. Тестирование

Python широко используется в автоматизации тестирования, например, инженеры SpaceX пишут тесты для бэкенда именно на этом языке. В Python встроены библиотеки для тестирований Pytest и Unittest (запуск независимых тестов для отдельной функции или класса). Для автоматизации действий веб-браузера и тестирования сайтов и веб-приложений применяют библиотеку Selenium.

Порядок изучения:

  1. Протокол HTTP, концепция DOM.
  2. HTML, CSS, JavaScript.
  3. Ручное тестирование.
  4. Баг-системы, баг-репорты.
  5. Автоматизация тестирования: Selenium, Pytest.
  6. Кроссбраузерное тестирование.

7. Наука о данных

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

Дата-сайентисты работают в Jupyter Notebook – среде, в которой можно запускать отдельные фрагменты кода и визуализировать данные. Если датасеты большие, а компьютер слабый, воспользуйтесь бесплатным облачным сервисом Google Colab – это Jupyter Notebook, только онлайн.

Какие библиотеки освоить:

  • NumPy – удобно работать с многомерными матрицами/тензорами.
  • Pandas – применяется для обработки, группировки и визуализации больших наборов данных.
  • Matplotlib, Plotly, Seaborn, Bokeh и Altair – визуализируют данные.

Порядок изучения:

  1. Pandas, Numpy, Matplotlib.
  2. Выгрузка баз данных с помощью SQL.
  3. Извлечение, преобразование и загрузка данных (ETL).
  4. Разведочный анализ данных (EDA).
  5. Задачи классификации, регрессии и кластеризации.
  6. Построение и отбор признаков (раз, два).
  7. Линейная алгебра, матанализ, основы теории вероятностей.

8. Машинное обучение

В машинном обучении потребуется отличное знание Python. Начните с библиотек Numpy, Matplotlib, Scikit-learn. Не обойтись без математики и статистики: множества, пределы функций, производные, интегралы, случайные события, линейная регрессия и дисперсионный анализ.

Порядок изучения:

  1. Numpy, Pandas.
  2. SQL и получение данных.
  3. Очистка данных.
  4. Визуализация данных в Matplotlib.
  5. Линейная алгебра, математический анализ и теория вероятности.
  6. Линейные методы, деревья решений.
  7. Алгоритмы кластеризации.
  8. Функции потерь и оптимизации.
  9. Оценка точности модели.

9. Продвинутый Python

Продвинутый Python стоит в конце списка, но по факту, вникать в детали языка можно сразу после основ («70 ресурсов для продвинутого изучения Python: каналы, сайты, сообщества, книги и курсы»).

Все серьезные библиотеки пишут с использованием объектно-ориентированного программирования (ООП). Разберитесь в парадигмах ООП: инкапсуляции, наследовании и полиморфизме. Узнайте что такое декораторы и когда их использовать. Освойте асинхронное (async/await) и многопоточное (threading) программирование. Помните об алгоритмах, их иногда спрашивают на собеседованиях.

Удачи в пути!

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

admin
11 декабря 2018

ООП на Python: концепции, принципы и примеры реализации

Программирование на Python допускает различные методологии, но в его основе...
admin
28 июня 2018

3 самых важных сферы применения Python: возможности языка

Существует множество областей применения Python, но в некоторых он особенно...
admin
13 февраля 2017

Программирование на Python: от новичка до профессионала

Пошаговая инструкция для всех, кто хочет изучить программирование на Python...