Python Roadmap
Я решил сделать что-то вроде дорожной карты (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 и довести его до логического конца. Мой путь не единственно верный, но он мой.Содержание
Мои репозитории по обучению
Все свои материалы по обучению из различных репозиториев я решил скомпоновать в один и поместить как подпапки в Python Roadmap. (жалко, но он очень редко обновляется)
Collection of training lectures
С чего начать
Необходимо установить себе Python
- Для этого нужно скачать его с сайта python.org.
- Вам нужна IDE для работы. Список основных IDE можно увидеть на Wiki. Так же можно воспользоваться "продвинутыми" текстовыми редакторами. Мой список:
- PyCharm. Скачать можно с сайта JetBrains. Можно установить обе версии
Professional
иCommunity
. Позже я скажу как можно получить/получать лицензию на три месяца. - Visual Studio Code. Скачать можно с официального сайта: code.visualstudio.com.
- VSCodium. Сборка Visual Studio Code без телеметрии от Microsoft. Других отличий нет.
- Sublime Text 3. Скачать можно с официального сайта: sublimetext.com.
- Anaconda. Скачать можно с официального сайта: anaconda.com.
- Немного о составе дистрибутива: anaconda.md
- PyCharm. Скачать можно с сайта JetBrains. Можно установить обе версии
Мои рекомендации:
- Всех лучше для изучения подходят дистрибутивы PyCharm и Anaconda.
- Для удобства можно устанавливать две версии PyCharm,
Professional
иCommunity
.
Сделать рабочее окружение
-
Для создания рабочего окружения лучше всего подходит
Python Virtual Environments
. Прочитать можно в официальном PEP 405. Документацию можно прочитать на официальном сайте docs.python.org. Хорошая статья на python-script.com. Существуют модули, библиотеки, которые дополняют venv, но это уже сами.- Дополнительно: советую обратить внимание на проект PyEnv
-
Научиться делать рабочее окружение в выбранных IDE.
Виртуальное окружение очень хорошо помогает в процессе обучения. Вы можете столкнуться с тем, что вам захочется поэкспериментировать с библиотеками или модулями, и, чтобы не засорять рабочее
окружение, вы будете под каждую задачу создавать отдельный проект со своими модулями.
- Я очень советую научиться использовать консоль.
- для Windows:
- список команд Windows ( Windows CMD ) с описанием и примерами: https://ab57.ru/cmdlist.html
- настройка командной строки Windows: https://ab57.ru/cmdtweak.html
- Работа с командной строкой ( CMD ) Windows: https://ab57.ru/cmdtricks.html (тут есть HotKey)
- командные файлы Windows: https://ab57.ru/cmd.html
- для GNU\Linux:
- Курс "Введение в Linux". В рамках представленного курса слушатели познакомятся с операционной системой Linux и её базовыми возможностями. https://stepik.org/course/73
- TBD ...
- для Windows:
Важно! Нет, не так, очень ВАЖНО!
Flake8 - установите его и настройте.
Flake8 — инструмент, позволяющий просканировать код проекта и обнаружить в нем стилистические ошибки и нарушения различных конвенций кода на Python. Flake8 умеет работать не только с PEP 8, но и с другими правилами, к тому же поддерживает кастомные плагины.
- Для начало посмотрите видео от Хитрый питон Настраиваем flake8, чтобы улучшить качество кода
- Потом почитайте:
- PEP 8 *
- Google Code Style Python
- Советы Google по кодированию на языке Python.
- PyCharm + flake8 =
❤ от Ilya Lebedev. - The Best flake8 Extensions for your Python Project
- Загляните в репозиторий awesome-flake8-extensions
- И обратите внимание на комментарий от Ilya Lebedev:
We use all of them in
wemake-python-styleguide
... which isflake8
extension too. Here you can find the full list of violations produced by these plugins: wemake-python-stylegui
В общем начните использовать Линтеры с самого начала обучения! Это реально очень важно для вас и для команды, в которой вы в дальнейшем будете работать.
Теперь пора учиться
С чего начать учиться? Я считаю, что самый простой способ это использовать онлайн курсы. Начинать нужно с простых, а дальше переходить к более сложным.
Начинаем с самого простого.
Ссылка на файл: mementopython3-russian.pdf P.S. Она висит у меня на рабочем месте до сих пор.
А еще есть очень замечательный проект python-cheatsheet, просто кладезь полезной информации. Крайне рекомендую добавить в закладки.
А еще был подкаст "Python Junior" от MoscowPython и LearnPython, его нужно слушать или смотреть. Сейчас это просто подкаст про Python, но смотреть/слушать его нужно.
Также могу порекомендовать присоединиться к Python коммьюнити в вашем городе и к разным информационным каналам.
Telegram:
- https://t.me/ru_python - Уютный чат для профессионалов, занимающихся поиском питоньих мудростей.
- https://t.me/ru_python_beginners - Вопросы про Python для чайников. Cпам и троллинг неприемлем. Не злоупотребляйте стикерами.
- Если вы из
Нижнего Новгорода
, то вы всегда можете постучаться в 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
Дальше мы поговорим о специализациях (большие курсы по обучению). Эти курсы уже платные, и идти на них или нет - решать вам. В интернете очень много споров о том, нужны или не нужны курсы, ходить на них или нет. Мнений много. *Мое мнение: На курсы нужно ходить, когда у тебя уже есть определенный багаж знаний и возможность его использовать. Что дадут вам курсы:
- Помогут разложить информацию по полочкам.
- Дадут возможность познакомиться с людьми которые, так же как и вы, изучают Python.
- Развивать 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
Нашел на просторах интернета. Точного автора не знаю.
А это моя версия для выбора направлений: