
Python известен своим приятным синтаксисом и простотой. Говорят, выучить его может каждый. Но с чего начать и как выстроить обучение, чтобы не забросить его на половине пути? Web Academy расспросила об этом программистов, которые не первый год работают с Python. Они рассказали и о своих первых шагах и о том, как понять, что уровень новичка пройден и можно смело подавать резюме в компанию мечты.
Антон Мазун, Python developer в GeeksForLess Inc (тренер Web Academy)
Python, как и любой другой язык программирования, может выучить любой человек. Многие думают, что нужно специальное образование. Но на самом деле это не совсем так. Все дело в практике и желании обучаться.
Понятие «Python как язык программирования» стоит рассматривать с точки зрения области его применения, а не самого языка. Язык программирования — это просто инструмент. Если вы хотите работать в data science, то конечно же, вам понадобится ещё очень мощный математический аппарат. А если же работать как back-end developer, то может хватить и школьной программы.
Очень долго пытался выучить Python по видеоурокам, но понял, что все тщетно. Тут же параллельно сел читать книги и осознал, что мне не хватает какого-то интереса, нет конкретной цели — того, что я хочу получить, зная Python. Опять-таки, как я уже говорил, Python — это инструмент, своего рода удочка. И вы же на одну и ту же удочку всегда можете поймать разную рыбу. В моем случаи рыбой был интернет-магазин. Стало интересно, как это все работает — вот тогда начал уже искать в интернете конкретно то, что мне нужно. И так шаг за шагом я получил очень простой, но свой интернет-магазин.
Поэтому всем рекомендую выбрать для себя понравившуюся область и просто начать понемногу писать проект. В этом деле главное практика. Спустя какое-то время я вернулся к прочтению книг. Автор — Марк Лутц. Всем рекомендую.
Ближайший курс по направлению: Python с нуля
Для начала нужно выбрать направление, в котором хотите развиваться. Затем — посмотреть, какие инструменты вам для этого нужны.
Вот несколько полезных ссылок от меня:
Чтобы не путаться в тонне информации из интернета, я рекомендую пойти на курсы. Во всяком случае, там с вами будет тренер, у которого всегда можно что-то спросить. Но нужно понимать одну простую вещь: просто прослушав 100 часов лекций, работу мечты вы не получите. Курс нужен для того, чтобы структурировать ваш процесс обучения и получить ответы на вопросы от более опытных людей в этой сфере. Курсы — это только 20%, остальные 80% — это правильная обработка первых 20%.
Думаю, все-таки лучше совмещать курсы с самостоятельным обучением, потому что так у вас будет больше вопросов и не только теме курса. И логично предположить, что если больше есть больше вопросов, то будет больше и ответов.
Если вы уже не боитесь таких слов как декоратор, генератор, ООП, сможете рассказать, что такое полиморфизм, инкапсуляция, знаете правильный ответ True+True и понимаете, почему так происходит — можно и работать. Но это те знания, которые нужны для работы с инструментом Python. А дальше все зависит от сферы, в которую пойдете.
Старайтесь больше узнавать новинок в сфере. По возможности — переходите на другие проекты. Чем больше проектов вы попробуете, тем круче для новичка. Увидите разные подходы, структуры, архитектуры и технологии.
Максим Орлюк, Software engineer в Reface (тренер Web Academy)
Кто угодно, кому интересен Python, может его учить. Я в принципе рекомендую начинать двигаться в направлении изучения программирования только в том случае, если это интересно. Потому что эта сфера специфична. И если нет «живого» интереса, вряд ли что-то получится.
Начинать учить можно абсолютно с нуля. Потому что Python сам по себе прост, в нем есть все конструкции, которые пригодятся в будущем. И нет особой нужды в каких-то специальных знаниях. Если разбираетесь на базовом уровне в алгоритмике, например, знаете, что такое оператор if, что такое цикл, будет просто отлично. Но в целом — ничего такого необязательно на старте.
Я начал с книги, суть которой сводилась к тому, чтобы учить Python, разрабатывая игры. Но это были не те игры на компьютерах и смартфонах, которые мы знаем сегодня. Это были консольные игры вроде «Крестиков-ноликов». В этом формате я учил основы.
Также взял курс, но там были только лекции, а мне хотелось получать и домашние задания. Позже еще проходил курс от CyberBionic Systematics «Python Advanced». На нем разбирали уже более сложные темы, но навыков я получил много.
Сейчас сфера онлайн-образования очень развита: есть курсы с преподавателем и без, есть много статей на том же «Хабрахабр» или Medium. Что касается онлайн-платформ, рекомендую Coursera или Udemy. Можно выбрать любую и начинать.
Даже без привязки к какому-то конкретному курсу, я рекомендую начинать с них. Потому что в идеале всегда лучше учить что-то новое с человеком, у которого есть опыт. Это может быть в формате курсов, может быть формат менторства. Все потому, что сейчас в информационном поле, даже в сфере онлайн-образования, слишком много всего. Сферы переполнены, ведь есть уйма тем и инструментов, с которыми можно и нужно ознакомиться. Но это чревато последствиями.
В свое время я столкнулся с проблемой: я не понимал, куда двигаться, так как сложно понять, что важного вычленить для себя, сосредоточиться и учить.
Выучить все сразу не получится — это очевидно. И из-за этого может возникать впечатление на первых порах, что как много ты не учил бы, знаешь все равно очень мало. А пласт знаний, который еще предстоит освоить, огромный. И найти путь, по которому двигаться дальше, чтобы обучение шло как по маслу, непросто. Но опытный человек, если будет рядом, поможет с этим разобраться.
Важно понимать, что для работы нужен не только Python. Я не видел ни единой вакансии или работы, где было бы достаточно знать только лишь этот язык программирования. Обычно в требованиях хотя бы один или два фреймворка: Django, асинхронный фреймворк вроде aiohttp и пр. Также необходимо уметь работать с Git – это система контроля версий. А еще — иметь базовые понятия о том, как работает проект. Последнее необязательно, но крайне желательно.
Круто, если с первым резюме вы покажете свои pet-проекты. Это проект, который вы делаете для себя или, чтобы освоить что-то новое. Например, может быть pet-проект с использованием того или иного фреймворка, который даст понимание, как его использовать в боевых условиях, а не знать об этом только в теории. Это может быть телеграмм-бот, который будет присылать вам прогноз погоды. Или сервис, который будет присылать раз в день какую-то песню. Pet-проекты, по большому счету, могут не иметь какой-то пользы с точки зрения юазбилити. Но они показывают, что вы умеете работать с теми или иными инструментами.
Чтобы подаваться на вакансию, нужны отличные знания Python и знание процентов 75-80 стека технологий, с которыми будете работать. Не нужно знать все, но большинство — обязательно.
Я бы не рекомендовал начинать с фриланса. Во-первых, будем смотреть правде в глаза, вряд ли найдутся люди, которые дадут проект человеку без какого-либо опыта. Найти заказы будет трудно. Ведь если нет опыта, как вы будете знать, что вам нужно делать с заданием?
Работа в компании дает много преимуществ, помимо самого факта работы: опыт работы в команде, Code Review (старшие коллеги будут смотреть код), вы узнаете, что и как реализовано в проекте. Все это полезно на любом этапе карьеры, но на старте — особенно. Ведь с таким опытом со временем вы сможете решать проблемы, которые видели в компании, самостоятельно.
На самом деле, изучением программирования в целом должна руководить заинтересованность: что и как работает, почему именно так, а не иначе, что используют для решения тех или иных проблем и т.д. В таком случае, дальнейшее продвижение в сфере будет органичным.
Например, я, даже когда работал, читал статьи на «Хабре», где были темы по Python: о нововведениях, оптимизации, улучшению и пр.
Органично и правильно — это когда вы познаете Python и все, что с ним связано, не потому, что нужно, а потому, что интересно.
И вопрос «Как не остаться новичком в знании Python навечно?» отпадает, как только вы получаете первую работу. На проекте будет много фреймворков, изучая которые вы перерастете уровень новичка.
Николай Осиный, Python Software Engineer в PrivatBank
Python доступен кому угодно. Здесь трудно не вспомнить Эйнштейна, который говорил: «Дело не в том, что я такой умный. Я просто трачу на решение задач больше времени». Сфера программирования ничем не отличается от других сфер: кто-то талантлив от природы и ему это легче дается, кому-то нужно будет приложить невероятные усилия. Но возможность есть у всех, тем более сейчас.
Я начинал с изучения Java Core. И случайно, после обучения, на работе увидел книгу по Python. Меня удивило, что, оказывается, Hello World можно напечатать в консоль одной строкой, не объявляя классы и прочее. Так что меня зацепил «синтаксический сахар», а дальше по шаблону: узнал, что язык разносторонний для развития, что США диктует моду на него и т.д. Первым шагом к изучению стала онлайн-платформа на Stepic.org.
С чего начинать учить Python сегодня
Онлайн-платформы вроде Stepic.org, Udemy. Читать классическую литературу тоже не помешает. Рекомендую книги Марка Лутца.
Лучше учить новый язык программирования самостоятельно и под кураторством ментора. Самостоятельно можно действительно разобраться и запомнить вопрос на всю жизнь. Ментор необходим для преодоления тупиковых ситуаций. Но сфера IT очень романтизирована сейчас, и рисуется чуть ли не как рай на Земле. Многие, попадая на реальную работу разочаровываются, что все не так, как было в рекламном буклете. Поэтому с курсами нужно быть осторожным — можно просто выкинуть деньги на ветер.
Нужно закончить хотя бы один свой маленький проект. Программирование — это, в первую очередь, избегание рутин. Придумать, к примеру, сортировщик файлов на ПК, чтобы файлы по расширению складывались в определённые директории. Потом можно будет прикрутить электронную почту, которая будет присылать отчет раз в неделю об изменении в файловой системе ПК и т.д. Нет предела совершенству.
Но когда будет что-то более-менее рабочее, нужно браться за реальную работу. Пересидеть на позиции трейни — тоже плохо.
Рецепта нет. Выберите сферу, которая нравится (web/bigdata/ml) и постоянно работайте, изучайте новинки. Работая, трудно остаться новичком. Либо будет прогресс, либо сфера «выплюнет» человека на берег. Не без исключений, конечно.
Владислав Романюк, Python Software Engineer в PandaDoc
Каждый может, главное — усидчивость. Плюс Python в том, что ты не должен завязываться на определенную нишу, можно пойти в back-end, в Artificial Intelligence, Machine Learning и другие отрасли.
Сам я знакомился с Python с книги Марка Лутца, но это очень плохой опыт. Книга была скучная и большая.
Идеально начинать учить Python по книге Automate the Boring Stuff with Python, 2nd Edition: Practical Programming for Total Beginners. Она нескучная и есть практические задания. Также рекомендую классный курс от Дэвида Бизли.
Сложно сказать, как лучше учить Python. Здесь все зависит от человека. Если он может сам заниматься и ему не нужен контроль, то вполне можно обойтись и без курсов.
Понять, можно ли начинать карьеру, очень просто. Попробуйте пройти собеседование. Чаще всего перед собеседованиями дают тестовое задание. Соответственно, если с ним справились, готовы к работе.
А что касается фриланса — однозначно сказать сложно, так как там все устроено иначе. Иногда достаточно научиться делать простенькие сайты-магазины и уже можно идти в бой.
Я слежу на Pycon’ами, читаю книги и статьи, но самое главное — не уходить с головой в Python. Можно посмотреть в сторону других языков, учить фреймворки, базы данных, очереди сообщений и т.д. Чаще всего только лишь знаний Python не будет достаточно для того, чтобы получить работу. Нужно однозначно уметь работать с Git, базами данных и знать какой-то фреймворк: flask, fast api, aiohttp, django.