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
EDF R&D implementation of ISO 15118-20 FDIS.

EDF R&D implementation of ISO 15118-20 FDIS ============ This project implements the ISO 15118-20 using Python. Supported features: DC Bidirectional P

30 Dec 29, 2022
A simple bot that will help you in your learning and make it more fun.

hyperskill-SimpleChattyBot-python A simple bot that will help you in your learning and make it more fun. Syntax bot.py Stages Stage #1: Zuhura Bot we

1 Nov 09, 2021
La version open source du bot Discord Sblerboy

Sblerboy-Open-Source La version open source du bot Discord Sblerboy Sblerboy est un bot Discord permettant de jouer à des jeux de Gameboy directement

15 Nov 19, 2022
reproduces experiments from

Installation To enable importing of modules, from the parent directory execute: pip install -e . To install requirements: python -m pip install requir

Meta Research 15 Aug 11, 2022
Advanced Keylogger in Python

Advanced Keylogger in Python Important Disclaimer: The author will not be held r

Suvanth Erranki 1 Feb 07, 2022
Code and data for learning to search in local branching

Code and data for learning to search in local branching

Defeng Liu 7 Dec 06, 2022
Kolibri: the offline app for universal education

Kolibri This repository is for software developers wishing to contribute to Kolibri. If you are looking for help installing, configuring and using Kol

Learning Equality 564 Jan 02, 2023
Subscribe, listen and (in the future) download your favorite podcasts, quickly and easily.

Minimal Podcasts Player https://github.com/son-link/minimal-podcasts-player Subscribe, listen and (in the future) download your favorite podcasts, qui

Alfonso Saavedra 14 Nov 11, 2022
Launcher program to select which version of the Q-Sys software to launch.

QSC-QSYS Launcher Launcher program to select which version of the Q-Sys software to launch. Instructions To use the application simply save the "Q-Sys

Zach Lisko 2 Sep 28, 2022
A simple Programming Language

R.S.O.C. A custom built programming language About The Project R.S.O.C. is a custom built programming language very similar to a low-level 8085 progra

Ravi Maurya 17 Sep 13, 2022
🤞 Website-Survival-Detection

- 🤞 Website-Survival-Detection It can help you to detect the survival status of the website in batches and return the status code! - 📜 Instructions

B0kd1 4 Nov 14, 2022
the classic version Of torrentleechx #Unmaintained #Archived

TorrentleechX-Classic Old Modified Version Repo #Unmaintained #Archived for support join here working example group Leech Here For Any Issues/Imroveme

XcodersHub 18 Jan 30, 2022
Python script for diving image data to train test and val

dataset-division-to-train-val-test-python python script for dividing image data to train test and val If you have an image dataset in the following st

Muhammad Zeeshan 1 Nov 14, 2022
A toy repo illustrating a minimal installable Python package

MyToy: a minimal Python package This repository contains a minimal, toy Python package with a few files as illustration for students of how to lay out

Fernando Perez 19 Apr 24, 2022
DSG - Source code for Digital Scholarship Grant project.

DSG Source code for Dr. Stephanie Tsang's Digital Scholarship Grant project. Work performed by Mr. Wang Minghao while as her Research Assistant. The s

1 Jan 04, 2022
Tools, guides, and resources for blockchain analysts to interface with data on the Ergo platform.

Ergo Intelligence Objective Provide a suite of easy-to-use toolkits, guides, and resources for blockchain analysts and data scientists to quickly unde

Chris 5 Mar 15, 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 gamey, snakey esoteric programming language

Snak Snak is an esolang based on the classic snake game. Installation You will need python3. To use the visualizer, you will need the curses module. T

David Rutter 3 Oct 10, 2022
TurtleBot Control App - TurtleBot Control App With Python

TURTLEBOT CONTROL APP INDEX: 1. Introduction 2. Environments 2.1. Simulated Envi

Rafanton 4 Aug 03, 2022
Tensorboard plugin 3d with python

tensorboard-plugin-3d Overview In this example, we render a run selector dropdown component. When the user selects a run, it shows a preview of all sc

KitwareMedical 26 Nov 14, 2022