План развития Backend from 0

Основан на https://roadmap.sh/backend
Справочный материал по основам программирования на русском: https://hexlet.ru/introduction_to_programming

Todo:

Совет, как не забить на обучение

Если тебе будет интересно разбираться, делать задачки, то важно сделать так, чтобы этот интерес не пропадал.
Для этого стоит выработать какой-то режим или правило, когда ты останавливаешься в обучении на сегодняшний день и продолжишь в следующий раз.
Это поможет тебе сохранять интерес, как будто ты смотришь крутой сериал: не все серии сразу, а потом грусть от того, что сериал закончился. А постоянное желание прийти с работы и посмотреть еще одну серию или сделать еще одну задачку
Главное правило: не перенапрягайся и не пытайся сразу изучить всё, если чувствуешь, что что-то не получается попробуй отложить это хотя бы на полчаса. Если и потом не получится, то попроси помощи :)

Как пользоваться этим планом

Каждый шаг плана начинается с двух блоков:

Навыки, которые нужны для блока

  • тут перечислены навыки и знания, которые нужны, чтобы понять происходящее на этом шаге

Навыки, которые получишь в этом блоке

  • тут перечислены навыки, которые у тебя должны появиться после изучения этого шага

Каждый шаг состоит из различных действий и инструкций, со ссылками на дополнительную информацию и ресурсы

Так же в каждом шаге есть задание для самопроверки, его следует выполнять всегда и полностью

Шаг 0: Подготовительный

Навыки, которые нужны для блока
Навыки, которые получишь в этом блоке

  • аккаунт на github
  • аккаунт в repl.it
  • аккаунт на hexlet
  • аккаунт на codewars

Первое время ты будешь писать код и выполнять задания в браузере, чтобы быстрее начать работать с языком, а настройку окружения для разработки у себя на компьютере оставить на попозже

Заведи себе аккаунт на https://github.com
Он понадобится тебе в дальнейшем, пока достаточно просто того, чтобы ты мог в него залогиниться
(решили, что будешь сразу работать в PyCharm) Залогинься на сайте https://repl.it при помощи созданного аккаунта на github

Зарегистрируйся на бесплатный курс по синтаксису python на Hexlet

Зарегистрируйся на codewars, он понадобится в тот момент, когда ты будешь готов самостоятельно решать простые задачки на Python

Шаг 1: Изучи основы языка

Основные рекомендации

Пройди курс по базовому синтаксису языка на Hexlet, лучше двигаться последовательно, к задачам для самопроверки можно приступать в тот момент, когда пройдешь необходимые темы

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

Если будут трудности, то есть https://pythontutor.com/visualize.html, который позволяет визуализировать запуск кода на python, чтобы было понятнее что происходит (особенно полезно при изучении циклов и рекурсии)

Так же для изучения циклов отлично поможет вот это руководство: https://pythontutor.ru/lessons/while/

Задания для самопроверки

Все задания стоит выполнять в repl.it

Придумай алгоритм для победы в игре

Опиши словами алгоритм по угадыванию числа

Дополнительные материалы:

Основные концепции Python в одном файле
Информация по темам сверх лекций Hexlet

Список идей для проектов на python

Шаг 2: Окружение и вспомогательные навыки

Основные рекомендации

Изменить на PyCharm

Установи себе редактор, для простоты будем использовать VSCode

  1. Воспользуйся инструкцией для настройки окружения и установки VSCode
  2. Выбери себе классную тему
  3. Потренируйся использовать горячие клавиши

Установи git

  1. Найди инструкцию для установки на свою ОС
  2. Выполни все шаги из инструкции

Пройди курс по git на Hexlet

Старайся каждый день (каждый выходной) решать задачу с codewars
Начни с простых задач ранга 8, разберись с интерфейсом, если почувствуешь себя увереннее, то переходи к рангу 7
Старайся писать код в VS Code, и копировать его для проверки в интерфейс codewars
Каждую задачу делай в отдельном файле, проверяй, что оформление соответствует принципам оформления кода (подробнее в доп. материалах)

Задания для самопроверки:

Дополнительные материалы

Курс по работе с командной строкой
Интерактивный курс: Learn Git Branching

Принципы оформления python-кода

Шаг 3: Server-side разработка

Изучить темы языка Python

  1. Итераторы и Генераторы
  2. Интерактивный курс по RegExp, RegExp в Python
  3. OOP в Python
    1. Классы
    2. Наследование
    3. Методы
  4. Работа с аргументами CLI
    1. Встроенный пакет argparse

Выясни для чего нужен сервис PyPi
Найди и прочитай как и для чего используется pip
Изучи что такое virtual-environment в Python

Создай virtual env для дальнейшей разработки

Разберись что такое клиент-серверная архитектура: в этом курсе

Разберись с протоколом HTTP по статье: на MDN

Продолжай решать задачи на codewars, кроме своего решения анализируй популярные решения, пытайся понять как они работают

Задание для самопроверки:

Изучи более сложные темы языка Python

  1. Асинхронный питон и asyncio
  2. Тестирование python-приложений

Разберись как можно выполнять запросы к серверным приложениям

  1. Postman
  2. CURL

Опционально: найди дополнительные материалы по git, стоит разобраться со следующими понятиями

  1. git rebase
  2. git reflog
  3. github flow

Задание для самопроверки:

Шаг 4: Backend-разработка

Начни изучать документацию к backend-фреймворку FastApi

Познакомься с концепцией реляционных баз данных

  1. SQL, интерактивный тренажер SQL
  2. SQLite
  3. Postgresql

Познакомься с концепцией хостинга, найди бесплатный хостинг для своих проектов и зарегистрируй аккаунт

Опционально: познакомься с концепцией DevOps

  1. Познакомься с принципами контейнеризации и утилитой Docker
  2. Познакомься с утилитой docker-compose
  3. Придумай способ, которорым ты будешь синхронизировать github-репозиторий с хостингом

Изучи дополнительные концепции в построение клиент-серверной архитектуры:

  1. REST
  2. Cookies
  3. Авторизация и аутентификация
    1. JWT
    2. OAuth-2
  4. SSL
    1. Сертификаты и HTTPS
    2. Получение сертификата через lets-encrypt

Задание для самопроверки