Дорожная карта для Python-разработчика
Python — востребованный язык программирования в России. Например, только на hh.ru опубликовано свыше 10 000(!) вакансий, где требуется знание Пайтона. Язык активно обновляется, его применяют практически во всех сферах деятельности.
Для новичков изучения Python — это быстрый и простой старт в IT-карьере. В этой статье я помогу вам изучить основы этого языка программирования через roadmap, который поможет вам выбрать правильное направление в обучении.
Все учебные материалы бесплатные, большую часть я сам в своё время я использовал, когда начинал изучать языки программирования. Итак, начнём.
Для начала прочитайте обзорную статью на professii.su про профессию Python-разработчика , где есть не только интересная информация по языку, но и полезные советы по поиску работы, но и пошаговое практическое руководство по обучению с нуля. Думаю, это будет вам полезно в начале обучения. Идём дальше, изучаем всё по порядку.
Основы языка:
- Условный оператор if.
- Циклы, кортежи.
- Числа, строки, списки.
- Индексы и срезы.
- Словари, множества, функции.
- Исключения.
- Файлы.
Ссылки для обучения:
- «Поколение Python»: курс для начинающих, отличный курс для абсолютных новичков, сам прошёл и вам советую.
- Алгоритмы и структуры данных на Python 3, видеолекции от Тимофея Хирьянова.
- Книга «Укус Питона», перевод здесь. Одна из самых лучших книг для начинающих разработчиков.
После изучения этих материалов вы освоите большую часть базы по Python. Двигаемся дальше.
Объектно-ориентированное программирование:
- Классы, объекты.
- Инкапсуляция, наследование, полиморфизм.
- Перегрузка операторов.
- Декораторы.
- Паттерны проектирования.
Ссылки для обучения:
- Полный видеокурс уроков обучения ООП Python.
- Основы ООП. Введение в паттерны проектирования,
курс на Степике.
Функциональное программирование:
- Функции, как объекты первого класса.
- Рекурсия.
- Функции высшего порядка.
- Чистые функции.
- Lambda Expressions.
Ссылки для обучения:
- Лекция по функциональному программированию в текстовом виде.
- Функциональное программирование на Python, урок от Тимофея Хирьянова.
Модули, библиотеки:
- Пакеты.
- Модули.
- Инструкция from...import.
- Относительный и абсолютный импорт.
- Виртуальные окружения, venv.
Ссылки для обучения:
- Видеокурс по модулям в Python.
- Список полезных библиотек на Хабре.
- Самоучитель Python по модулям на русском языке.
- Документация по библиотекам Python с примерами.
Работаем с файлами:
- Операции с каталогами и файлами.
- Создание директорий.
- Методы работы с файлами.
- CSV / JSON / XML-файлы.
Ссылки для обучения:
- Видеоурок по работе с файлами в Python.
- Видеолекция от PythonToday "Работа с CSV файлами в Python | Запись данных в CSV файл.
Графические интерфейсы (GUI):
- Tkinter.
- PyQt.
Ссылки для обучения:
- Видеокурс «PyQt5 Python — Разработка графических интерфейсов».
- Видеокурс Tkinter Python от egoroff_channel.
- Хорошее руководство по PyQt5.
- Большое руководство по Tkinter.
Регулярные выражения:
- Основы синтаксиса.
- Шаблоны.
- Квантификаторы.
- Пересечение подстрок.
- Перечисления.
- Скобочные группы.
Ссылки для обучения:
- Видеоуроки от selfedu.
- Пост на Хабре.
- Курс на степике по регулярным выражениям в Python.
Тестирование:
- Модульное тестирование.
- Интеграционное тестирование.
- Системное тестирование.
- Assert.
- Отладка.
Ссылки для обучения:
- Отличный пост по тестированию на Хабре.
- Видео по юнит-тестированию.
- Статья про основы тестирования в Python.
GIT:
- Фиксация изменений.
- Файловая система.
- Удаленные репозитории.
- Ветвление.
Ссылки для обучения:
- Учебник по Git.
- Пост на Хабре.
- Самоучитель по GIT.
Оптимизация:
- Память.
- Дебаг.
- Логирование.
- Профилирование.
- Наборы, конкатенация строк.
Ссылки для обучения:
- Видеоуроки по профилированию.
- Годный пост на Хабре.
- Видео про рефакторинг.
- Статья «Python & оптимизация времени и памяти».
Работа с потоками:
- Многопоточность.
- Синхронизация потоков.
Ссылки для обучения:
- Глава из книги «Asyncio в Python 3».
- Способы реализации параллельных вычислений в программах на Python.
- Видеокурс по модулям Threading и Multiprocessing.
- Видео по библиотеке asyncio и асинхронному коду.
Базы данных:
- Реляционные и нереляционные базы данных.
- Язык SQL.
- ORM.
Ссылки для обучения:
- Курс по основам баз данных.
- Плейлист с уроками по базам данных.
- Основы языка SQL.
- Учебник по SQL.
Сетевое программирование на Python:
- Программирование сокетов.
- Сокеты домена Unix и сетевые интерфейсы.
- Протоколы электронной почты, FTP и CGI программирование.
Ссылки для обучения:
- Руководство по программированию сокетов на Python.
- Книга рецептов сетевого программирования Python.
- Большая подборка видеоуроков по Python для сетевых инженеров.
Развертывание:
- Виртуальные среды.
- Пакеты.
- CI/CD.
- Docker.
Ссылки для обучения:
- Пост «Создание виртуальных окружений и установка библиотек для Python 3 в IDE PyCharm».
- Видеоурок по CI/CD + наглядные примеры.
- Руководство по CI/CD в GitLab для (почти) абсолютного новичка.
- Docker — самый простой и понятный туториал.
- Видеоплейлист по Docker — уроки от А до Я.
Дополнительно:
- Интерфейс командной строки.
- API.
- Сериализация и десериализация объектов Python.
- Веб-вёрстка: HTML/CSS, Django, BeautifulSoup.
- Анализ данных: NumPy, Pandas.
Ссылки для обучения:
- Статья «Пишем интерфейсы командной строки в Python как профи».
- Пост по сериализации и десериализации объектов.
- Курс «SPA сайт на Django Rest Framework и NuxtJS».
- Веб-скраппинг с помощью BeautifulSoup — пошаговое руководство.
- Курс по машинному обучению.
- Видеоуроки по NumPy.
- Курс по обработке данных в Python Pandas.
Кроме этого понадобятся важные знания и навыки, которые нужно постоянно развивать по мере накопления опыта.
Структуры данных и алгоритмы:
- Рекурсия.
- Комбинаторика.
- Сортировка объектов.
- Динамическое программирование.
- Списки и кортежи.
- Строки и файлы.
- Множества, стеки, очереди, классы и объекты.
Ссылки для обучения:
- Курс для тренировок решения алгоритмических задач по алгоритмам и структурам данных.
- Видеоурок по рекурсии.
- Видео по алгоритму Кнута-Морриса-Пратта.
- Гайд «Алгоритмы и структуры данных на Python + 14 примеров».
Критическое мышление: разбитие задачи на более мелкие, развитие, тренировка.
Ссылки для обучения:
- Курс «Основы критического мышления и практики аргументации».
- Пост на Хабре «Критическое мышление 101».
Жизненный цикл программного обеспечения (SDLC):
- Сбор и анализ требований.
- Разработка документации.
- Проектирование программного обеспечения.
- Прохождение различных тестов, отладок.
- Гибкая методология разработки.
Ссылки для обучения:
- Видеокурс по архитектуре ПО.
- AGILE. Вводный курс.
Качество кода:
- Best practices.
- PEP8.
- Разработка через тестирование.
- Рефакторинг программного кода.
Ссылки для обучения:
- PEP 8 — руководство по написанию кода на Python.
- Пост про повышение качества кода.
- Гайд «Линтеры в Python».
Документация и совместная разработка:
- Jira.
- Работа в команде с применением Git.
- Написание краткой точной документации.
Ссылки для обучения:
- Документирование кода в Python.
- Курс «Jira: ведение задач на электронных досках».
Далее обучаемся постоянно, не останавливаемся:
- Статьи, учебники, курсы.
- Отслеживание обновлений языке и смежных технологиях.
- Изучение новых подходов и практик в разработке ПО.
Больше ссылок по Python:
- HackerRank, задачи по Python.
- Интерактивный тренажер.
- Адаптивный тренажер на Степике.
- Много интересных задач по Python на leetcode.com.
- Pythontutor.ru — хороший курс по программированию с нуля.
- Хендбук по Python на Яндексе.
Книги:
- Изучаем Python. Марк Лутц.
- Изучаем Python: программирование игр, визуализация данных, веб-приложения. Мэтиз Э.
- Программирование на Python 3. Подробное руководство. Марк Саммерфилд.
- Совершенный код. Стив Макконнелл.
Важные советы начинающим программистам:
- Пиши код каждый день. Нет ничего лучше, чем постоянная практика. Пиши код каждый день, даже если это всего лишь небольшой код. Это поможет тебе улучшить свои навыки и сохранить мотивацию.
- Не бойся ошибаться. Ошибки — это часть процесса обучения. Если что-то не работает, не отчаивайся. В конце концов, каждый программист когда-то делал ошибки, даже Senior’ы ошибаются.
- Ставь цели. Цели помогают тебе оставаться на правильном пути и продвигаться вперед. Устанавливай конкретные и измеримые цели, такие как написание определенного количества строк кода за неделю или создание небольшой программы.
- Ищи поддержку. Обучение — это трудный и одиночный процесс. Но это не означает, что тебе нужно делать все самостоятельно. Ищи людей, которые находятся в той же ситуации, что и ты, и объединяйтесь вместе. Общайся на форумах, в социальных сетях или присоединяйтесь к группам в мессенджерах. Вместе вы сможете поддерживать друг друга и добиваться общих целей. Например, ты можешь присоединиться к группе в Telegram, где люди общаются на тему программирования на Python и делятся опытом.
- Помни, что твой навык — это твоя собственность. В процессе обучения ты развиваешь умения и навыки, которые тебе останутся на всю жизнь. Твой навык программирования — это нечто, что никто не сможет забрать у тебя. Поэтому продолжай учиться и развиваться, и ты всегда будешь ценным специалистом.
- Найди проект, который тебе действительно интересен. Работать над проектом, который тебе неинтересен, будет трудно и утомительно. Ищи проекты, которые могут быть полезны тебе лично, или же темы, которые тебя вдохновляют.
- Не забывай про баланс. Обучение и работа могут быть очень трудоемкими, и иногда нам кажется, что мы должны работать без остановки. Но не забывай про свое здоровье и личную жизнь. Помни, что баланс между работой и личной жизнью поможет тебе сохранить энергию и мотивацию в долгосрочной перспективе.
- Изучай чужой код. Чтение кода других разработчиков может помочь тебе узнать новые подходы, паттерны и стандарты программирования. Изучай код на Github, где разработчики делятся своими проектами.
Всем успехов, дерзайте!