- Мне 24. Работаю по 12 часов, но хочу накопить и начать программирование Python, сколько времени займет до уровня Junior, в свободное время?
- Изучаем Python за 6 месяцев. Подробный план обучения
- Когда я начал изучать питон, у меня возникло несколько вопросов:
- Вкратце, на мой взгляд, необходимо знать следующие темы:
- Основы (3 месяца)
- Введение в алгоритмы (2 недели)
- Объектно-ориентированное программирование (3 недели)
- Конкурентность (2 недели и больше)
- Тестирование кода (1 неделя)
- Больше продвинутых тем (3 недели)
- Best practices (1 неделя и больше)
- Что в итоге
- Что дальше
- Дополнительные источники
Мне 24. Работаю по 12 часов, но хочу накопить и начать программирование Python, сколько времени займет до уровня Junior, в свободное время?
Учитывая вашу пометку про 12-часовой рабочий день, вам следует сразу реалистично подойти к вашей идее — вряд ли вам удастся больше 2 часов в рабочий день отдавать учёбе, и реально вы сможете практиковаться только в выходные.
Очень многое зависит от вашей мотивации и того, как быстро вы сформируете в голове нужные концепции. Постарайтесь как можно раньше определиться с одним конкретным направлением что вы будете писать на питоне: веб-приложения, анализ данных, научное ПО типа моделирования химических процессов, какие-нибудь популярные сегодня классификаторы на основе нейронных сетей, генеративное искусство, скрипты для автоматизации других программ, ещё что-то. Не учите «просто» питон, ваша первая задача — писать реальные приложения, для этого потратьте сразу на старте некоторое время, чтобы оценить, что вообще люди делают на питоне. Я пишу всё это, потому что у вас в вопросе написано «программирование Python», без конкретики, а обучение концепциям предметной области это половина всего обучения программированию, если не больше. Сам синтаксис конкретного языка станет малозначимой деталью в определённый момент.
Конкретно про время, возьмём конкретный пример курса по веб-разработке. Специалисты, которые собирали курс по питону на Яндекс.Практикуме, выделили на него 9 месяцев и я по своему опыту разработчика ПО считаю, что это довольно реалистичный срок, учитывая содержание курса. Возможно, даже, оптимистичный. Там первый самый, «вводный» раздел оценён в 20 часов — по 2 часа в день вы пройдёте его за две недели.
Вопрос в том, хотите ли вы идти именно в веб-разработку. Но в любом случае, вам нужно рассчитывать на то, что обучение и практика у вас займёт не дни, не недели, а месяцы. Это нормально.
Изучаем Python за 6 месяцев. Подробный план обучения
Простой и красивый синтаксис, множество библиотек под самые разные задачи и большое комьюнити делают Python одним из самых популярных языков программирования на сегодняшний день, который активно используется в data science и машинном обучении, веб-разработке и других областях программирования.
Когда я начал изучать питон, у меня возникло несколько вопросов:
- какие темы необходимо изучить;
- насколько это будет сложно;
- сколько это займёт времени;
- где найти хорошие источники информации?
Вкратце, на мой взгляд, необходимо знать следующие темы:
- стандартные типы данных;
- условия;
- циклы;
- функциональное программирование;
- работа с файлами;
- регулярные выражения;
- основы алгоритмов;
- объектно-ориентированное программирование (ООП);
- конкурентность;
- тестирование кода;
- полезные библиотеки типа itertools, collections и тому подобное.
Если вы прежде не занимались программированием, то поначалу будет сложновато, но потом мозги «настроятся» в нужное русло и будет нормально.
На этом преамбула окончена и переходим непосредственно к плану обучения.
Основы (3 месяца)
Предлагаю начать с прочтения книги Билла Любановича «Простой Python. Современный стиль программирования» (второе издание) чтобы иметь базовое представление о том, что такое программирование и как выглядит код на Python.
Далее переходим к курсам на платформе Stepik:
Очень хорошие курсы с морем задач, которые вас познакомят с основными типами данных, условиями, циклами, функциями и работой с файлами.
После следует приступить к плейлисту декораторы канала luchanos и для практики пройти на Stepik «Декораторы в Python»: часть 1 и часть 2.
Ещё по желанию можно пройти регулярные выражения: курс, учебник и практика.
Введение в алгоритмы (2 недели)
Вообще, о том, как шатать leetcode и проходить алгоритмические фиды на собесах – дело отдельной статьи, поэтому пока обойдёмся основами основ и здесь на сцену вступает небезызвестная книга Адитьи Бхаргавы «Грокаем алгоритмы».
Автору удалось сделать очень дружелюбное к новичкам пособие, из которого вы узнаете про алгоритмы поиска и сортировки, что такое рекурсия, динамическое программирование и многое другое – однозначно рекомендасьон.
Объектно-ориентированное программирование (3 недели)
- плейлист Python OOP канала JimShapedCoding;
- курс Python ООП Олега Молчанова – лучшее объяснение из всех, что я видел.
Отсюда вы узнаете об устройстве объектной модели в Python, какие существуют парадигмы ООП, для чего применяются дескрипторы и многое другое.
Также параллельно с курсами было бы хорошо углубляться в пройденные темы и для этого есть неплохая книга «Object-oriented Python», Irv Kalb.
В отличие от курсов, в ней также уделяется внимание магическим методам и некоторым другим аспектам. Писать игры необязательно, как это делается в книге, но ознакомиться с ней стоит. В конце переходим к SOLID и по желанию к паттернам (плейлист и сайт).
Для практики переходим на codewars OOP: когда получится решать 5 кату, то можно двигаться дальше.
Конкурентность (2 недели и больше)
Для обеспечения быстрой и эффективной работы приложений, а также для обработки большого количества данных необходимо уметь пользоваться вычислительными ресурсами максимально эффективно, поэтому знания об основах конкурентности даже на начальном этапе будут большим преимуществом.
Основы многопроцессорности и многопоточности:
По асинхронному программированию есть 2 хороших плейлиста:
Параллельно с курсами лучше пользоваться книгой Мэттью Флауэра «Asyncio и конкурентное программирование на Python».
Отсюда вы узнаете о выполнении конкурентных запросов к базам данных, сочетании многопоточной обработки с asyncio, управлении подпроцессами и многом другом.
Тестирование кода (1 неделя)
Чтобы удостовериться в том, что написанный вами код выполняет именно тот функционал, который вы от него ожидаете, его необходимо уметь покрывать тестами хотя бы на базовом уровне.
Поэтому предлагаю перейти к плейлисту Pytest тестирование канала luchanos.
Ещё есть неплохая книга «Python Testing with pytest» (second edition), Brian Okken, с которой также желательно ознакомиться.
В качестве альтернативы Pytest есть неплохой плейлист Unittest in python канала Paris Nakita Kejser и книга Владимира Хорикова «Принципы юнит-тестирования» (примеры кода на C#).
Больше продвинутых тем (3 недели)
В принципе, может показаться, что всего вышеперечисленного уже достаточно, но для лучшего понимания устройства функций и классов, как работает сборщик мусора, в чем отличие итераторов от генераторов, как пользоваться библиотеками типа itertools, collections и т.д., ещё необходимо немного углубиться, и в этом нам помогут 2 книги:
- «Python – к вершинам мастерства» (второе издание), Лусиану Рамальо.
- «Dead simple Python», Jason C. Mcdonald.
Книги плюс-минус об одном и том же, однако в последней некоторые темы рассматриваются на немного более поверхностном уровне. За счёт этого она читается легче.
Какую из них выбрать? Лучше читать наиболее непонятные темы из обеих книг.
Best practices (1 неделя и больше)
После того, как вы изучите основные конструкции и возможности языка, не будет лишним и узнать об их эффективном использовании, и для этой цели есть хорошая книга «Effective Python. 90 specific ways to write better Python» (second edition), Brett Slatkin.
Солянка из лучших практик, показывающая как сделать код более лаконичным и эффективным с «питоновской» точки зрения.
Что в итоге
Занимаясь по 10 часов в день, на изучение всех вышеперечисленных тем уйдёт около полугода – это цифры из собственного опыта, так что можно их брать в качестве начального ориентира, однако, возможно, у вас будут другие результаты.
Что дальше
Дальше можно смело двигаться в выбранное вами направление: будь то веб-разработка с Django и Flask или же машинное обучение с Numpy, Pandas и Pytorch – полученных знаний хватит за глаза.
Дополнительные источники
- «Знакомство с Python», Дэн Бейдер;
- «Изучаем Python» (третье издание), Эрик Мэтиз;
- «Изучаем Python» (пятое издание, 2 тома), Марк Лутц;
- «Python Workout: 50 ten-minute exercises», Reuven M. Lerner;
- «Изучаем программирование на Python» (второе издание), Пол Бэрри;
- «Начинаем программировать на Python» (пятое издание), Тони Гэддис;
- «Автоматизация рутинных задач с помощью Python» (второе издание), Эл Свейгарт;
- Курс по Python от Google;
- Хендбук по Python – курс от Яндекса;
- Python Full Course на канале Bro Code;
- Питонтьютор – небольшой курс по Python;
- Интерактивное руководство по Python от DataCamp;
- Python tutorials – ещё один неплохой курс по питону;
- Python for Everybody – курс от университета Мичигана;
- Изучаем Python – курс для начинающих от freeCodeCamp;
- Добрый, добрый Python – обучающий курс от Сергея Балакирева;
- Инди-курс программирования на Python – курс от Артёма Егорова;
- Алгоритмы и структуры данных на Python 3 – лекции Тимофея Хирьянова;
- Программирование на Python – курс начального уровня от института биоинформатики.
- «Секреты Python Pro», Дейн Хиллард;
- «Using Asyncio in Python», Caleb Hattingh;
- «Beyond the Basic Stuff with Python», Al Sweigart;
- «Python. Книга рецептов», Дэвид Бизли, Брайан К. Джонс;
- «Профессиональная разработка на Python», Мэттью Уилкс;
- «Паттерны разработки на Python», Гарри Персиваль, Боб Грегори;
- «Чистый Python. Тонкости программирования для профи», Дэн Бейдер;
- «Python Object-Oriented Programming» (fourth edition), Steven F. Lott, Dusty Phillips;
- Intermediate Python – продолжение начального курса от freeCodeCamp;
- Python: основы и применение – курс среднего уровня от института биоинформатики;
- Программирование на Python – более продвинутый курс от Computer Science Center;
- Параллельное программирование – ещё один видеокурс от Computer Science Center.
Ещё несколько полезных ссылок:
- Документация по Python;
- Python Tutor – отладчик кода;
- Real Python – куча статей по Python;
- PEP 8 – руководство по стилю кода на Python;
- The Elements of Python Style – ещё одно руководство по стилю кода;
- Stack Overflow – известный сервис вопросов и ответов по программированию;
- CheckiO, LeetCode, Codewars, HackerRank – сайты с упражнениями для практики;
- PyLounge, Андрей Иванов | Python, Диджитализируй!, egoroff_channel, selfedu, Amigoscode, Python Programmer – полезные каналы по Python.