155 подписчиков

Как выучить Python с нуля самостоятельно: полный гайд для новичков

579 прочитали
Пример простого кода на Python
Пример простого кода на Python

Решил написать пост про то, как выучить язык Python до уровня продвинутого стажёра / Джуниора, так как сам много лет назад прошёл этот путь в одиночку.

Мой способ не претендует на 100% истину, и если у вас нет ооочень большой силы воли и свободного времени, то ваше обучение может растянуться на несколько лет. Имейте это ввиду. Итак, начнём.

Как я советую проходить обучение

  1. Читаем статьи.
  2. Проходим курсы.
  3. Смотрим видео в YouTube.
  4. Повторяем все действия за автором.
  5. Если что-то не выходит, гуглим до победного.

В особо сложных случаях пользуемся чат-ботом с искусственным интеллектом ChatGPT, задаём вопросы на Stackoverflow.com.

Как нужно начать учиться, чтобы не потерять мотивацию? Советы, которые реально работают, я на себе в этом убедился.

  • На учёбу выделите не менее 3-4 часов каждый день. Если пропускаем занятия – знания улетучиваются, поэтому если даже пропустили день или два, следующий день посвятите повторению. В начале, возможно, будет сложно заставлять себя учиться, но если продержаться хотя бы 3 недели, то вы выработаете рефлекс привычку. Для эффективного запоминания необходимо повторение заученного материала, через 1-2 недели, месяц и т.д. (почитайте про кривую Эббингауза).
  • Делать ошибки и что-то не понимать в программировании – это нормально. На практике даже Senior’ы бывают не могут справиться с очевидными задачами, поэтому ошибки помогут вам стать сильнее.

Примерно так вы будете учиться:

  1. Пробуем писать код.
  2. Ошибаемся.
  3. Ищем ответы в сети.
  4. Правим ошибку.
  5. Идём обратно к первому пункту.
  6. Успех!

Именно так и учатся программированию, и вы не будете исключением (если конечно вы не учитесь под полным контролем опытного наставника).

Чтобы не останавливаться на пути, вдохновляйтесь Zen of Python, вот первые строки этой философии:

“Красивое лучше уродливого.

Явное лучше неявного.

Простое лучше сложного.

Сложное лучше запутанного…”

Эти слова должны быть руководством к действию, не пытайтесь сразу наскоком изучить всё за пару месяцев. Разбейте всё на этапы и последовательно всё изучайте, шаг за шагом. Если чувствуете эмоциональное выгорание, возьмите небольшой перерыв, а затем – с новыми силами снова в бой. У меня пару раз так было, доходило дело до истерики. Пару дней отдохнул и настрой вернулся. Так что будьте готовы к этому.

Вообще Python – лёгкий язык для новичков, он имеет много библиотек, которые помогут вам ускорить разработку + большое количество обучалок. Поэтому если вы хотите быстро войти в IT и зарабатывать 50-100-150k рублей в месяц и более, то Python – это идеальный язык для старта.

Получаем базовые навыки

Итак, перейдём к плану обучения. Для начала изучите начальные знания по языку, вот годные статьи для начала:

Дальше открываем небольшую, но эффективную книга “Укус Питона” – здесь перевод - 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, как это я сделал в своё время я. Вот материалы для изучения:

Дополнительно изучаем основы баз данных и вёрстки:

Итак, вы создали свой первый сайт. Можете сделать из него своё портфолио, это будет лучшим доказательством для работодателей, что вы более-менее владеете 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-программистом

  1. Читаем книгу “Укус Питона”.
  2. Проходим 2-3 курса на Степике.
  3. Смотрим видеолекции на Ютубе, читаем статьи. За авторами повторяем все действия, это помогает освоить best practices.
  4. Для веб-разработки осваиваем Django или Flask + веб-вёрстку.
  5. Параллельно учим английский хотя бы по часу в день. Знание английского значительно облегчит вам в программировании.
  6. Практикуемся, практикуемся и ещё раз практикуемся, каждый день без пропусков, не менее 2-3 часов в день.
  7. Создаём 2-3 проекта.
  8. Оформляем резюме и портфолио.
  9. Откликаемся на вакансии, параллельно прокачивая свои навыки.
  10. Устраиваемся на работу и учимся дальше.
  11. … Profit!!

P.S. Публикую список очень полезных ссылок на материалы для самообучения, думаю они будут вам полезны:

Англоязычные ютуб-каналы, помогут подтянуть English и изучить Python:

Список отличных книг, которые я сам использую время от времени:

  • “Изучаем Python”, Марк Лутц.
  • “Учимся программировать с примерами на Python”, Эрик Фримен.
  • “Программирование на Python 3. Подробное руководство”, Марк Саммерфилд.
  • “Изучаем Python: программирование игр, визуализация данных, веб-приложения”, Мэтиз Э.
  • “Python. Подробный справочник”, Дэвид Бизли.
  • “Программируем на Python”, Майкл Доусон.

Всем успехов в начинаниях! Не сдавайся. Начало всегда самое сложное, потом будет легче.