- Мне 24. Работаю по 12 часов, но хочу накопить и начать программирование Python, сколько времени займет до уровня Junior, в свободное время?
- Python за месяц
- Первая неделя: познакомьтесь с Python
- Вторая неделя: начните разработку программного обеспечения (соберите проект)
- Третья неделя: освойтесь как программист
- Четвертая неделя: серьезно отнеситесь к тому, чтобы получить работу (стажера)
Мне 24. Работаю по 12 часов, но хочу накопить и начать программирование Python, сколько времени займет до уровня Junior, в свободное время?
Учитывая вашу пометку про 12-часовой рабочий день, вам следует сразу реалистично подойти к вашей идее — вряд ли вам удастся больше 2 часов в рабочий день отдавать учёбе, и реально вы сможете практиковаться только в выходные.
Очень многое зависит от вашей мотивации и того, как быстро вы сформируете в голове нужные концепции. Постарайтесь как можно раньше определиться с одним конкретным направлением что вы будете писать на питоне: веб-приложения, анализ данных, научное ПО типа моделирования химических процессов, какие-нибудь популярные сегодня классификаторы на основе нейронных сетей, генеративное искусство, скрипты для автоматизации других программ, ещё что-то. Не учите «просто» питон, ваша первая задача — писать реальные приложения, для этого потратьте сразу на старте некоторое время, чтобы оценить, что вообще люди делают на питоне. Я пишу всё это, потому что у вас в вопросе написано «программирование Python», без конкретики, а обучение концепциям предметной области это половина всего обучения программированию, если не больше. Сам синтаксис конкретного языка станет малозначимой деталью в определённый момент.
Конкретно про время, возьмём конкретный пример курса по веб-разработке. Специалисты, которые собирали курс по питону на Яндекс.Практикуме, выделили на него 9 месяцев и я по своему опыту разработчика ПО считаю, что это довольно реалистичный срок, учитывая содержание курса. Возможно, даже, оптимистичный. Там первый самый, «вводный» раздел оценён в 20 часов — по 2 часа в день вы пройдёте его за две недели.
Вопрос в том, хотите ли вы идти именно в веб-разработку. Но в любом случае, вам нужно рассчитывать на то, что обучение и практика у вас займёт не дни, не недели, а месяцы. Это нормально.
Python за месяц
Месяц — это много времени. Если тратить на обучение по 6-7 часов каждый день, то можно сделать дофига.
- Ознакомиться с основными понятиями (переменная, условие, список, цикл, функция)
- Освоить на практике более 30 проблем программирования
- Собрать два проекта, чтобы применить на практике новые знания
- Ознакомиться хотя бы с двумя фреймворками
- Начать работу с IDE (средой разработки), Github, хостингом, сервисами и т. д.
Статья переведена при поддержке компании EDISON Software, которая дает дельные советы юниорам, а также проектирует программное обеспечение и пишет ТЗ на русском и английском.
Первая неделя: познакомьтесь с Python
Разберитесь как все устроено в Python. Проверьте как можно больше вещей.
- День 1: 4 основных концепта (4 часа): ввод, вывод, переменная, условия
- День 2: 4 основных концепта (5 часов): список, цикл for, цикл while, функция, импорт модулей
- День 3: Простые проблемы программирования (5 часов): поменять местами две переменные, перевести градусы Цельсия в градусы по Фаренгейту, посчитать сумму всех разрядов в числе, проверить число на простоту, сгенерировать случайное число, удалить дубликат из списка
- День 4: Проблемы программирования средней сложности (6 часов): перевернуть строку (проверить на палиндром), посчитать наибольший общий делитель, объединить два отсортированных массива, написать игру на угадывание чисел, посчитать возраст и т.д.
- День 5: Структуры данных (6 часов): стек, очередь, словарь, кортежи, связный список
- День 6: ООП — Объектно-ориентированное программирование (6 часов): объект, класс, метод и конструктор, ООП наследование
- День 7: Алгоритм (6 часов): поиск (линейный и бинарный), сортировка (методом пузырька, выбором), рекурсивная функция (факториал, ряд Фибоначчи), временная сложность алгоритмов (линейных, квадратичных, константных)
Я понимаю, звучит противоречиво. Но поверьте мне. Я знаю кучу людей, у которых отпало всякое желание изучать что-либо после того как они не смогли установить среду разработки или ПО. Я советую сразу залезть в андроид приложение вроде 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 часа на практику. (максимум можете устроить себе один выходной в неделю)
- Ваши друзья решат, что вы сумасшедший. Не разочаровывайте их — соответствуйте образу.
Четвертая неделя: серьезно отнеситесь к тому, чтобы получить работу (стажера)
Ваша цель четвертой недели всерьез задуматься об устройстве на работу. Даже если вы не хотите получать работу прямо сейчас, вы многому научитесь в процессе собеседований.
- День 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 чего начать,
- Programming Hero (увлекательное андроид приложение для изучения Python)
- Изучение Python для машинного обучения (бесплатные ресурсы для обучения в веб-версии)
- Серия видео на YouTube (смотрите видео и учитесь)
Перевод: Диана Шеремьёва