Решил написать пост про то, как выучить язык Python до уровня продвинутого стажёра / Джуниора, так как сам много лет назад прошёл этот путь в одиночку.
Мой способ не претендует на 100% истину, и если у вас нет ооочень большой силы воли и свободного времени, то ваше обучение может растянуться на несколько лет. Имейте это ввиду. Итак, начнём.
Как я советую проходить обучение
- Читаем статьи.
- Проходим курсы.
- Смотрим видео в YouTube.
- Повторяем все действия за автором.
- Если что-то не выходит, гуглим до победного.
В особо сложных случаях пользуемся чат-ботом с искусственным интеллектом ChatGPT, задаём вопросы на Stackoverflow.com.
Как нужно начать учиться, чтобы не потерять мотивацию? Советы, которые реально работают, я на себе в этом убедился.
- На учёбу выделите не менее 3-4 часов каждый день. Если пропускаем занятия – знания улетучиваются, поэтому если даже пропустили день или два, следующий день посвятите повторению. В начале, возможно, будет сложно заставлять себя учиться, но если продержаться хотя бы 3 недели, то вы выработаете
рефлекспривычку. Для эффективного запоминания необходимо повторение заученного материала, через 1-2 недели, месяц и т.д. (почитайте про кривую Эббингауза). - Делать ошибки и что-то не понимать в программировании – это нормально. На практике даже Senior’ы бывают не могут справиться с очевидными задачами, поэтому ошибки помогут вам стать сильнее.
Примерно так вы будете учиться:
- Пробуем писать код.
- Ошибаемся.
- Ищем ответы в сети.
- Правим ошибку.
- Идём обратно к первому пункту.
- …
- Успех!
Именно так и учатся программированию, и вы не будете исключением (если конечно вы не учитесь под полным контролем опытного наставника).
Чтобы не останавливаться на пути, вдохновляйтесь Zen of Python, вот первые строки этой философии:
“Красивое лучше уродливого.
Явное лучше неявного.
Простое лучше сложного.
Сложное лучше запутанного…”
Эти слова должны быть руководством к действию, не пытайтесь сразу наскоком изучить всё за пару месяцев. Разбейте всё на этапы и последовательно всё изучайте, шаг за шагом. Если чувствуете эмоциональное выгорание, возьмите небольшой перерыв, а затем – с новыми силами снова в бой. У меня пару раз так было, доходило дело до истерики. Пару дней отдохнул и настрой вернулся. Так что будьте готовы к этому.
Вообще Python – лёгкий язык для новичков, он имеет много библиотек, которые помогут вам ускорить разработку + большое количество обучалок. Поэтому если вы хотите быстро войти в IT и зарабатывать 50-100-150k рублей в месяц и более, то Python – это идеальный язык для старта.
Получаем базовые навыки
Итак, перейдём к плану обучения. Для начала изучите начальные знания по языку, вот годные статьи для начала:
- https://professii.su/programmirovanie/python-razrabotchik.html – полезная статья для новичков, много советов, в том числе как найти работу, куча ссылок на обучающие материалы и руководств по обучению.
- https://ru.stackoverflow.com/questions/420125/Книги-и-учебные-ресурсы-по-python - список учебных материалов на stackoverflow.com, могут оказаться сложными для начинающих.
- https://github.com/vera-l/python-resources - Roadmap по питону с ссылками, больше подходит опытным программистам.
Дальше открываем небольшую, но эффективную книга “Укус Питона” – здесь перевод - https://wombat.org.ua/AByteOfPython/#id10. Она поможет вам получить начальные знания по Python, без лишней болтовни и “воды”. В общем, рекомендую.
Углубляемся в разработку
Далее проходим отличные и бесплатные курсы на Степике:
https://stepik.org/course/58852 - курс называется "Поколение Python для начинающих”. Материал усваивается легко, вы начнёте писать простенькие программы уже через неделю. Проверка ваших решений осуществляется автоматически + там очень много полезных комментариев с оригинальными решениями других учеников.
Параллельно с курсом читаем книгу “Грокаем алгоритмы” от Бхаргава Адитья. Она содержит много примеров программного кода, которые значительно облегчат ваше обучение. На это вам потребуется примерно 1-1,5 месяца.
Важный совет: заведите табличку-шпаргалку, где вы будете записывать изученные команды, синтаксис со своими комментариями.
Далее открываем следующий курс https://stepik.org/course/68343/ - "Поколение Python": курс для продвинутых”. Он помогает глубже освоить язык и начать создавать свой пет-проект.
Не лишним будет ещё курс "Python: основы и применение", который поможет решать реальные задачи https://stepik.org/course/512/
После завершения курсов 2-3 недели порешайте задачки, они помогут вам лучше прокачать мозг. Список сайтов с задачами:
Выбирайте любой из сайтов и начинайте решать задачки. Начинайте с самых простых. В день в среднем прорешивайте 4-5 штук, читайте комментарии других программистов, которые предлагают более простые и интересные способы решения. Возможно, они научат вас best practices. В любом случае задачи вам помогут вам железно закрепить все полученные начальные знания.
Очень рекомендую ютуб-канал Тимофея Хирьянова, преподавателя от Бога. Он простым языком расскажет про лучшие практики программирования, анализ данных, алгоритмы и структуры данных. Скучно не будет, вы точно заполните все пробелы в своих знаниях. Параллельно можете смотреть уроки преподавателей Computer Science Center.
Яндекс тоже выкатил короткий, но хороший видеокурс, посмотреть можно на Хабре.
Помним, что нужно ежедневно решать задачи. На получение базовых знаний при умеренном темпе учебы по 3-5 часов в день на это у вас уйдёт приблизительно 3,5-4 месяца.
После этого проще всего погрузиться в выбранное направление, например в веб-разработку. Например, создайте простенький сайт на фреймворке Django, как это я сделал в своё время я. Вот материалы для изучения:
- Видеоуроки на Ютубе по Джанго.
- https://developer.mozilla.org/ru/docs/Learn/Server-side/Django - официальное руководство на русском языке.
Дополнительно изучаем основы баз данных и вёрстки:
- Интерактивный учебник по SQL - http://www.sql-tutorial.ru/
- Bеб-вёрстка - https://htmlacademy.ru/courses/basic-html-css
Итак, вы создали свой первый сайт. Можете сделать из него своё портфолио, это будет лучшим доказательством для работодателей, что вы более-менее владеете Python для веб-вёрстки.
Для любого Python-разработчика нет момента, когда он должен прекратить учиться. Обучаться придётся всегда, даже если вы будете крутым Senior на высоконагруженных проектах.
Полезные советы по поиску работы
После 5-6 месяцев интенсивной учёбы можно начинать искать работу / подработку. Для начала оформите портфолио (на Гитхабе или своём созданном сайте). Всего должно быть не менее 2-3 полноценных проектов. Затем оформляйте резюме, указываете только те навыки, которыми вы владеете. Вот скрин моего профиле на github.com:
Начинайте рассылать заявки работодателям + обязательно прикладывайте собственноручно написанное сопроводительное письмо. С большой долей вероятности у вас не получится сразу устроиться на работу стажёром или джуном, как и выполнение тестовых заданий.
Оффер мечты вы возможно сможете получить через 10-15-25 собеседований. Главное не опускайте руки, рано или поздно вас возьму на работу. По мере прохождения собеседований учитесь каждый день новым инструментам, чтобы в будущем без проблем проходить тестовые задания. Если что-то не знаете, то лучше отвечать так: “Я только поверхностно изучил эту тему и ничего не понял”.
Параллельно с поиском работы берите заказы на фриланс-биржах, например, kwork.ru. Да, платят там немного, но зато вы будете пополнять портфолио рабочими кейсами и прокачивать свои навыки программирования. Так, в среднем, с одного простого заказа получится заработать 1-1,5 тыс. руб.
Вот какие вопросы чаще всего задают на техническом собеседовании на позицию Junior:
- Разница между списками и кортежами?
- Какие отличия между многопроцессорностью и многопоточностью?
- Что такое декораторы, напишите пример использования?
- Как правильно записать данные в файл и какие ошибки могут возникнуть?
- Как можно изменить способ вывода объектов?
- Как предотвратить вызов функции много раз подряд?
- Что такое lambda-функции?
- Расскажите о типах данных, разница между list и tuple?
- Расскажите про модуль collections, какими built-in модули вы применяли?
- Шаблонизатор: что это и как выполнять базовые операции?
- Async Python: как работает, что под капотом, расскажи всё, что знаешь.
- Приведите примеры паттернов проектирования, которыми вы пользовались.
Если вы без проблем смогли ответить на 90% вопросов, то вы готовы собеседоваться. Если нет, то продолжайте учиться. Вы как новичок не можете всё знать на 100%, и интервьювер это прекрасно понимает, поэтому он может снисходительно отнестись, если вы не ответите на очень сложные вопросы. Со мной так и было, но я не ответил примерно на 50% вопросов, но зато без проблем выполнил 2 тестовых задания. В итоге работодатель пригласил меня на работу, где я отработал полгода стажёром, но потом уволился ибо мне предложили в другой компании более высокую должность и з/п.
Check-лист по становлению Python-программистом
- Читаем книгу “Укус Питона”.
- Проходим 2-3 курса на Степике.
- Смотрим видеолекции на Ютубе, читаем статьи. За авторами повторяем все действия, это помогает освоить best practices.
- Для веб-разработки осваиваем Django или Flask + веб-вёрстку.
- Параллельно учим английский хотя бы по часу в день. Знание английского значительно облегчит вам в программировании.
- Практикуемся, практикуемся и ещё раз практикуемся, каждый день без пропусков, не менее 2-3 часов в день.
- Создаём 2-3 проекта.
- Оформляем резюме и портфолио.
- Откликаемся на вакансии, параллельно прокачивая свои навыки.
- Устраиваемся на работу и учимся дальше.
- … Profit!!
P.S. Публикую список очень полезных ссылок на материалы для самообучения, думаю они будут вам полезны:
- https://www.python.org/doc/ - официальная документация на английском языке.
- https://pydocs.ru/ - документация по языку программирования Python на русском.
- https://pythonworld.ru/osnovy/pep-8-rukovodstvo-po-napisaniyu-koda-na-python.html - документ PEP 8, он описывает соглашение о том, как писать код для языка Python.
- https://pythonworld.ru/samouchitel-python - самоучитель Python 3 для начинающих и чайников.
- https://python-scripts.com/ - примеры кода на Python 3 и уроки.
- https://stepik.org/course/431 - курс представляет собой набор задач на языке Python с разной степенью сложности.
- https://www.youtube.com/playlist?list=PLRDzFCPr95fK7tr47883DFUbm4GeOjjc0 – видеокурс от Т. Хирьянова алгоритмам и структурам данных.
- https://riptutorial.com/python - обучающий сайт по разным языкам программирования.
- https://informatics.msk.ru/ - олимпиадные задачки.
- https://codeforces.com/ - сайт, на котором проводятся конкурсные соревнования по программированию.
- https://www.schoolsw3.com/python/exercise.php - онлайн-тренажёр Python.
- https://skills4u.ru/school/informatika/python/ - онлайн-тренажер по Python для начинающих.
- http://www.kodesource.top/python-exercises/ - упражнения с решениями.
- https://smartiqa.ru/python-workbook - сборник задач с решениями по программированию на языке Python.
- https://acm.timus.ru/ - задачи по программированию с автоматической системой проверки.
- https://projecteuler.net/archives - различных задания, которые помогут держать мозг в тонусе. Каждый настоящий программист должен решить хотя бы несколько задач проекта Эйлера.
- https://okpython.net/python/python_zadachnik/python_zadachnik.html - задачник по языку программирования Python: упражнения и задачи с решениями на числа, строки, кортежи, множества, генераторы, if/else, циклы, функции, объекты, модули, файлы, логические выражения, линейные алгоритмы.
- https://academy.yandex.ru/handbook/python - хендбук по Python от Яндекса поможет овладеть основным синтаксисом и принципами языка.
- https://play.google.com/store/apps/details?id=com.vgtrofimov.consolegameslv01- отличное приложение по программированию игр для детей, взрослых и всех, кто ни разу не сталкивался с программированием. Научит писать код даже домохозяйку.
- https://stepik.org/course/83990 - курс по быстрому освоению Python Pandas.
- https://www.youtube.com/@selfedu_rus - видеоуроки по математике, алгоритмам обработки данных, Python и его библиотекам.
- https://www.youtube.com/@zaemiel - видеоуроки от Олега Молчанова по программированию на Питоне, разработке сайтов и веб-приложений.
- https://code-basics.com/ru/languages/python - Бесплатный онлайн курс по Python для начинающих (72 урока).
- https://www.youtube.com/playlist?list=PLawfWYMUziZqyUL5QDLVbe3j5BKWj42E5 - CS50 на русском (Гарвардский курс по основам программирования). Курс научит мыслить алгоритмически и эффективно решать задачи.
- https://www.udemy.com/course/python-3-c/ - бесплатный курс по основам Python 3 на Udemy.
- https://stepik.org/course/4519 - курс по Python для решения практических задач.
- https://stepik.org/course/67/ - курс посвящен базовым понятиям Python, подготовлен на базе программы Института биоинформатики.
- https://stepik.org/course/100707 – самый простой курс для новичков.
- https://stepik.org/course/63085 - инди-курс программирования на Python для новичков, где подробно и простым языком объясняются сложные вещи.
- https://acmp.ru/index.asp?main=tasks - олимпиады по информатике с автоматической проверкой.
- http://www.pythonchallenge.com/ - задачи, которые можно решить при помощи программирования.
- https://exercism.org/tracks/python - 137 упражнений по прокачке навыков.
- https://stepik.org/course/56240/ - курс-сборник задач.
Англоязычные ютуб-каналы, помогут подтянуть English и изучить Python:
- https://www.youtube.com/user/Albert10110 - Al Sweigart.
- https://www.youtube.com/c/Coreyms/ - Corey Schafer.
- https://www.youtube.com/c/realpython/ - Real Python.
- https://www.youtube.com/c/sentdex - sentdex.
Список отличных книг, которые я сам использую время от времени:
- “Изучаем Python”, Марк Лутц.
- “Учимся программировать с примерами на Python”, Эрик Фримен.
- “Программирование на Python 3. Подробное руководство”, Марк Саммерфилд.
- “Изучаем Python: программирование игр, визуализация данных, веб-приложения”, Мэтиз Э.
- “Python. Подробный справочник”, Дэвид Бизли.
- “Программируем на Python”, Майкл Доусон.
Всем успехов в начинаниях! Не сдавайся. Начало всегда самое сложное, потом будет легче.