Дорожная карта по становлению Python Backend разработчиком. Перед началом прочтения рекомендую посмотреть это видео.
Если вы совсем новичок, который ничего не знает о компьютерных технологиях и программировании, вам стоит для начала освоить базу. Для этого хорошо подходит курс CS50.
CS50 — курс Гарвардского университета о компьютерных технологиях. Курс читается на английском языке. Если вы не дружите с английским, для вас есть перевод на русском языке. К сожалению, перевод охватывает старую версию курса за 2016 год, однако он всё равно подойдёт для начинающих.
Что вы узнаете, прослушав этот курс:
- Основы компьютерных наук и программирования;
- Концепции алгоритмов и алгоритмичности мышления. Какие задачи можно решать с помощью программирования и каким образом;
- Концепции абстракции, структуры данных, инкапсуляции, управления памятью. Основы компьютерной безопасности. Процесс разработки ПО и веб-разработка;
- Основы языка программирования C и Scratch;
- Основы баз данных и SQL;
- Веб-разработка: основы CSS, HTML, JavaScript и PHP;
- Основы подготовки презентации проектов по программированию.
Курс CS50 меняется каждый год. Актуальные лекции можно найти на официальном канале CS50 на английском языке.
Плейлисты с лекциями за 2020-2022 года:
- Теоретический минимум по Computer Science. Все что нужно программисту и разработчику | Фило Владстон Феррейра
- Базовый синтаксис
- Переменные и типы данных
- Циклы и условные операторы
- Булева алебра, логические операторы
- Строки и форматирование
- Списки, кортежи, словари, множества
- Индексы и срезы
- Функции, встроенные функции
- Работа с файлами
- Обработка ошибок и исключений
- Виртуальное окружение
- Менеджер пакетов pip
- "Поколение Python": курс для начинающих
- "Поколение Python": курс для продвинутых
- CS50's Introduction to Programming with Python
- Добрый, добрый Python - уроки для начинающих
- Тимофей Хирьянов: Практика программирования на Python 3 (2020)
- Python за 7 часов с нуля
- Интерактивный учебник Python — Раздел «Learn the Basics»
- Многопрофильный учебник Python — Раздел «Основы Python»
- Python Tutorials by Corey Schafer
- Изучаем Python: программирование игр, визуализация данных, веб-приложения. 3-е изд. | Мэтиз Эрик
- ООП
- Классы и объекты
- Атрибуты и методы
- Инкапсуляция, наследование, полиморфизм, абстракция
- SOLID
- Рекурсия
- Лямбда функции
- Позиционные и именованные аргументы функций (args, kwargs).
*
и/
в сигнатуре функций. - Контекстные менеджеры
- Итераторы и генераторы
- Генераторы списков и словарей
- Декораторы
- Распаковка, упаковка через
*
и**
- Поверхностное и глубокое копирование объектов
- Регулярные выражения
- Логирование
- Функции
map()
,filter()
,reduce()
- Правила оформления кода: PEP 8
- Объектно-ориентированное программирование (ООП) на Python 3
- Python 3. Регулярные выражения
- Документация-туториал
- Интерактивный учебник Python — Раздел «Advanced Tutorials»
- Intermediate Python Programming Course
- Основы компьютерных и веб-технологий с Python от Диджитализируй!
- 100 Days of Code: The Complete Python Pro Bootcamp for 2023
- Python. Чистый код для продолжающих | Эл Свейгарт
- Изучаем Python. Том 1-2. 5-е изд. | Марк Лутц
- Внутреннее устройство CPython
- GIL
- GC (garbage collector)
- Библиотеки collections, functools, itertools
- Интерфейсы, протоколы и ABC
- Магические (dunder) методы
- Конкурентность в Python
- Многопоточность
- Многопроцессорность
- Асинхронность, asyncio, aiohttp
- Метаклассы
- Дескрипторы
- Аннотации типов
- Замыкания
- dataclasses
- classmethod/staticmethod
- Тестирование
- unittest
- pytest
- doctest
- Канал «Хитрый Питон»
- Yandex: Воркшопы по основам Python
- Threading in Python Explained
- Expert Python Tutorials
- Python. К Вершинам Мастерства. 2-е изд. | Лусиану Рамальо
- Чистый Python. Тонкости программирования для профи | Бейдер Дэн
- Типизированный Python для профессиональной разработки | Алексей Голобурдин
- Многопрофильный учебник Python — Раздел «Python ООП»
- Базовые структуры
- Ассоциативный массив
- Стек (LIFO)
- Очередь (FIFO)
- Двусвязная очередь
- Связный список
- Линейный однонаправленный список
- Двусвязный список (двунаправленный связный список)
- Кольцевой связный список
- Массивы
- Хэш-таблицы
- Хеш функция
- Методы разрешения колизий
- Метод цепочек
- Последовательность проб
- Деревья
- Бинарное дерево поиска
- Красно-чёрное дерево
- Куча
- B-дерево (а также B+, B*)
- LSM Дерево
- R-дерево
- АВЛ дерево
- Поворот дерева
- Графы
- Поиск в глубину
- Поиск в ширину
- Алгоритм Дейкстры
- Алгоритмы сортировки
- Алгоритмы поиска
- Алгоритмы хеширования
Для прокачки алгоритмов регистрируемся на CodeWars и LeetCode, решаем по одной задаче на каждой из платформ ежедневно, как минимум.
- Алгоритмы и структуры данных на Python
- Тимофей Хирьянов: Алгоритмы и структуры данных на Python 3 (2017-2018)
- Канал с объяснениями алгоритмов
- Сложность алгоритмов за 11 минут
- Теория по алгоритмам и структурам данных
- Грокаем алгоритмы. Иллюстрированное пособие для программистов и любопытствующих | Бхаргава Адитья
- Алгоритмы. Руководство по разработке. 3-е изд. | Стивен Скиена
- Алгоритмы. Построение и анализ | Клиффорд Штайн, Рональд Ривест
- HTTP
- Разница между HTTP и HTTPS
- Типы HTTP запросов
- Статус коды
- Поля и заголовки HTTP запросов
- Порты
- Cookies
- SSL/TLS
- DNS
- IP: IPv4 и IPv6
- Сетевые протоколы
- OSI
- TCP и UDP
- TCP/IP
- FTP, SMPT, POP3, IMAP
- WebSockets
- Reverse proxy
- Нормальные формы, нормализация и денормализация БД
- Ключи: первичные, внешние, составные
- Функции, представления, процедуры
- Индексы
- Оконные функции
- Транзакции
- Базовый синтаксис SQL: SELECT, UPDATE, INSERT, DELETE
- Объединение таблиц и агрегаторные функции: JOIN, HAVING, GROUP BY
- ACID
- Репликация и шардинг
- Работа с PostgreSQL и SQLite в Python с помощью библиотек psycopg2 или sqlite3
- Инструменты администрирования: pgAdmin или SQLiteStudio
-
SQL:
- SQLite
- PostgreSQL
- MySQL
-
NoSQL:
- Redis
- Memcached
- Tarantool
- MongoDB
- Курс лекций по базам данных от Технопарка
- Database Management Systems
- Python SQLite
- Уроки PostgreSQL для начинающих. PostgreSQL с нуля
- Базы данных от R class Tech
- Practical Database Design: Theory Into Practice
- Интерактивный учебник SQL
- Многопрофильный учебник Python — Раздел «СУБД SQLite»
- Принципы нормализации реляционных баз данных
- Нормальные формы баз данных: Объясняем на пальцах
- Что такое ACID? | Самый частый вопрос бэкендеру
- PostgreSQL. Основы языка SQL | Евгений Моргунов
- PostgreSQL 11. Мастерство разработки | Ганс-Юрген Шениг
- Классическая теория баз данных
- Руководство SQLite на английском
- Руководство SQLite на русском
- Документация PostgreSQL на английском
- Документация PostgreSQL на русском
- Руководство PostgreSQL на русском
Все бэкендеры должны знать хотя бы азы фронтенд технологий. HTML (язык гипертекстовой разметки) и CSS (каскадные таблицы стилей) — база, позволяющая оформлять веб-страницы. Вы должны уметь минимально верстать страницы. Нет, вы не должны делать это профессионально, но вы должны знать о семантической разметке, о настройке шрифтов, местоположений блоков на странице, margins и paddings, уметь использовать flex-боксы, флоаты, таблицы и т.д. Кстати, про адаптивную верстку тоже хорошо бы знать и уметь.
- Руководство по HTML на русском
- Справочник по HTML на русском
- Руководство по CSS на русском
- Справочник CSS на русском
- Руководство по HTML5 и CSS3
- Bootstrap-4 Документация на русском языке
- Bootstrap-5 Документация на русском языке
- Создание проекта и приложений
- Модели
- Миграции
- ORM
- Роуты (Urls)
- Views (FBV и CBV)
- Templates
- Django Admin
- Static files
- Формы (Model Forms)
- Сигналы
- Middleware
- Кэширование
- Контекстные менеджеры
- Авторизация и аутентификация
- User model: roles, permissions
- Сессии
- Management команды
- OAuth
- Тестирование в Django
- To Do App Одно из самых простых приложений для знакомства с Django. Вы научитесь настраивать приложение, работать с базой данных, выполнять базовые CRUD-операции. Попробуйте сделать приложение дважды: с использованием function based views (FBV) и class based views (CBV).
- Интернет-магазин Вместе с основами CRUD и аутентификацией, которые нужны большинству интернет-магазинов, вы изучите более сложные отношения между сущностями базы данных. Добавьте также поиск, пагинацию и роли пользователей к вашему магазину.
- Социальная сеть Проект для тренировки проектирования базы данных. Подумайте, как вы реализуете функции "друзья" или "подписки". Как насчет лайков и определения того, какой пост увидит пользователь в своей ленте?
- Личный блог Создайте собственный блог, в котором, например, будете делиться этапами изчения Python и Django. Начните с базовых CRUD-операций для добавления и редактирования постов блога. Научитесь работать с авторизацией и аутентификацией пользователей. Расширьте функциональность приложения, добавив комментарии, подписки на авторов. Сделайте поиск и пагинацию, чтобы обеспечить удобный интерфейс для пользователей.
- Бэкенд разработка на Django: с нуля до специалиста
- Сайт на Django 3. Сервис по сбору данных.
- Многопрофильный учебник Python — Раздел «Django»
- Customer Management App (Django 3)
- Django Project: djblogger
- Django Project - Build a Simple Blog
- Django - Ecommerce Project
- Django 3 для python (уроки)
- Learn Django - Class-Based Views
- Django Tutorials by Corey Schafer
- Django For Beginners by Tech With Tim
- CS50's Web Programming with Python and JavaScript
- Django Database ORM Mastery Course
- Django Permissions
- Руководство на английском
- Руководство на русском
- Django 4 в примерах | Антонио Меле
- Django 3.0. Практика создания веб-сайтов на Python | Дронов В. А.
- Сериалайзеры
- Авторизация: токены, OAuth2
- View функции и классы
- Viewsets
- Роутеры
- Rate Limiting
- CORS
- Уроки по Django REST Framework
- Learn Django Rest Framework
- Django DRF eCommerce Project
- Многопрофильный учебник Python — Раздел «Django REST Framework»
Django — не единственный питоновский веб-фреймворк, но он — мейнстрим. Если знать только что-то одно, то это Django (ну и Django REST Framework как-никак). Помимо Django есть другие фреймворки, например:
- Flask
- FastAPI
- aiohttp
- Sanic
- Quart
- Tornado
- Pyramind
Все их учить не надо, но знать о существовании стоит. Если вы хотите стать супер-пупер крутым разработчиком, познакомтесь с Flask и FastAPI. Это два микрофреймворка, маленькие и простые, изучить их несложно. Сделайте парочку pet-проектов на них, будет вам плюсом в портфолио и резюме. FastAPI, кстати, с каждым днём становится всё более и более популярным, так что не обходите его стороной.
Пусть вы и бэкенд разработчик, вы должны знать хотя бы азы JavaScript, от вас не требуется глубокого понимания языка. Надо знать нативный JavaScript и JavaScript API браузера. Document.querySelector, работа с CSS стилями из JavaScript, переменные, циклы, функции, работа с AJAX запросами, модель асинхронности JavaScript. Если знаете еще какой-то JS фреймворк (React или Vue), будете вообще красавчиком.
- JavaScript - Полный Курс по JavaScript (Включает 80 Задач)
- JavaScript - Полный Курс JavaScript Для Начинающих [11 ЧАСОВ]
- JavaScript Основы для Начинающих - Полный Курс за 6 часов
- JavaScript Full Course (2023) - Beginner to Pro
- React Course - Beginner's Tutorial for React JavaScript Library
Если вы бэкенд разработчик, вы должны знать Linux. Что значит знать Linux? Это значит, что вы можете решать все свои рабочие вопросы в терминале, вам должно быть комфортно работать в консоли. Вы можете использовать терминальные команды и утилиты, такие как cat, less, head/tail, grep и ripgrep, awk, xargs, htop, git и прочие. Если вы бэкендер, то линукс это ваша среда, на которой будет работать ваш код, вы должны быть с ней на ТЫ.
Вы должны уметь полностью настроить для себя сервер. Установка и конфигурация nginx, gunicorn/uwsgi, django, celery, postgresql, redis — всё это не должно быть для вас проблемой.
- Docker + Docker Compose
- Kubernetes
- Ansible
- CI/CD инструменты и пайплайны
- Хостинги: AWS, Microsoft Azure, Google Cloud, YandexCloud, Selectel
- Основы Docker. Большой практический выпуск
- Docker - Полный курс Docker
- Docker - Полный курс Docker Для Начинающих
- Docker Mastery with Django
- Deploy Django into Production with Kubernetes, Docker, & Github Actions
- Git
- ORM: SQLAlchemy, Tortoise
- Alembic
- NGINX
- WSGI/ASGI
- Gunicorn/Uvicorn
- Celery
- RabbitMQ
- Kafka
- Git Book на русском языке
- Интерактивный учебник Git
- Руководство GitHub
- Nginx Mastery
- Learn Django - Celery
- Паттерны программирования
- Архитектурные паттерны: REST, RESTful, SOAP, RPC, GraphQL
- Процессы разработки
- Понимание бизнес-логики
- Умение писать чистый, читаемый, поддерживаемый код:
- Соблюдение конвенций стиля написания кода
- Грамотный нейминг
- YAGNI: You Aren’t Gonna Need It
- DRY: Don’t Repeat Yourself
- KISS: Keep It Simple, Stupid
- GRASP: General Responsibility Assignment Software Patterns
- SOLID
- S: Single-responsibility principle
- O: Open–closed principle
- L: Liskov substitution principle
- I: Interface segregation principle
- D: Dependency inversion principle
- Основы информационной безопасности:
- SQL-инъекции
- XSS
- CSRF
- Чистый код: создание, анализ и рефакторинг | Роберт Мартин
- Совершенный код | Стив Макконнелл
- Рефакторинг. Улучшение проекта существующего кода | Мартин Фаулер
- Чистая архитектура. Искусство разработки программного обеспечения | Роберт Мартин
- Паттерны разработки на Python: TDD, DDD и событийно-ориентированная архитектура | Персиваль Гарри, Грегори Боб
- Высоконагруженные приложения. Программирование, масштабирование, поддержка | Клеппман Мартин
- System Design. Подготовка к сложному интервью | Алекс Сюй
- Чистый Agile. Основы гибкости | Роберт Мартин
- Идеальный программист. Как стать профессионалом разработки ПО | Роберт Мартин
- Идеальная работа. Программирование без прикрас | Роберт Мартин
- System design primer
- Арихтектура ПО
- Информационная безопасность
Да, это тоже важно, софт скилы нужны. Каким бы мега-супер-пупер-дупер классным программистом вы не были, если вы банально не умеете общаться с людьми, доносить до других свои мысли, вам будет тяжело. Хардам вас могут научить уже после трудойстройства, но софты вы должны развивать сами.
Без знания английского языка в наше время никуда, особенно программисту. Если вы умеете читать английские технические тексты, можете понимать английскую речь и обучаться по иностранным курсам и туториалам — вы большой молодец. Английский — несомненный плюс при трудоустройстве. Возможность откликаться на зарубежные вакансии, потенциальная возможность релокации.
Умение гуглить — ещё один необходимый программисту навык. Умение гуглить позволяет вам самостоятельно и быстро находить ответы на любые свои вопросы в сети, это способность к быстрому и эффктивному самообучению, что критично важно. Можно пол дня пытаться обойти какую-то проблему, а можно за 5 минут, правильно сформулировав вопрос к Google, найти 3 решения, разобраться с ними и найти лучшее. Поэтому да, английский и умение гуглить (на английском языке тоже) это очень важно.
Отсутствие опыта — проблема всех начинающих разработчиков. Для устройства на работу нужен опыт, а без работы этот опыт не получить — замкнутый круг. Pet-проекты могут помочь набраться опыта. Сделайте 3-5 нестыдных production ready проектов и добавьте их в своё резюме. Принимайте участие в проектах с открытым исходным кодом.
- Коллекция IT книг
- Cheatsheet for backend developers
- Comprehensive Python Cheatsheet
- Path to a free self-taught education in Computer Science!
- A complete computer science study plan to become a software engineer.
- Curated list of project-based tutorials
- Interactive roadmaps, guides and other educational content to help developers grow in their careers.
- A list of practical projects that anyone can solve in any programming language.
- A collection of design patterns/idioms in Python
- Short Python code snippets for all your development needs
- Microservice Architecture and System Design with Python & Kubernetes
- Yandex: Школа бэкенд-разработки 2019
- Yandex: Школа бэкенд-разработки 2021
- Yandex: Летние школы бэкенд-разработки 2022