Учим Python с нуля

Roadmap

Roadmap изучения Python (от новичка до уверенного джуна)

1. Базовый уровень 

Цель: Понимание синтаксиса, основ программирования и решение простых задач.

Ресурсы: 

Книга: Тони Гэддис — "Начинаем программировать на Python"
Плюсы: Хорошо объясняет основы, задачки на закрепление теории после какждой главы.
Минусы: Поверхностно затрагивает ООП и функции.

Что изучить:

  • Переменные, типы данных, операторы

  • Условные конструкции (if-else)

  • Циклы (for, while)

  • Функции и модули

  • Работа с файлами


2. Алгоритмы и структуры данных 

Цель: Научиться решать задачи эффективно, понимать сложность алгоритмов.

Ресурсы:

  • Книга: Адитья Бхаргава — "Грокаем алгоритмы"
    Плюсы: Визуальное объяснение, написана хорошим понятным языком.

  • Книга: Кори Альтхоф — "Computer Science для программиста-самоучки"
    Плюсы: Структуры данных + реализация на Python плюс задачки при обучении это наше все.

     

Что изучить:

  • Сложность алгоритмов (O-нотация)

  • Массивы, связные списки, стеки, очереди

  • Рекурсия

  • Бинарный поиск

  • Сортировки (пузырьком, быстрая, слиянием)


3. Углубленное изучение Python 

Цель: Глубокое понимание языка, ООП, стандартной библиотеки.

Ресурсы:

  • Книга: Васильев А.Н. — "Программирование на Python в примерах и задачах"
    Плюсы: Уровень глубже и серьезней чем у Гедиса, многие команды уже подзабыты так как читали про лагоритмы это поможет вспомнить и вхождение в темы будет не сложным так как уже читали. Опять же задачки - они на высоте заставят задуматься. После этих задач можно смело врываться на codewar и Litecode

  • Дополнительно:

    • Марк Лутц — "Изучаем Python" (глубоко про функции, ООП, генераторы)

    • Документация Python (официальный туториал)

  • Практика:

Что изучить:

  • Классы, наследование, полиморфизм

  • Итераторы и генераторы

  • Декораторы и контекстные менеджеры

  • Работа с исключениями


В принципе этого достаточно для понимания синтаксиса языка и умения писать код на достойном уровне. Дальше уже подготовка к работе и выбор специализации, но независимо от выбора обязательно нужно знать и уметь пользоваться Git и GitHub можно пройти курсы -  бесплатных курсов много в интернете.

В зависимости от специализации если Backend  то Django/FastApi 

Ресурсы: Официальная документация Django, лучше пока ни кто не чего не придумал для старта. Дальше могу подсказать хороший проект, который дает такой не слабый буст в скиле -proghanter.ru, но этот ресурс по моему мнению достоин войти в раздел литература. Интересно заходите читайте.  Когда будет изучать пилите свой проект заодно познакомитесь с Докером, Celery и Redisом и другими инструментами

 

Советы:

  1. Регулярность: 1-2 часа в день лучше, чем 10 часов раз в неделю.

  2. Важно: Не пытайтесь изучить всё сразу! Фокусируйтесь на одном направлении.

  3. Практика пилите проекты решайте задачи, не будет практики забудете все что прочли. 

  4. Если это не хобби, а для устройства на работу, ходите на собесы начиная от того как прочтете Васильева. 

Попытки изучения языка

Этот сайт создан самоучкой для тех, кто самостоятельно или иным способом начал изучать язык программирования Python. Автор сайта — самоучка, который начал изучать программирование с нуля в 40 лет, и этот сайт стал результатом его годового обучения и желания передать полученный опыт.

Изначально, когда я только приступил к изучению, у меня была простая идея — научиться программировать. Я не ставил себе цель стать senior-разработчиком или что-то подобное. Это может показаться смешным, но на тот момент я даже не знал о таких градациях, как junior, middle и senior, не представлял, какие зарплаты в IT. Идея изучения программирования возникла как хобби, но со временем оно стало занимать почти всё свободное от основной работы время. Сейчас, признаюсь, я уже задумываюсь о смене профессионального направления. И это при том, что у меня есть высшее образование, я работаю по специальности уже 20 лет и добился в этой сфере определенных успехов.

Пока я не решил, менять ли работу окончательно — возможно, попробую совмещать, но ещё не знаю как. Однако в процессе этих размышлений у меня внезапно возникла идея создания этого сайта. А что, если есть люди, которые, как и я в начале пути, не знают, с чего начать, что читать или смотреть, и метаются от одного источника информации к другому, не понимая, что именно им нужно на данном этапе? Что если человек, решивший научиться программировать, — такой же самоучка, чьё окружение никак не связано с IT, и спросить ценного совета просто не у кого? Почему бы не облегчить ему путь, поделившись своим опытом через сайт?

О начале своего пути

Прежде всего, мне пришлось решить, как именно учить язык программирования. Вариантов было несколько: видеокурсы, отдельные ролики на YouTube, книги. Позже я узнал о технической документации, но вначале даже не подозревал о таком понятии.

Я опишу свой путь и ошибки, которые совершал, чтобы читатели могли их избежать и сэкономить время.

Первая попытка: YouTube

Я начал с просмотра роликов на YouTube. Однако через некоторое время понял, что это не мой метод. Во-первых, было непонятно, с чего начинать: одни видео казались слишком сложными, другие — излишне затянутыми. Позже я нашел целые курсы, но у них были те же минусы: отсутствие практики. Мы же учимся писать код, а не смотрим ролики под еду!

Ещё одна проблема — видео требует непрерывной концентрации. Если отвлёкся, приходится перематывать, что не всегда удобно. Кроме того, манера подачи информации у многих авторов мне не понравилась (это субъективно, но я описываю свой опыт). Конечно, на YouTube есть достойные материалы, но я обнаружил их гораздо позже. В итоге в голове образовалась каша из разрозненной информации.

Вторая попытка: платные видеокурсы

После YouTube реклама онлайн-школ преследовала меня повсюду (AdBlock не спасал). Я не покупал курсы, но нашёл несколько бесплатных уроков. Честно говоря, они не впечатлили. Да, там была структура и план обучения, но те же проблемы: неудобство восприятия и сомнительная практика.

Практические задания сводились к простому повторению кода за преподавателем. Но где здесь обучение? За что платить такие деньги — я не понял. Этот способ мне не подошёл.

Третья попытка: вузовские программы

Я решил поискать университетские программы по изучению Python — ведь где-то же готовят программистов? Оказалось, что я сильно заблуждался.

Изучив учебные планы нескольких вузов, я пришёл к выводу, что Python там изучают год-полтора, а всё остальное — прикладные предметы, не особо нужные для практики. Вторым открытием стало отсутствие свежих учебных материалов, рекомендованных Минобразования. Методичка на 50 страниц для пединститута — это просто несерьёзно.

Однако этот поиск принёс пользу: я обнаружил лекции по алгоритмам и структурам данных от МФТИ. Их автор — преподаватель от Бога, и его студентам невероятно повезло.

Четвёртая попытка: книги

После этого я обратился к литературе — как к покупной, так и к доступной в интернете. Я прочитал около 20 книг по Python и не только. Этот метод дал лучший результат: знания стали систематизированными.

Качество книг разное: от действительно топовых до откровенно слабых, где материал подаётся по принципу «возьмите микроскоп и забейте им гвоздь». Есть и откровенный бред, рассчитанный на новичков, которые не разбираются в теме.

Вопросы в начале пути

Вопросы ответы на которые я гуглил когда начинал учить язык программирования Python. 

 

Python — лёгкий язык для изучения?

Все языки программирования в основе своей используют одни и те же алгоритмы и структуры данных — разница лишь в синтаксисе и предназначении. Python — не лучший выбор для написания системных утилит или низкоуровневых программ, так же как C — не идеален для бэкенда веб-сайтов или машинного обучения.

Мне сложно сравнивать Python и C, поскольку последний я не знаю, но в общих чертах Python — это человекоориентированный язык. Если проводить аналогию:

  • C — это как войти в реку, сделать два шага — и вас сразу накрывает с головой.

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

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

  • понятному синтаксису,

  • динамической типизации,

  • обилию готовых библиотек.

C же сразу показывает все свои «прелести»: ручное управление памятью, строгую типизацию, более сложный синтаксис.

Так лёгкий ли Python?

Да, но с оговорками.

  • Начальный порог входа действительно низкий: простой код, минимум «магии», читаемый синтаксис.

  • Но глубина ничуть не меньше, чем у других языков. Когда дело доходит до потоков, асинхронности  итд , Python может быть таким же сложным, как и остальные.

Вывод: Python — отличный выбор для новичков, но не потому, что он «простой», а потому, что он позволяет постепенно погружаться в программирование, не пугая сложностями с первых строк кода.

Сколько времени нужно уделять изучению Python?

Много. Те, кто утверждает, что выучил Python за неделю, либо гении, либо их знания ограничиваются той самой 50-страничной методичкой. Учиться нужно столько, сколько позволяет свободное время.

Мне было сложнее, так как я совмещал учёбу с работой. Реальные сроки освоения языка — от двух месяцев до года, в зависимости от интенсивности. Не верьте книгам типа «Весь Python за 15 минут» — это nonsense. Волшебной таблетки нет: изучение программирования — это труд, и труд нелёгкий.

Как быстро стать senior-разработчиком?

Если вы рассчитываете «ворваться» в IT и сразу стать senior’ом, у меня плохие новости: 99% людей не смогут этого сделать. Многие не станут senior’ами никогда — у всех разные способности.

Как правильно учить?

Главная ошибка (и я её совершил) — попытка учить язык, лёжа на диване. Нельзя просто прочитать книгу и начать писать код. Даже если материал кажется понятным, на практике всё иначе.

Я отбирал книги по принципу «теория + практика». В идеале 30-40% времени уходит на теорию, а 60-70% — на практику. Меньше нельзя. Если книга вам нравится — не просто читайте, а сразу пробуйте код на клавиатуре!

Поздно ли учить программирование в 30, 35, 40 лет?

Я считаю, что нет. Было бы желание.

Нужно ли это мне?

Ответьте себе сами. Если вас в программировании привлекают только зарплаты — это не лучшая мотивация. Простой способ проверить: если садитесь за компьютер в 12:00, а встаёте глубокой ночью, не замечая времени, — значит, вам это нравится.

Популярные теги
Популярных тегов не найдено