План развития Backend from 0
Основан на https://roadmap.sh/backend
Справочный материал по основам программирования на русском: https://hexlet.ru/introduction_to_programming
Todo:
- Изменить в плане работу с VSCode на PyCharm
Совет, как не забить на обучение
Если тебе будет интересно разбираться, делать задачки, то важно сделать так, чтобы этот интерес не пропадал.
Для этого стоит выработать какой-то режим или правило, когда ты останавливаешься в обучении на сегодняшний день и продолжишь в следующий раз.
Это поможет тебе сохранять интерес, как будто ты смотришь крутой сериал: не все серии сразу, а потом грусть от того, что сериал закончился. А постоянное желание прийти с работы и посмотреть еще одну серию или сделать еще одну задачку
Главное правило: не перенапрягайся и не пытайся сразу изучить всё, если чувствуешь, что что-то не получается попробуй отложить это хотя бы на полчаса. Если и потом не получится, то попроси помощи :)
Как пользоваться этим планом
Каждый шаг плана начинается с двух блоков:
- тут перечислены навыки и знания, которые нужны, чтобы понять происходящее на этом шаге
- тут перечислены навыки, которые у тебя должны появиться после изучения этого шага
Каждый шаг состоит из различных действий и инструкций, со ссылками на дополнительную информацию и ресурсы
Так же в каждом шаге есть задание для самопроверки, его следует выполнять всегда и полностью
Шаг 0: Подготовительный
- желательно пройти курс по введению в программирование
- аккаунт на github
- аккаунт в repl.it
- аккаунт на hexlet
- аккаунт на codewars
Первое время ты будешь писать код и выполнять задания в браузере, чтобы быстрее начать работать с языком, а настройку окружения для разработки у себя на компьютере оставить на попозже
Заведи себе аккаунт на https://github.com
Он понадобится тебе в дальнейшем, пока достаточно просто того, чтобы ты мог в него залогиниться
(решили, что будешь сразу работать в PyCharm) Залогинься на сайте https://repl.it при помощи созданного аккаунта на github
Зарегистрируйся на бесплатный курс по синтаксису python на Hexlet
Зарегистрируйся на codewars, он понадобится в тот момент, когда ты будешь готов самостоятельно решать простые задачки на Python
Шаг 1: Изучи основы языка
- аккаунт на hexlet
- аккаунт на repl.it
- знание базового синтаксиса
- переменные
- условия
- циклы
- функции
- взаимодействие с консолью
- навык написания небольших интерактивных программ
Основные рекомендации
Пройди курс по базовому синтаксису языка на Hexlet, лучше двигаться последовательно, к задачам для самопроверки можно приступать в тот момент, когда пройдешь необходимые темы
Выбери одну из ссылок с материалами, которые представлены в секции Дополнительные материалы
Составь список тем, которых не было в курсе Hexlet, для каждой темы подумай в каком случае она может быть полезна, постарайся для каждой темы придумать задачу и написать программу. Если не получается самостоятельно, то обратись к ментору
Если будут трудности, то есть https://pythontutor.com/visualize.html, который позволяет визуализировать запуск кода на python, чтобы было понятнее что происходит (особенно полезно при изучении циклов и рекурсии)
Так же для изучения циклов отлично поможет вот это руководство: https://pythontutor.ru/lessons/while/
Задания для самопроверки
Все задания стоит выполнять в repl.it
Программа загадывает целое число от 1 до 100 и просит пользователя угадать
В ответ на введенное число программа сообщает если число: больше, меньше или равно загаданному
Игра продолжается до момента, когда человек угадывает число
Для выполнения потребуется пройти уроки про:
- переменные
- условия
- циклы
- вывод информации в консоль
- модуль random
Так же нужно будет погуглить как в языке:
- получить данные от пользователя
Опиши словами алгоритм по угадыванию числа
Используя алгоритм из прошлого вопроса: напиши программу, которая пытается угадать число из диапазона 1 - 100, пользователь выбирает из списка один из трех вариантов: больше, меньше, угадал
Для выполнения задания потребуется пройти уроки:
- переменные
- условия
- циклы
- вывод информации в консоль
- арифметические операции
Погуглить:
- Как получать данные от пользователя
В первой и второй программах доработать код таким образом, чтобы программа выводила количество попыток
Дополнительные материалы:
Основные концепции Python в одном файле
Информация по темам сверх лекций Hexlet
Список идей для проектов на python
Шаг 2: Окружение и вспомогательные навыки
- завершенный курс на Hexlet
- выполненные задания для самопроверки
- аккаунт на github
- аккаунт на codewars
- настройка окружения для работы
- работа с VCS: git
- работа с github
- навык решения базовых алгоритмических задач
- использование пакетов из стандартной бибилотеки python
- чтение чужого кода
Основные рекомендации
Установи себе редактор, для простоты будем использовать VSCode
- Воспользуйся инструкцией для настройки окружения и установки VSCode
- Выбери себе классную тему
- Потренируйся использовать горячие клавиши
Установи git
- Найди инструкцию для установки на свою ОС
- Выполни все шаги из инструкции
Пройди курс по git на Hexlet
Старайся каждый день (каждый выходной) решать задачу с codewars
Начни с простых задач ранга 8, разберись с интерфейсом, если почувствуешь себя увереннее, то переходи к рангу 7
Старайся писать код в VS Code, и копировать его для проверки в интерфейс codewars
Каждую задачу делай в отдельном файле, проверяй, что оформление соответствует принципам оформления кода (подробнее в доп. материалах)
Задания для самопроверки:
- Создай новый публичный репозиторий на github
- Склонируй репозиторий к себе на компьютер используя github
- В репозитории создай файл README.md
- Скопируй в папку все файлы с решенными задачами
- Закоммить файлы и запуш его на github
- Минимум за месяц должно получиться 6-8 задач
Дополнительные материалы
Курс по работе с командной строкой
Интерактивный курс: Learn Git Branching
Принципы оформления python-кода
Шаг 3: Server-side разработка
- Пройден курс по базовому синтаксису
- Настроено окружение, редактор, git
- Нет проблем с решением задач 8 kuy на codewars
- OOP
- синтаксис Python связанный с OOP
- поиск и работа с пользовательскими модулями для Python
- клиент-серверная архитектура и протоколы взаимодействия
- асинхронный python
Изучить темы языка Python
- Итераторы и Генераторы
- Интерактивный курс по RegExp, RegExp в Python
- OOP в Python
- Классы
- Наследование
- Методы
- Работа с аргументами CLI
Выясни для чего нужен сервис PyPi
Найди и прочитай как и для чего используется pip
Изучи что такое virtual-environment в Python
Создай virtual env для дальнейшей разработки
Разберись что такое клиент-серверная архитектура: в этом курсе
Разберись с протоколом HTTP по статье: на MDN
Продолжай решать задачи на codewars, кроме своего решения анализируй популярные решения, пытайся понять как они работают
Задание для самопроверки:
- запускаться в нескольких экземплярах
- принимает запросы на url
/pingи/pong - при запуске принимает аргумент командной строки
--main - при запуске принимает параметр
--client=127.0.0.1:<port> - main-сервер при старте начинает отправлять запросы на
/pingклиента clientпринимает запрос на урл/pingи в ответ запрашивает url/pongу сервера, который к нему обратился
Потребуется знания:
- принципы работы http-серверов
- способы создания http-сервера на python
- установка сторонних пакетов через pip
- при запуске принимает аргумент командной строки
--destв котором можно указать директорию для сохранения файлов - при запуске принимает параметр
--url– адрес страницы с которой нужно скачивать изображения
Потребуется знания:
- принципы работы http-серверов
- способы создания http-сервера на python
- установка сторонних пакетов через pip
Изучи более сложные темы языка Python
- Асинхронный питон и asyncio
- Тестирование python-приложений
Разберись как можно выполнять запросы к серверным приложениям
- Postman
- CURL
Опционально: найди дополнительные материалы по git, стоит разобраться со следующими понятиями
- git rebase
- git reflog
- github flow
Задание для самопроверки:
- при запуске принимает аргумент командной строки
--destв котором можно указать директорию для сохранения файлов - при запуске принимает параметр
--url– адрес страницы с которой нужно скачивать изображения - при запуске принимает параметр
--max-requestsкоторый указывает сколько одновременных загрузок изображений может быть
Потребуется знания:
- принципы работы http-серверов
- способы создания http-сервера на python
- установка сторонних пакетов через pip
- понимание принципов асинхронной работы в python
- работа с asyncio
- работа с aiohttp
Шаг 4: Backend-разработка
- Пройден курс по базовому синтаксису
- Настроено окружение, редактор, git
- Нет проблем с решением задач 8 kuy на codewars
- работа с бекенд фреймворком FastAPI
- работа с реляционными базами данных
- базовый SQL
- понятие хостинга
- принципы REST
Начни изучать документацию к backend-фреймворку FastApi
Познакомься с концепцией реляционных баз данных
- SQL, интерактивный тренажер SQL
- SQLite
- Postgresql
Познакомься с концепцией хостинга, найди бесплатный хостинг для своих проектов и зарегистрируй аккаунт
Опционально: познакомься с концепцией DevOps
- Познакомься с принципами контейнеризации и утилитой Docker
- Познакомься с утилитой docker-compose
- Придумай способ, которорым ты будешь синхронизировать github-репозиторий с хостингом
Изучи дополнительные концепции в построение клиент-серверной архитектуры:
- REST
- Cookies
- Авторизация и аутентификация
- JWT
- OAuth-2
- SSL
- Сертификаты и HTTPS
- Получение сертификата через lets-encrypt
Задание для самопроверки
Придумай свою идею для бота
Потребуется знания:
- работа с FastAPI
- работа с хостингом
- отправка кода на хостинг
- работа с библиотекой по