Полгода я искал ответы на эти вопросы, тщательно исследуя предметную область. Я обнаружил много полезных советов. Особенно в заметке Василия Большакова и на Хекслете. Но мне не хватало структуры. Знания нарастали со всех сторон и превращались в кучу. Чтобы структурировать процесс обучения и оценить его масштаб, я собрал план.
Составляя программу, я ориентировался на философию Тима Петерса, который сформулировал The Zen of Python:
Простое лучше, чем сложное
Сложное лучше, чем запутанное
Практичность важнее безупречности
Ошибки никогда не должны замалчиваться
Сейчас лучше, чем никогда...
План обучения
В разработке я новичок, поэтому мой путь начинался с самых азов. На текущий момент я прошел примерно половину. Скорее всего я что-то упустил, в чем-то не разобрался как следует. Если вы хотите поделиться опытом или советом, то смело пишите в комментарии. Также важно отметить, что трек обучения рассчитан на пользователей Мак ОС. Другие платформы имеют свои особенности, о них говорить мы не будем.
Программа разбита по шагам. Последовательность условная. Внутри каждого шага есть задачи со звездочкой — желательные, но необязательные.
1. Понять зачем вам это надо
У меня две цели: быстро проводить анализ данных и создавать прототипы для проверки идей. Для этого мне достаточно знать несколько подходящих библиотек, понимать чужой код и немного писать свой. Какая цель у вас?
2. Подружиться с командной строкой
- Освоить основы работы с Bash
- Набить шишки с Git: простое руководство, основательный Pro Git, клевый Oh shit, git!
- *Разобраться в SSH
3. Настроить среду разработки и рабочее окружение
- Начать с подходящего текстового редактора: Sublime Text, Atom…
- Потерять веру в себя впервые столкнувшись с Vim
- Дорасти до IDE
Выбор разработчиков, проходивших интервью в Triplebyte
- Создать виртуальное окружение
- Поставить менеджер пакетов
- *Начать использовать виртуализацию
- *Познакомиться с Докером
- *Узнать про системы управления конфигурацией
“I am a huge believer in learning by doing, and there are a lot of opportunities on the job where I can hone my Python skills through Deliberate Practice” Robert Chang
4. Изучить синтаксис и структуры данных Python на практике
- Прочитать Python Deliberate Practice для вдохновения и подобрать проекты для практики
- Не сачковать в изучении документации
- Научиться оформлять код и структурировать проекты
- Освоить встроенные функции
- Разобраться в ООП
- Потрогать руками функциональное программирование
Для тех кто любит онлайн-курсы
5. Полистать библиотеки
- Взглянуть на подборку Awesome Python
- Исследовать библиотеки для анализа данных: numpy, scipy, pandas, matplotlib, seaborn, scikit-learn
- Научиться работать с json
- Разобраться в requests, scrapy, Beautiful Soup
6. Пощупать базы данных
- Научиться писать SELECT запросы средней сложности
- *Познакомиться с реляционной алгеброй
Дополнительно
Пайтон на одной картинке
Карта развития разработчика
Книги «на все времена»
Спасибо Андрею Свердлову за дельные комментарии.
Комментарии (21)
Andy_U
09.03.2018 00:02Я бы добавил PEP-8. Как «Отче наш».
cl0ne
09.03.2018 18:58+1А я бы к PEP-8 добавил
vladob
09.03.2018 01:03Я бы не добавлял (пока) ничего.
И не советовал бы, до того, как узнал бы больше о жаждущем знаний. Из ключевых вопросов:
- возраст
- образовательная база
- стартовый уровень знаний на начало "забега" и сейчас
- предполагаемый объект приложения знаний
- время
- прочие ресурсы в распоряжении, необходимые для поддержки, например, бренного тела на то время, пока голова занята учебой
- трезвая оценка собственных способностей
smer44
09.03.2018 02:14а какое отношение к питону имеет пункт 2?
vladob
09.03.2018 05:45Чтобы советовать ответственно в щепетильных вопросах самообразования, важно понимать, от какого уровня человек стартует.
Ну, я так, по-крайней мере думаю.smer44
09.03.2018 07:37нет ну действительно, git понятен интуитивно если пользоваться не командной строкой а smartgit а bash и SSH имеют к питону такое же отношение как и к любому другому языку, или я недопонимаю причину??
ckpunT
09.03.2018 08:12Хотя бы понимать различия в командах:
python run.py
python ./run.py&
И что эта строчка означает:
#!/usr/bin/env python
Что выдает метод os.environ и от чего эти переменные зависят.
И почему когда я запускаю программу от "имени себя" os.environ показывает одни параметры, а из под sudo другие.
Ну а что бы программа стартовала автоматом при старте сервера, тоже надо немного знать shell.
smer44
09.03.2018 08:17кстати убедил, можешь касательно SSH сказешь?))
дополню от себя: не помешал бы материал по функциональному программированию, матанализ, теорию графоф, статистику а там и можно ML
KoMePcAHT
09.03.2018 10:12+2не совсем онлайн курсы, но попрактиковаться можно здесь pythontutor.ru
мне в свое время помог этот ресурс
DaneSoul
09.03.2018 11:52+1Рекомендую весьма дельные краткие туториалы на английском по Python и куче других языков и технологий.
s_suhanov
09.03.2018 13:58+1Очень хороший курс в SoloLearn по python. Плюс у JetBrains есть образовательная платформа PyCharm Edu — очень удобно обучаться с ее помощью.
vladob
11.03.2018 00:31Я, скоре всего, выразился бы в других словах, но первым трем пунктам от гуру от питона альтернатив нет с возможной поправкой на название книжки.
Пукт 4 и далее уже следует планировать с учетом реальностей жизни.
А так все верно, ИМХО
Desprit
Добавил бы от себя обязательный просмотр исходного когда тех библиотек, с которыми сталкиваешься. Во-первых, понимание чужого кода и написание своего собственного — это небо и земля (во всяком случае, на первых порах). Во-вторых, всегда можно почерпнуть какие-то интересные обороты. А иногда, напротив, ужаснуться и запомнить как делать нельзя :)