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
Extra scripts to improve user experience related to OpenTaiko

OpenTaiko-Utils Extra scripts to improve user experience related to OpenTaiko osu2tja /!\ IMPORTANT NOTE /!\ Converted charts that aren't yours are fo

2 Dec 25, 2022
Blender addon - Breakdown in object mode

Breakdowner Breakdown in object mode Download latest Demo Youtube Description Same breakdown shortcut as in armature mode in object mode Currently onl

Samuel Bernou 4 Mar 30, 2022
A script for creating battle animations in FEGBA format.

AA2 Made by Huichelaar. I heavily referenced FEBuilderGBA. I also referenced circleseverywhere's Animation Assembler. This is also where I took lzss.p

2 May 31, 2022
A simple program which gets a file(CSV/Excel) with tasks and creates different variants

TestMakerProject A simple program which gets a file(CSV/Excel) with tasks and creates different variants The main program is QTengine.py You only have

George 3 Nov 18, 2021
use Notepad++ for real-time sync after python appending new log text

FTP远程log同步工具 使用Notepad++配合来获取实时更新的log文档效果 适用于FTP协议的log远程同步工具,配合MT管理器开启FTP服务器使用,通过Notepad++监听文本变化,更便捷的使用电脑查看方法注入打印后的信息 功能 过滤器 对每行要打印的文本使用回调函数筛选,支持链式调用

Liuhaixv 1 Oct 17, 2021
AIST++ API This repo contains starter code for using the AIST++ dataset.

Explainability for Vision Transformers (in PyTorch) This repository implements methods for explainability in Vision Transformers

Google 260 Dec 30, 2022
Graphene Metanode is a locally hosted node for one account and several trading pairs, which uses minimal RAM resources.

Graphene Metanode is a locally hosted node for one account and several trading pairs, which uses minimal RAM resources. It provides the necessary user stream data and order book data for trading in a

litepresence 5 May 08, 2022
Script to work around some quirks of the blender obj importer

ObjFix 1.0 (WIP) Script to work around some quirks of the blender obj importer Installation Download this repo In Blender, press "Edit" on the top-bar

Red_3D 4 Nov 20, 2021
Github Star Tracking app with Streamlit

github-star-tracking-python-app Github Star Tracking app with Streamlit #8daysofstreamlit How to run it locally? Clone or Download & Unzip the Repo En

amrrs 4 Sep 22, 2022
My HA controller for veg and flower rooms

HAGrowRoom My HA controller for veg and flower rooms I will do my best to keep this updated as I change, add and improve. System heavily uses custom t

4 May 25, 2022
DNA Storage Simulator that analyzes and simulates DNA storage

DNA Storage Simulator This monorepository contains code for a research project by Mayank Keoliya and supervised by Djordje Jevdjic, that analyzes and

Mayank Keoliya 3 Sep 25, 2022
Morth - Stack Based Programming Language

Morth WARNING! THIS LANGUAGE IS A WORKING PROGRESS. THIS IS JUST A HOBBY PROJECT

Dominik Danner 2 Mar 05, 2022
Python 101 Forever

🚀 Python 101 Forever 🚀 Official Python 101 Forever GitHub repository. START HERE - CHECK README SUBSCRIBE FOR UPDATES HERE Sponsors Contac

Hack Bulgaria 58 Nov 30, 2022
Semantic Data Management - Property Graphs 📈

SDM - Lab 1 @ UPC 👨🏻‍💻 Table of contents Introduction Property Graph Dataset 1. Introduction This repo is all about what we have done in SDM lab 1

Mohammad Zain Abbas 1 Mar 20, 2022
A VirtualBox manager with interactive mode

A VirtualBox manager with interactive mode

Luis Gerardo 1 Nov 21, 2021
An unofficial opensource Pokemon cursor theme for Windows and Linux.

pokemon-cursor An unofficial opensource Pokemon cursor theme for Windows and Linux. Cursor Sizes 22 24 28 32 40 48 56 64 72 80 88 96 Colors Quick inst

Kaiz Khatri 72 Dec 26, 2022
Weakly-Divisable - Takes an interger and seee if it is weakly divisible by seven

Weakly Divisble Project by Diana Arce-Hernandez, Ryan McAlpine, and Rommel Ravan

Diana Arce-Hernandez 1 Jan 12, 2022
Get the stats of a (or more) Hypixel player(s)

Hypixel_Stats Get the statistics of a (or more) Hypixel player(s) Who needs this? Everyone who plays a lot of Minecraft and often plays on mc.hypixel.

Finnomator 1 Feb 12, 2022
Assignment for python course, BUPT 2021.

pyFuujinrokuDestiny Assignment for python course, BUPT 2021. Notice username and password must be ASCII encoding. If username exists in database, syst

Ellias Kiri Stuart 3 Jun 18, 2021
A tool for checking if the external data used in Flatpak manifests is still up to date

Flatpak External Data Checker This is a tool for checking for outdated or broken links of external data in Flatpak manifests. Motivation Flatpak apps

Flathub 76 Dec 24, 2022