Обновлённый текст, изначально опубликованный в феврале 2016 на ныне закрытом сайте Mebius.io

Сейчас почти любой профессионал в своей работе сталкивается с информационными технологиями. Особенно это проявляется в науке, потому что обработка данных для исследований всё больше происходит программно, а данных становится всё больше, и программы приходится писать даже тем учёным, которые свою работу с компьютерами никак не ассоциировали. Но даже в повседневной жизни люди всё чаще сталкиваются с разнообразными задачами, связанными с программами: упорядочить и переименовать большое количество семейных фотографий, вовремя запостить что-то в группе в социальной сети, скачать что-то в большом количестве из Интернета. Умение писать простые программы помогает потратить на ненужные операции минимум времени.

Программирование, по выражению советского информатика А.П. Ершова, становится второй грамотностью: во многих странах мира в школах и детских садах наряду с родным и иностранным языками начинают учить языкам программирования – в Европе, Великобритании, Австралии и США. В таких условиях изучение программирования становится хорошим способом как увеличить свои зарплатные ожидания, так и упростить себе жизнь тогда, когда приходится делать много рутинных операций на компьютере. А еще программирование — это очень весело.

Почему Python?

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

Python в представлении художника

В-третьих, Python является полноценным языком программирования во многих сферах ИТ, используется для разработки сайтов и может стать полноценным мостиком к карьере программиста. Допустим, вы убедились, что можно попробовать изучать Python, но нужно предупредить, что есть несколько требований.

  1. Нужно много читать по-английски. Большинство обучающих материалов и документации, связанных с программированием, написаны на английском. К счастью, для многих людей, которые это писали, английский не был родным, поэтому написано всё понятно и довольно просто. Тем не менее, нужно не бояться читать по-английски и понимать, как применить то, что описано.
  2. Изучение языка программирования — как изучение иностранного языка: должна быть регулярность занятий, готовность работать над своими ошибками и отсутствие боязни начинать с нуля. Нельзя свободно говорить по-испански, выучив 100 слов и основные грамматические конструкции, нужно много практики. Также и с языком программирования.
  3. Программирование должно приносить удовольствие. Программа, которая, наконец, заработала, приносит большое удовлетворение, а процесс её написания — радость. Это похоже на решение задачек на математике в школе, когда этот предмет еще не стал совсем скучным.

На старт

Окей, с чего начать? Прежде всего, нужно установить Python себе на компьютер, поскольку в большинстве обучающих материалов, которые мы рассмотрим дальше, нужно выполнять код на своём компьютере.

Хотя чаще всего пишут, что нужно зайти на официальный сайт Python и скачать там заветный exe-файл со средой для работы Python, но так делать не стоит. Стандартная и чистая (на жаргоне – «vanilla») среда Python страдает от нескольких проблем: необходимости вручную задавать переменную PATH в Windows, отсутствия встроенного менеджера пакетов и не самой удобной стандартной среды для разработки. Это всё решается использованием пакета Anaconda, в котором все проблемы уже решены и «всё включено».

Этот же пакет решает вопрос того, в чём писать код на своём компьютере. Самый примитивный вариант — использовать обычный Блокнот, но так делать не стоит. Для удобной и комфортной работы с кодом существуют так называемые интегрированные среды разработки, они же Integrated Development Environment (IDE). Это обычные программы вроде Блокнота, но специально заточенные под программирование. Они умеют помечать синтаксические ошибки и вообще делают написание кода гораздо удобнее. В пакет Anaconda уже включена среда Spyder, которой вполне хватает для первых нескольких недель или месяцев программирования. После неё можно попробовать перейти на профессиональный PyCharm.

Отдельный вопрос — выбор версии Python. В 2008 году была выпущена третья версия Python, несовместимая с предыдущим, вторым поколением. Мгновенного перехода не произошло, поскольку к тому времени было написано уже столько программ на Python 2.*, что это фактически привело к расколу внутри сообщества. Теперь есть два очень похожих, но не до конца совместимых друг с другом языка — Python 2 и Python 3. Многие модули и ИТ-продукты до сих пор не портированы на третью версию, но, по всей видимости, именно Python 3 становится более распространённой и фактически стандартной версией Python, которая, к тому же, более совершенна (самое очевидное – третий Пайтон гораздо удобнее при работе с кодировками, более развернуто о различиях между ними можно прочитать здесь). Короче, Python 3 лучше.

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

Лучше попробовать всё, но начать стоит с интерактивных учебников — они позволяют быстро закрепить основные навыки и не надоедают сразу — с Codeacademy (кажется, это была самая важная ссылка в этой статье, обязательно перейдите по ней) и русскоязычного PythonTutor. Кроме этого, можно пройти образовательный онлайн-курс по Python на Stepic (его достоинство в том, что он на русском языке) и англоязычные Coursera или Udacity. Можно почитать неплохие русскоязычные учебники «Основы программирования на Python» или «Укус Питона», но не стоит их зубрить: лучше в процессе обучения и решения конкретных задачек обращаться к отдельным главам, иначе может быстро стать скучно.

Отдельный и, пожалуй, остающийся важным даже в жизни опытных разработчиков ресурс для обучения — статьи в Интернете. Настоящей кладезью мудрости является вот эта подборка статей про Python в коллективном блоге Хабрахабр.

В процессе написания кода всегда появляются проблемы и вопросы. Исследования показывают, что даже профессионалы чаще обращаются не к официальной документации, а к специализированным вопросно-ответным системам, на которых одни люди задают вопросы, а другие - на них отвечают, прежде всего — к StackOverflow. Поиск существующего решения для программиста — один из важнейших навыков, поэтому в большинстве, при возникновении какой-то заминки, стоит ввести поисковый запрос на английском языке в Google. Например, такой: “list iterator python”.

Что делать дальше?

17-летний юноша за 48 часов, ускоренных до нескольких минут, создаёт свою игрушку

Что делать после того, как вы написали пару своих первых программ, прошли несколько курсов и готовы приступить к чему-нибудь серьёзному?

  1. Не останавливаться и писать код хотя бы по 15 минут в день. Одно из самых важных правил при освоении программирования (как и иностранного языка) - «Не переставай программировать».
  2. Поставить себе интересную, но выполнимую задачу: написать игрушку вроде крестиков-ноликов, или перевести всё расчёты для диплома из Stata или SPSS в Python. Можно заниматься проектами, которые помогут другим людям: открытым программным обеспечением или задачами по извлечению и анализу данных (например, для Инфокультуры).
  3. Освоить Git, сделать профиль на Github, выложить туда немного своего кода и устроиться на стажировку или работу.