Существуют миллионы сайтов, обещающих научить Python с нуля. Но вы наверняка знаете, насколько сложно начать и как еще сложнее не останавливаться. Возможно, даже думали, что код — это не для вас. Но реальность такова, что Python с нуля может выучить каждый, совсем не имея опыта в программировании. А если вы пробовали и что-то не получилось, то проблему стоит искать где-то еще. Есть три основные причины, почему новички терпят неудачи в начале и бросают, так и не почувствовав прогресса.
Причина №1: хорошие программисты, плохие учителя
Большинство ресурсов для изучения программирования созданы самими программистами, которые хотят помочь остальным учиться. К сожалению, хороший программист не всегда будет хорошим учителем. Для тех, кто работает с Python годами, может оказаться сложным поставить себя на место новичка.
А на практике при первом знакомстве действительно сложно понять некоторые концепции в программировании. Например, способ индексации данных, таких как списки, в Python. Люди с опытом работы с кодом знают, что первый пункт в списке — это нулевой элемент. Но обычные люди привыкли считать, начиная с единицы.
Конечно, есть конкретные объяснения, почему в Python используется индексация с нуля. Но в программировании полно таких концепций. Начинающим они могут показаться не только сложными в начале, но и просто неинтуитивными.
Опытные специалисты обычно не помнят, как сами справлялись с подобными проблемами, поэтому ожидают от начинающих «просто запомнить, как есть». Однако такой подход подойдет лишь некоторым. Остальные же разочаровываются и бросают заниматься раньше времени.
Большинству требуются подробные объяснения, контекст и практика, чтобы освоить сложные вещи. Большинство ресурсов, посвященных обучению и обещающих научить Python с нуля, предлагают такие объяснения, которые будут понятны только программистам с опытом, но их сложно осознать остальным. Это и заставляет сдаваться.
Причина №2: недостаток мотивации
В традиционном образовании утрата мотивации считается проблемой и провалом студента, но на самом деле это недостаток метода обучения и самого учителя.
Сложно изучать что угодно без должной мотивации. Одним из главных мотивирующих факторов в сфере программирования является возможность использовать полученные навыки. И на этом моменте многие ресурсы по обучению претерпевают неудачу. Они учат синтаксису с помощью механических упражнений или заставляют создавать бесполезные программы, которые не имеют ничего общего с причинами, из-за которых люди начали изучать Python.
Легко бросить начатое, если вы взялись изучать Python для data science, но не работаете с данными в процессе обучения.
Причина №3: «учить», но не применять
Использование на практике приобретенных навыков критически необходимо, что они закрепились и остались надолго. Это доказывают даже исследования.
Это важно, потому что многие пытаются изучать Python, используя книги или видеоуроки. Они часто предлагают исчерпывающее освещение темы, но не могут заставить использовать полученные знания. И даже если вы используете, все равно оставляйте время для написания собственного кода.
Это не значит, что не нужно использовать книги или видео для обучения. Но именно они могут создать ложное ощущение, что вы что-то понимаете, хотя на самом деле это не так. Пройдут дни или недели, прежде чем вы напишите код, используя новые знания, осознав, что не разобрались с новым материалом так хорошо, как думали.
Решение: как выучить Python с нуля
Если вы хотите увеличить свои шансы на успешное изучение Python, то нужно использовать подход, который поможет избежать эти трех ловушек. Python нужно не просто учить, его нужно учить правильно. Следующие шаги помогут в этом:
Понять, зачем вы учите Python. Все вытекает из этой мотивации и очень важно понимать, изучаете ли вы Python для data science, робототехники, разработки игр или чего-то еще.
Изучить основы синтаксиса языка. Именно основы! Не нужно учить все. Изучение синтаксиса — важная часть, но она может быть скучной, и желательно минимизировать потраченное на нее время. Главное — взять то, что понадобится для начала работы над собственными проектами. Этот этап будет еще проще, если удастся найти ресурсы или обучающие материалы, которые рассказывают основы, но с упором на ту сферу, которая интересует в первую очередь. Например, при изучении data science полезно использовать реальные данные в своих экспериментальных проектах.
Создавать проекты с четкой структурой. В этом плане помогут руководства, в которых расписаны все шаги. Важно начать работать над интересующим проектом как можно раньше.
Создавать уникальные и все более сложные вещи по мере приобретения новых способностей. После работы над несколькими проектами у вас должны появиться идеи для собственных. Приступайте к ним, даже если кажется, что навыков недостаточно. Они появятся в процессе работы.
Нужно всего лишь разбить проект на маленькие и понятные часты. Предположим, есть идея для приложения, которое будет анализировать настроение в Твиттере. Это очень крупный проект, но его можно разделить на элементы и работать с каждым по отдельности. Сначала нужно разобраться, как получить доступ и использовать API сайта. Дальше нужно переходить к фильтрованию твитов и сохранению тех, которые потребуется проанализировать. Потом — очистить данные и искать методы, которые подойдут для анализа настроения.
Такой подход подойдет для проекта любого типа. Не обязательно знать все, прежде чем браться за работу. Разбейте ее на части, учитесь и совершенствуйтесь в процессе.
Много времени уйдет на поиск ответов в Google, StackOverflow и официальной документации Python, и это абсолютно нормально! Один из не-секретов индустрии в том, что даже профессионалы проводят большую часть времени в поисках ответов на свои вопросы.
Это продолжение четвертого шага, которое предусматривает увеличивающуюся сложность с каждым новым проектом. Если же вы с самого начала знаете, как реализовать каждую из частей проекта, то это, наверное, не лучшая идея — будет слишком легко, а процесс ничему не научит.
Важно, чтобы задания были сложными, но не казались невозможными. При изучении игровой разработки не стоит после первой «Змейки» переходить к разработке трехмерной RPG в открытом мире. Это слишком сложно. Но игра должна быть сложнее той же «Змейки».