Python-Roadmap - Дорожная карта по изучению Python

Overview

Python Roadmap

Python logo

Я решил сделать что-то вроде дорожной карты (Roadmap) для изучения языка Python. Возможно, если найдутся желающие дополнять ее, модифицировать и редактировать, то получится хорошая инструкция. Данная информация полезна тем, кто хочет изучить основы Python.

P.S. за ссылки на курсы, видео и статьи я не получаю ничего. Все ссылки не реферальные.


Благодарности:

@IgorBeschastnov - за правки орфографии и пунктуации
@GraceAredel - за правки орфографии и пунктуации

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


Почему Я решил это сделать? У меня было много попыток стать разработчиком. История об этом тут: (https://github.com/GnuriaN/Python-Roadmap/blob/master/previous_version/README.md). В итоге я устроился на работу и получил должность Junior Software Developer (2018 год). Но я решил, что нужно продолжать создавать RoadMap и довести его до логического конца. Мой путь не единственно верный, но он мой.

Содержание

  1. Мои репозитории по обучению
  2. С чего начать
    1. Установка Python
    2. Рабочее окружение
  3. Теперь пора учиться
    1. Junior
    2. Полезные ресурсы
    3. Обучение профессии
    4. Что дальше?
  4. Дополнительные материалы

Мои репозитории по обучению

Все свои материалы по обучению из различных репозиториев я решил скомпоновать в один и поместить как подпапки в Python Roadmap. (жалко, но он очень редко обновляется)
Collection of training lectures


С чего начать

Необходимо установить себе Python

  1. Для этого нужно скачать его с сайта python.org.
  2. Вам нужна IDE для работы. Список основных IDE можно увидеть на Wiki. Так же можно воспользоваться "продвинутыми" текстовыми редакторами. Мой список:
    1. PyCharm. Скачать можно с сайта JetBrains. Можно установить обе версии Professional и Community. Позже я скажу как можно получить/получать лицензию на три месяца.
    2. Visual Studio Code. Скачать можно с официального сайта: code.visualstudio.com.
    3. VSCodium. Сборка Visual Studio Code без телеметрии от Microsoft. Других отличий нет.
    4. Sublime Text 3. Скачать можно с официального сайта: sublimetext.com.
    5. Anaconda. Скачать можно с официального сайта: anaconda.com.
      • Немного о составе дистрибутива: anaconda.md

Мои рекомендации:

  1. Всех лучше для изучения подходят дистрибутивы PyCharm и Anaconda.
  2. Для удобства можно устанавливать две версии PyCharm, Professional и Community.

Сделать рабочее окружение

  1. Для создания рабочего окружения лучше всего подходит Python Virtual Environments. Прочитать можно в официальном PEP 405. Документацию можно прочитать на официальном сайте docs.python.org. Хорошая статья на python-script.com. Существуют модули, библиотеки, которые дополняют venv, но это уже сами.

    • Дополнительно: советую обратить внимание на проект PyEnv
  2. Научиться делать рабочее окружение в выбранных IDE.

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

  1. Я очень советую научиться использовать консоль.
    • для Windows:
    • для GNU\Linux:
      • Курс "Введение в Linux". В рамках представленного курса слушатели познакомятся с операционной системой Linux и её базовыми возможностями. https://stepik.org/course/73
      • TBD ...

Важно! Нет, не так, очень ВАЖНО!

Flake8 - установите его и настройте.

Flake8 — инструмент, позволяющий просканировать код проекта и обнаружить в нем стилистические ошибки и нарушения различных конвенций кода на Python. Flake8 умеет работать не только с PEP 8, но и с другими правилами, к тому же поддерживает кастомные плагины.

  1. Для начало посмотрите видео от Хитрый питон Настраиваем flake8, чтобы улучшить качество кода
  2. Потом почитайте:
    1. PEP 8 *
    2. Google Code Style Python
    3. Советы Google по кодированию на языке Python.
    4. PyCharm + flake8 = от Ilya Lebedev.
    5. The Best flake8 Extensions for your Python Project
    6. Загляните в репозиторий awesome-flake8-extensions
    7. И обратите внимание на комментарий от Ilya Lebedev:

    We use all of them in wemake-python-styleguide ... which is flake8 extension too. Here you can find the full list of violations produced by these plugins: wemake-python-stylegui

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

Теперь пора учиться

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

Начинаем с самого простого.

Возьмем большую шпаргалку по Python 3, распечатаем ее, и повесим или положим на самом видном месте.

Ссылка на файл: mementopython3-russian.pdf P.S. Она висит у меня на рабочем месте до сих пор.

А еще есть очень замечательный проект python-cheatsheet, просто кладезь полезной информации. Крайне рекомендую добавить в закладки.

А еще был подкаст "Python Junior" от MoscowPython и LearnPython, его нужно слушать или смотреть. Сейчас это просто подкаст про Python, но смотреть/слушать его нужно.

Также могу порекомендовать присоединиться к Python коммьюнити в вашем городе и к разным информационным каналам.

Telegram:

  1. https://t.me/ru_python - Уютный чат для профессионалов, занимающихся поиском питоньих мудростей.
  2. https://t.me/ru_python_beginners - Вопросы про Python для чайников. Cпам и троллинг неприемлем. Не злоупотребляйте стикерами.
  3. Если вы из Нижнего Новгорода, то вы всегда можете постучаться в RANNTS и чатик https://t.me/rannts - это Python Community of Nizhny Novgorod!

Junior

1. Программирование на Python

О КУРСЕ: Курс посвящен базовым понятиям и элементам языка программирования Python (операторы, числовые и строковые переменные, списки, условия и циклы). Курс является вводным и наиболее подойдет слушателям, не имеющим опыта написания программ ни на одном из языков программирования.

Cсылка: https://stepik.org/course/67/

Рекомендация: Выполняя задания и решая задачи вы можете получить лицензию от JetBrains на три месяца.

Затем продолжим закреплять пройденный материал с помощью следующего курса.

2. Алгоритмы: теория и практика. Методы

О КУРСЕ: В курсе будут подробно разобраны базовые алгоритмические методы: жадные алгоритмы, метод «разделяй и властвуй», динамическое программирование. Для всех алгоритмов будут математически строго доказаны корректность и оценки на время работы. Помимо теоретических основ будут рассказаны тонкости реализации алгоритмов на языках программирования C++, Java и Python.

Cсылка: https://stepik.org/course/217

3. Основы Git

О КУРСЕ: Система контроля версий Git является стандартом де-факто в деле управления исходным кодом и каждый разработчик должен понимать основы работы с ней. Задачей курса является описание наиболее важных команд и сценариев их использования.

Cсылка: https://stepik.org/course/3145/
Очень рекомендую книгу: ProGit (там же можно найти и версию на других языках)
Небольшая шпаргалка по командам из одного платного курса: https://github.com/GnuriaN/UDEMY_GIT

4. Python: основы и применение

О КУРСЕ: Курс посвящен базовым принципам языка Python и программирования в целом. Он хорошо подойдет тем, кто уже может писать простейшие программы на Python или тем, кто до этого программировал на других языках.

Cсылка: https://stepik.org/course/512/

Рекомендация: Выполняя задания и решая задачи вы можете получить лицензию от JetBrains на три месяца.

После этого можно проверить, что осталось у нас в голове. Заодно что-то освежить и немного попрактиковаться. Но перед этим уже пора познакомиться с системой контроля версий GIT.

5. Интерактивный учебник языка Питон

О Курсе: Учитесь, решая серьёзные задачи прямо в браузере. Основные плюсы:

  • Удобный визуализатор
  • Не нужно ничего устанавливать на компьютер: пишите и исполняйте код прямо в браузере
  • Отлаживайте код по шагам и смотрите за значениями переменных
  • Проверяйте правильность решения на разных входных и выходных данных
  • Визуализатор переводит и объясняет ошибки в программах
  • После решения задачи ознакомьтесь с образцовым решением

Cсылка: http://pythontutor.ru/

После этого стоит пройти еще один курс

6. Погружение в Python

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

Ссылка: https://www.coursera.org/learn/diving-in-python

Зачем? Тут даётся то, что вы еще не проходили и повторение того, что вы уже проходили. К тому же, этот курс — это начало большой программы по специализации. Но перед этим нужно познакомиться с Базами данных.

7. Алгоритмы: теория и практика. Структуры данных

О Курсе: Основная цель курса — узнать, как устроены основные структуры данных (чтобы не пользоваться их готовыми реализациями как чёрным ящиком, а точно знать, чего от реализации ожидать), и научиться выбирать подходящую структуру данных при решении заданной вычислительной задачи.

Данный курс является продолжением курса «Алгоритмы: теория и практика. Методы». Если вы не проходили этот курс, мы настоятельно рекомендуем вам пройти хотя бы его первую неделю.

Ссылка: https://stepik.org/course/1547

8. Введение в базы данных

О Курсе: Курс введения в базы данных знакомит слушателями с историей создания систем обработки структурированных данных, подходами к обработке информации, развитием моделей данных и систем управления данными. Основу курса составляет изучение и применение в типовых ситуациях средств SQL для обработки данных в SQL-СУБД. Выполнение практических задач в рамках курса предполагает использование СУБД MySQL.

Ссылка: https://stepik.org/course/551

9. Базы данных

О Курсе: Основу курса составляют изучение и применение языка SQL для создания, модификации объектов баз данных и управления данными в произвольной реляционной базе данных. Выполнение практических задач в рамках курса предполагает использование СУБД My SQL. В курсе рассматриваются этапы проектирования реляционных баз данных, правила составления запросов, основные методы индексирования данных. В курсе будут изучены вопросы использования транзакций и прав доступа к данным. Также курс дает обзор современных тенденций в области науки о данных в связи с появлением BigData. В заключении курса будут показаны сферы применения NoSQL баз данных и указаны современные подходы к обработке big data.

Ссылка: https://stepik.org/course/2614

10. Тестирование ПО: Базовый уровень

Бонус для автотестеров

О Курсе: Данный курс основан на официальной программе обучения "Сертифицированный тестировщик ПО Базового уровня" ISTQB и предназначен для подготовки к сдаче сертификационных экзаменов.
Все тестовые задания, представленные в курсе, взяты из реальных экзаменов ISTQB Foundation Level..

Ссылка: https://stepik.org/course/16478

11. Автоматизация тестирования с помощью Selenium и Python

Бонус для автотестеров

О Курсе: Это базовый курс для начинающих тестировщиков, который научит вас писать автоматизированные UI-тесты на языке программирования Python с помощью библиотеки Selenium. А еще мы рассмотрим популярные фреймворки и хорошие практики написания автотестов.

Ссылка: https://stepik.org/course/575


Вот на этом этапе я могу порекомендовать читать интересные ресурсы, смотреть видео и практиковаться.

Полезные ресурсы по Python

Ссылка: https://refactoring.guru/ru/design-patterns/python

Рекомендация: Очень полезный ресурс, который раскажет о "Паттернах проектирования" на Python с примерами.


Как научиться разработке на Python: новый видеокурс Яндекса

Для изучения курса нужно знать основы Python и понимать, как приложения развёртываются на серверах. Мы ждём, что вы умеете делать запросы к базам данных и знаете, как создаются веб‑приложения, — хотя бы на начальном уровне.

Ссылка: https://habr.com/ru/company/yandex/blog/498856/

Рекомендация: Обратите внимание на дополнительные ссылки к видео.

Программирование на Python от CSC

Ссылка: https://compscicenter.ru/courses/python/2015-autumn/classes/

Рекомендация: Смотреть все. От начала до конца. Можно и нужно конспектировать то, что вы видите. Это будет очень полезно. В этом видео вы увидите то, что уже проходили, но там вам покажут некоторые нюансы того, как это происходит.

Комментарии: В настоящий момент (осень 2018 г.) на CSC идет новый курс лекций https://compscicenter.ru/courses/python/2018-autumn/classes/ но .... (дополнения в 2019 году) смотрите курс 2015 =)

Курс информатики на Python 3 от МФТИ

Ссылка: http://judge.mipt.ru/mipt_cs_on_python3/

Рекомендация: Смотреть на быстром просмотре. Отмечать интересные моменты и прорабатывать их.

Язык программирования Python от UNEEX

Ссылка: https://uneex.ru/LecturesCMC/PythonIntro2014 Ссылка: https://uneex.ru/LecturesCMC/PythonIntro2017

Рекомендации: Смотреть на быстром просмотре. Отмечать интересные моменты и прорабатывать их.

Видео с meetup'ов

python-videos-ru-2018

Ссылка: https://github.com/hH39797J/python-videos-ru-2018

Видео от Geekbrains

Ссылка: geekbrains_events.md

Видео от OTUS

Ссылка: Открытые уроки по Python


Дальше мы поговорим о специализациях (большие курсы по обучению). Эти курсы уже платные, и идти на них или нет - решать вам. В интернете очень много споров о том, нужны или не нужны курсы, ходить на них или нет. Мнений много. *Мое мнение: На курсы нужно ходить, когда у тебя уже есть определенный багаж знаний и возможность его использовать. Что дадут вам курсы:

  1. Помогут разложить информацию по полочкам.
  2. Дадут возможность познакомиться с людьми которые, так же как и вы, изучают Python.
  3. Развивать Soft Skills.

Обучение професии

1. Geekbrains.ru

На Geekbrains.ru сейчас (осень 2018 г.) есть два курса:

GeekUniversity

Ссылка: https://geekbrains.ru/geek_university/python

Программист Python

Ссылка: https://geekbrains.ru/professions/python_developer

Стоимость постоянно меняется. Бывают скидки.

2. LearnPython от MoscowPython

Ссылка: https://learn.python.ru

3. Специализация Программирование на Python от Coursera

Ссылка: https://www.coursera.org/specializations/programming-in-python

4. OTUS

Тут уже для продвинутых Junior.

Ссылка: https://otus.ru/lessons/razrabotchik-python/

Что дальше?

А дальше нужно определить направление, в котором вам интересно будет развиваться.

Дополнительные обучающие материалы

1. Обработка изображений

О Курсе: Курс начального уровня учит обработке изображений с помощью языка программирования Python. В курсе рассматриваются: устройство цифровых изображений, коррекция яркости и цвета изображения, фильтрация изображений, частотный анализ и устройство формата JPEG. Видео сопровождаются тестами и практическими заданиями на программирования, которые проверяются автоматически.

Ссылка: https://stepik.org/course/1280

2. Нейронные сети и компьютерное зрение

О Курсе: В этом курсе вы сделаете первые шаги в области компьютерного зрения с методами машинного обучения. Как мы этого добьёмся?

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

Ссылка: https://stepik.org/course/50352

3. Курс Deep Learning (2019-2020): базовый поток

О Курсе: познакомить слушателей с теорией и практикой глубокого обучения (нейронных сетей) в интерактивном формате. Мы ведём как очные, так и заочные занятия. Cайт: dlschool.org Группа ВК: https://vk.com/dlschool_mipt

Ссылка: https://stepik.org/course/57839

4. Курс Deep Learning (2019-2020): продвинутый поток

О Курсе: познакомить слушателей с теорией и практикой глубокого обучения (нейронных сетей) в интерактивном формате. Мы ведём как очные, так и заочные занятия. Cайт: dlschool.org Группа ВК: https://vk.com/dlschool_mipt

Ссылка: https://stepik.org/course/57457


./img/roadmap.png Нашел на просторах интернета. Точного автора не знаю.

А это моя версия для выбора направлений:

./img/roadmap.png

Owner
Ruslan Prokhorov
Knowledge is not redundant if they have something in common. #Python, #ITSec, #Dev, #QAA, #Ops, #DevOps
Ruslan Prokhorov
A Trace Explorer for Reverse Engineers

Tenet - A Trace Explorer for Reverse Engineers Overview Tenet is an IDA Pro plugin for exploring execution traces. The goal of this plugin is to provi

1k Jan 02, 2023
chiarose(XCR) based on chia(XCH) source code fork, open source public chain

chia-rosechain 一个无耻的小活动 | A shameless little event 如果您喜欢这个项目,请点击star 将赠送您520朵玫瑰,可以去 facebook 留下您的(xcr)地址,和github用户名。 If you like this project, please

ddou123 376 Dec 14, 2022
poetry2nix turns Poetry projects into Nix derivations without the need to actually write Nix expressions

poetry2nix poetry2nix turns Poetry projects into Nix derivations without the need to actually write Nix expressions. It does so by parsing pyproject.t

Nix community projects 405 Dec 29, 2022
tg-nearby Trilateration of nearby Telegram users as described in my corresponding article.

tg-nearby Trilateration of nearby Telegram users as described in my corresponding article. Setup If you want to toy with the code in this repository

Maximilian Jugl 75 Dec 26, 2022
An execution framework for systematic strategies

WAGMI is an execution framework for systematic strategies. It is very much a work in progress, please don't expect it to work! Architecture The Django

Rich Atkinson 10 Mar 28, 2022
A good Tool to comment on xmw

A good Tool to comment on xmw

1 Feb 10, 2022
In this project, we are going to display the battery notification and the time left for the battery to drain out using the battery capacity value.

In this project, we are going to display the battery notification and the time left for the battery to drain out using the battery capacity value.

Ritoban Biswas 1 Dec 20, 2021
A collection of existing KGQA datasets in the form of the huggingface datasets library, aiming to provide an easy-to-use access to them.

KGQA Datasets Brief Introduction This repository is a collection of existing KGQA datasets in the form of the huggingface datasets library, aiming to

Semantic Systems research group 21 Jan 06, 2023
A tool to build reproducible wheels for you Python project or for all of your dependencies

asaman: Amra Saman (আমরা সমান) This is a tool to build reproducible wheels for your Python project or for all of your dependencies. What this means is

Kushal Das 14 Aug 05, 2022
Just a little benchmark for scrapper PC's

PopMark Just a little benchmark for scrapper PC's This benchmark is for old computer that dont support other benchmark because of support. Like lack o

Garry 1 Nov 24, 2021
A Way to Use Python, Easier.

PyTools A Way to Use Python, Easier. How to Install Just copy this code, then make a new file in your project directory called PyTools.py, then paste

Kamran 2 Aug 15, 2022
A tool for fixing inconsistent timestamp metadata (atime, ctime, and mtime).

Mtime Fixer Mtime Fixer is a tool for fixing inconsistent timestamp metadata (atime, ctime, and mtime). Sometimes timestamp metadata of folders are in

Halit Şimşek 2 Jan 11, 2022
Rufus port to linux, writed on Python3

Rufus-for-Linux Rufus port to linux, writed on Python3 Программа будет иметь тот же интерфейс что и оригинал, и тот же функционал. Программа создается

10 May 12, 2022
Forward RSS feeds to your email address, community maintained

Getting Started With rss2email We highly recommend that you watch the rss2email project on GitHub so you can keep up to date with the latest version,

248 Dec 28, 2022
0CD - BinaryNinja plugin to introduce some quality of life utilities for obsessive compulsive CTF enthusiasts

0CD Author: b0bb Quality of life utilities for obsessive compulsive CTF enthusia

12 Sep 14, 2022
This is a vscode extension with a Virtual Assistant that you can play with when you are bored or you need help..

VS Code Virtual Assistant This is a vscode extension with a Virtual Assistant that you can play with when you are bored or you need help. Its currentl

Soham Ghugare 6 Aug 22, 2021
A module that can manage you're gtps

Growtopia Private Server Controler Module For Controle Your GTPS | Build in Python3 Creator Information

iFanpS 6 Jan 14, 2022
ROS Foxy + Raspi + Adafruit BNO055

ROS Foxy + Raspi + Adafruit BNO055

Ar-Ray 3 Nov 04, 2022
Reference management solution using Python and Notion.

notion-scholar Reference management solution using Python and Notion. The main idea of this app is to allow to furnish a Notion database using a BibTe

Thomas Hirtz 69 Dec 21, 2022
Linux Pressure Stall Information (PSI) Status App

Linux Pressure Stall Information (PSI) Status App psistat is a simple python3 program to display the PSIs and to capture/display exception events. psi

Joe D 3 Sep 18, 2022