[Перевод] Python за месяц

Руководство для абсолютных чайновичков.
(Прим. пер.: это советы от автора-индуса, но вроде дельные. Дополняйте в комментах.)

image

Месяц — это много времени. Если тратить на обучение по 6–7 часов каждый день, то можно сделать дофига.

Цель на месяц:

  • Ознакомиться с основными понятиями (переменная, условие, список, цикл, функция)
  • Освоить на практике более 30 проблем программирования
  • Собрать два проекта, чтобы применить на практике новые знания
  • Ознакомиться хотя бы с двумя фреймворками
  • Начать работу с IDE (средой разработки), Github, хостингом, сервисами и т. д.


Так вы станете младшим разработчиком (джуном) Python.

Теперь план по неделям.

EDISON Software - web-development
Статья переведена при поддержке компании EDISON Software, которая дает дельные советы юниорам, а также проектирует программное обеспечение и пишет ТЗ на русском и английском.

Первая неделя: познакомьтесь с Python


Разберитесь как все устроено в Python. Проверьте как можно больше вещей.

  • День 1: 4 основных концепта (4 часа): ввод, вывод, переменная, условия
  • День 2: 4 основных концепта (5 часов): список, цикл for, цикл while, функция, импорт модулей
  • День 3: Простые проблемы программирования (5 часов): поменять местами две переменные, перевести градусы Цельсия в градусы по Фаренгейту, посчитать сумму всех разрядов в числе, проверить число на простоту, сгенерировать случайное число, удалить дубликат из списка
  • День 4: Проблемы программирования средней сложности (6 часов): перевернуть строку (проверить на палиндром), посчитать наибольший общий делитель, объединить два отсортированных массива, написать игру на угадывание чисел, посчитать возраст и т.д.
  • День 5: Структуры данных (6 часов): стек, очередь, словарь, кортежи, связный список
  • День 6: ООП — Объектно-ориентированное программирование (6 часов): объект, класс, метод и конструктор, ООП наследование
  • День 7: Алгоритм (6 часов): поиск (линейный и бинарный), сортировка (методом пузырька, выбором), рекурсивная функция (факториал, ряд Фибоначчи), временная сложность алгоритмов (линейных, квадратичных, константных)


Не устанавливайте Python:

Я понимаю, звучит противоречиво. Но поверьте мне. Я знаю кучу людей, у которых отпало всякое желание изучать что-либо после того как они не смогли установить среду разработки или ПО. Я советую сразу залезть в андроид приложение вроде Programming Hero или на сайт Repl и начать исследовать язык. Не ставьте себе задачу первым делом установить Python, если вы не особо подкованы технически.

Вторая неделя: начните разработку программного обеспечения (соберите проект)


Получите опыт разработки ПО. Попробуйте использовать все, что вы выучили, чтобы создать настоящий проект.

  • День 1: Ознакомьтесь со средой разработки (5 часов): Среда разработки это интерактивная среда, где вы будете писать код для самых больших проектов. Вы должны хорошо знать хотя бы одну среду разработки. Я рекомендую начать с VS code install Python extension или Jupyter notebook
  • День 2: Github (6 часов): Изучите Github, создайте репозиторий. Попробуйте закоммитить, запушить код, вычислить разницу между двумя любыми Git деревьями. Также разберитесь с ветвлением, слиянием и пул реквестами.
  • День 3: Первый проект: Простой Калькулятор (4 часа): Ознакомьтесь с Tkinter. Создайте простой калькулятор.
  • День 4, 5, 6: Личный проект (5 часов каждый день): Выберите один из проектов и начните над ним работу. Если у вас нет идей для проекта, посмотрите этот список: несколько хороших проектов на Python
  • День 7: Хостинг (5 часов): Разберитесь с сервером и хостингом, чтобы хостить свой проект. Настройте Heroku и задеплойте сборку вашего приложения.


Почему проект:

Просто слепо следуя шагам в уроке или видео вы не разовьете умение думать. Вы должны применить свои знания в проекте. Как только вы потратите все силы на поиск ответа, вы его запомните.

Третья неделя: освойтесь как программист


Ваша цель на 3 неделе получить общее представление о процессе разработки ПО. Вам не нужно будет оттачивать ваши навыки. Но вы должны знать некоторые основы, так как они повлияют на вашу повседневную работу.

  • День 1: Основы баз данных (6 часов): Базовый SQL-запрос (Create Table, Select, Where, Update), Функция SQL (Avg, Max, Count), реляционная база данных (Нормализация), Внутреннее соединение, Внешнее соединение и т. д.
  • День 2: Используйте базы данных в Python (5 часов): Используйте фреймворк базы данных (SQLite или Pandas), подсоединитесь к базе данных, создайте и добавьте данные в несколько таблиц, считайте данные из таблиц
  • День 3: API (5 часов): Научитесь вызывать API, подучите JSON, микросервисы, REST API
  • День 4: Numpy (4 часа): Ознакомьтесь с Numpy и попрактикуйтесь в его использовании на первых 30 упражнениях
  • День 5, 6: Портфолио сайта (5 часов каждый день): Выучите Django, создайте портфолио сайта на Django, также взгляните на фреймворк Flask
  • День 7: Юнит-тесты, логи, отладка (4 часа): Разберитесь с юнит-тестами (PyTest), научитесь работать с логами и проверять их и используйте брейкпоинты


Реальный масштаб времени (Секрет):

Если вы болеете этой темой и посвящаете ей всего себя, то сможете сделать все за месяц.

  • Учите Python постоянно. Начинайте в 8 утра и занимайтесь этим до 5 вечера. Сделайте перерыв на обед и перекусы (в общей сложности час)
  • В 8 утра составьте список вещей, которые вы будете изучать сегодня. После уделите час времени, чтобы вспомнить и опробовать на практике все, что выучили вчера.
  • C 9 утра до 12 часов дня учите и практикуйтесь поменьше. После обеда наберите обороты. Если вы застряли на какой-то проблеме, поищите ее решение в сети.
  • Каждый день тратьте по 4–5 часов на обучение и 2–3 часа на практику. (максимум можете устроить себе один выходной в неделю)
  • Ваши друзья решат, что вы сумасшедший. Не разочаровывайте их — соответствуйте образу.


Если вы работаете полный рабочий день или учитесь в универе, то вам потребуется больше времени. Будучи студентом мне потребовалось 8 месяцев, чтобы сделать все указанное в списке. Сейчас я работаю старшим разработчиком (сеньором). Моей жене, которая работает в центральном банке США, потребовалось полгода, чтобы закончить все задачи из списка. Неважно сколько времени потребуется. Закончите список.

Четвертая неделя: серьезно отнеситесь к тому, чтобы получить работу (стажера)


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

  • День 1: Резюме (5 часов): Создайте одностраничное резюме. В верхней части резюме разместите краткие сведения о своих навыках. Обязательно добавьте список своих проектов с ссылками на Github.
  • День 2: Портфолио сайта (6 часов): Напишите несколько блогов. Добавьте их в предыдущее портфолио сайта, которое вы сделали.
  • День 3: Профиль LinkedIn (4 часа): Создайте профиль в LinkedIn. Перенесите в LinkedIn все, что есть у вас в резюме.
  • День 4: Подготовка к собеседованию (7 часов): Загуглите самые часто задаваемые вопросы на собеседованиях. Попрактикуйтесь в решении 10 проблем программирования, о которых спрашивают на собеседованиях. Делайте это на бумаге. Вопросы с собеседований можно найти на сайтах вроде Glassdoor, Careercup
  • День 5: Нетворкинг (~ часов): Выберитесь из чулана. Начните ходить на митапы, ярмарки вакансий. Познакомьтесь с рекрутерами и другими разработчиками.
  • День 6: Просто откликнитесь на вакансии (~ часов): Загуглите «работа Python», посмотрите какие вакансии есть на LinkedIn и местных сайтах с предложениями работы. Выберите 3 вакансии, на которые вы откликнитесь. Настройте свое резюме под каждую из них. Найдите 2–3 вещи в списках требований, которые вы не знаете. Потратьте следующие 3–4 дня на то, чтобы в них разобраться.
  • День 7: Учитесь за счет отказов (~ часов): Каждый раз, когда вы получаете отказ, определите для себя 2 вещи, которые вы должны знать, чтобы получить работу. Затем потратьте 4–5 дней на то, чтобы отточить свое мастерство в этих вопросах. Таким образом, после каждого отказа вы будете становиться лучше как разработчик.


Готовность к работе:

Правда в том, что вы никогда не будете готовы к работе на 100%. Все что вам нужно это очень хорошо выучить 1–2 вещи. И ознакомиться с другими вопросами, чтобы преодолеть барьер собеседований. Как только вы получите работу, вы многому научитесь на ней.

Наслаждайтесь процессом:

Обучение это процесс. На вашем пути обязательно будут трудности. Чем их больше — тем вы лучше как разработчик.

Если вы сможете закончить список за 28 дней, вы большой молодец. Но даже если вы выполните 60–70% списка, вы разовьете необходимые качества и навыки. Они помогут вам стать программистом.

Где учиться:

Если вы все еще не знаете c чего начать,


Желаю вам увлекательного путешествия. Будущее в ваших руках.

Перевод: Диана Шеремьёва

© Habrahabr.ru