└── README.md /README.md: -------------------------------------------------------------------------------- 1 | 2 | Дорожная карта по становлению Python Backend разработчиком. Перед началом прочтения рекомендую посмотреть [это](https://youtu.be/GESlhCvOo88) видео. 3 | 4 | 5 | # Основы Computer Science 6 | Если вы совсем новичок, который ничего не знает о компьютерных технологиях и программировании, вам стоит для начала освоить базу. Для этого хорошо подходит курс [CS50](https://www.edx.org/cs50). 7 | 8 | CS50 — курс Гарвардского университета о компьютерных технологиях. Курс читается на английском языке. Если вы не дружите с английским, для вас есть [перевод на русском языке](https://www.youtube.com/playlist?list=PLawfWYMUziZqyUL5QDLVbe3j5BKWj42E5). К сожалению, перевод охватывает старую версию курса за 2016 год, однако он всё равно подойдёт для начинающих. 9 | 10 | **Что вы узнаете, прослушав этот курс:** 11 | - Основы компьютерных наук и программирования; 12 | - Концепции алгоритмов и алгоритмичности мышления. Какие задачи можно решать с помощью программирования и каким образом; 13 | - Концепции абстракции, структуры данных, инкапсуляции, управления памятью. Основы компьютерной безопасности. Процесс разработки ПО и веб-разработка; 14 | - Основы языка программирования C и Scratch; 15 | - Основы баз данных и SQL; 16 | - Веб-разработка: основы CSS, HTML, JavaScript и PHP; 17 | - Основы подготовки презентации проектов по программированию. 18 | 19 | Курс CS50 меняется каждый год. Актуальные лекции можно найти на [официальном канале CS50](https://www.youtube.com/cs50) на английском языке. 20 | 21 | Плейлисты с лекциями за 2020-2022 года: 22 | * [CS50 Lectures 2020](https://www.youtube.com/playlist?list=PLhQjrBD2T382_R182iC2gNZI9HzWFMC_8) 23 | * [CS50 Lectures 2021](https://www.youtube.com/playlist?list=PLhQjrBD2T380Xnv_v683p6UjiKJZe13ki) 24 | * [CS50 Lectures 2022](https://www.youtube.com/playlist?list=PLhQjrBD2T380F_inVRXMIHCqLaNUd7bN4) 25 | 26 | ### Что почитать 27 | * Теоретический минимум по Computer Science. Все что нужно программисту и разработчику | Фило Владстон Феррейра 28 | --- 29 | 30 | # Python 31 | 32 | ## Основы 33 | * Базовый синтаксис 34 | * Переменные и типы данных 35 | * Циклы и условные операторы 36 | * Булева алебра, логические операторы 37 | * Строки и форматирование 38 | * Списки, кортежи, словари, множества 39 | * Индексы и срезы 40 | * Функции, встроенные функции 41 | * Работа с файлами 42 | * Обработка ошибок и исключений 43 | * Виртуальное окружение 44 | * Менеджер пакетов pip 45 | 46 | ### Курсы и туториалы 47 | * ["Поколение Python": курс для начинающих](https://stepik.org/course/58852) 48 | * ["Поколение Python": курс для продвинутых](https://stepik.org/course/68343) 49 | * [CS50's Introduction to Programming with Python](https://www.youtube.com/playlist?list=PLhQjrBD2T3817j24-GogXmWqO5Q5vYy0V) 50 | * [Добрый, добрый Python - уроки для начинающих](https://www.youtube.com/playlist?list=PLA0M1Bcd0w8yWHh2V70bTtbVxJICrnJHd) 51 | * [Тимофей Хирьянов: Практика программирования на Python 3 (2020)](https://www.youtube.com/playlist?list=PLRDzFCPr95fIDJUvFxvzWxg-V9BmZlMMe) 52 | * [Python за 7 часов с нуля](https://youtu.be/5g-MHZ0MzZY) 53 | * [Интерактивный учебник Python](https://learnpython.org/) — Раздел «Learn the Basics» 54 | * [Многопрофильный учебник Python](https://proproprogs.ru/python) — Раздел «Основы Python» 55 | * [Python Tutorials by Corey Schafer](https://www.youtube.com/playlist?list=PL-osiE80TeTt2d9bfVyTiXJA-UTHn6WwU) 56 | 57 | ### Что почитать 58 | * Изучаем Python: программирование игр, визуализация данных, веб-приложения. 3-е изд. | Мэтиз Эрик 59 | 60 | ## Продвинутый уровень 61 | * ООП 62 | * Классы и объекты 63 | * Атрибуты и методы 64 | * Инкапсуляция, наследование, полиморфизм, абстракция 65 | * SOLID 66 | * Рекурсия 67 | * Лямбда функции 68 | * Позиционные и именованные аргументы функций (args, kwargs). `*` и `/` в сигнатуре функций. 69 | * Контекстные менеджеры 70 | * Итераторы и генераторы 71 | * Генераторы списков и словарей 72 | * Декораторы 73 | * Распаковка, упаковка через `*` и `**` 74 | * Поверхностное и глубокое копирование объектов 75 | * Регулярные выражения 76 | * Логирование 77 | * Функции `map()`, `filter()`, `reduce()` 78 | * Правила оформления кода: PEP 8 79 | 80 | ### Курсы и туториалы 81 | * [Объектно-ориентированное программирование (ООП) на Python 3](https://www.youtube.com/playlist?list=PLA0M1Bcd0w8zPwP7t-FgwONhZOHt9rz9E) 82 | * [Python 3. Регулярные выражения](https://www.youtube.com/playlist?list=PLA0M1Bcd0w8w8gtWzf9YkfAxFCgDb09pA) 83 | * [Документация-туториал](https://docs.python.org/3.11/tutorial/) 84 | * [Интерактивный учебник Python](https://learnpython.org/) — Раздел «Advanced Tutorials» 85 | * [Intermediate Python Programming Course](https://youtu.be/HGOBQPFzWKo) 86 | * [Основы компьютерных и веб-технологий с Python от Диджитализируй!](https://course01.to.digital/) 87 | * [100 Days of Code: The Complete Python Pro Bootcamp for 2023](https://www.udemy.com/course/100-days-of-code/) 88 | 89 | ### Что почитать 90 | * Python. Чистый код для продолжающих | Эл Свейгарт 91 | * Изучаем Python. Том 1-2. 5-е изд. | Марк Лутц 92 | 93 | ## Углублённый уровень 94 | * Внутреннее устройство CPython 95 | * GIL 96 | * GC (garbage collector) 97 | * Библиотеки collections, functools, itertools 98 | * Интерфейсы, протоколы и ABC 99 | * Магические (dunder) методы 100 | * Конкурентность в Python 101 | * Многопоточность 102 | * Многопроцессорность 103 | * Асинхронность, asyncio, aiohttp 104 | * Метаклассы 105 | * Дескрипторы 106 | * Аннотации типов 107 | * Замыкания 108 | * dataclasses 109 | * classmethod/staticmethod 110 | * Тестирование 111 | * unittest 112 | * pytest 113 | * doctest 114 | 115 | ### Курсы и туториалы 116 | * [Канал «Хитрый Питон»](https://www.youtube.com/@user-th6xg5bk4c/videos) 117 | * [Yandex: Воркшопы по основам Python](https://www.youtube.com/playlist?list=PLQC2_0cDcSKD0hiVn2A-4180JwURlg5I9) 118 | * [Threading in Python Explained](https://www.youtube.com/playlist?list=PLzMcBGfZo4-lTUl-4m1-9Jk27Eulyrmkx) 119 | * [Expert Python Tutorials](https://www.youtube.com/playlist?list=PLzMcBGfZo4-kwmIcMDdXSuy_wSqtU-xDP) 120 | 121 | ### Что почитать 122 | * Python. К Вершинам Мастерства. 2-е изд. | Лусиану Рамальо 123 | * Чистый Python. Тонкости программирования для профи | Бейдер Дэн 124 | * [Типизированный Python для профессиональной разработки | Алексей Голобурдин](https://to.digital/typed-python/) 125 | * [Многопрофильный учебник Python](https://proproprogs.ru/python) — Раздел «Python ООП» 126 | --- 127 | 128 | # Алгоритмы и структуры данных 129 | 130 | * Базовые структуры 131 | * Ассоциативный массив 132 | * Стек (LIFO) 133 | * Очередь (FIFO) 134 | * Двусвязная очередь 135 | * Связный список 136 | * Линейный однонаправленный список 137 | * Двусвязный список (двунаправленный связный список) 138 | * Кольцевой связный список 139 | * Массивы 140 | * Хэш-таблицы 141 | * Хеш функция 142 | * Методы разрешения колизий 143 | * Метод цепочек 144 | * Последовательность проб 145 | * Деревья 146 | * Бинарное дерево поиска 147 | * Красно-чёрное дерево 148 | * Куча 149 | * B-дерево (а также B+‍‍, B*) 150 | * LSM Дерево 151 | * R-дерево 152 | * АВЛ дерево 153 | * Поворот дерева 154 | * Графы 155 | * Поиск в глубину 156 | * Поиск в ширину 157 | * Алгоритм Дейкстры 158 | * Алгоритмы сортировки 159 | * Алгоритмы поиска 160 | * Алгоритмы хеширования 161 | 162 | Для прокачки алгоритмов регистрируемся на [CodeWars](https://www.codewars.com/) и [LeetCode](https://leetcode.com/), решаем по одной задаче на каждой из платформ ежедневно, как минимум. 163 | 164 | ### Курсы и туториалы: 165 | * [Алгоритмы и структуры данных на Python](https://www.youtube.com/playlist?list=PLA0M1Bcd0w8yF0PO0eJ9v8VlsYEowmsnJ) 166 | * [Тимофей Хирьянов: Алгоритмы и структуры данных на Python 3 (2017-2018)](https://www.youtube.com/playlist?list=PLRDzFCPr95fK7tr47883DFUbm4GeOjjc0) 167 | * [Канал с объяснениями алгоритмов](https://www.youtube.com/@WilliamFiset-videos) 168 | * [Сложность алгоритмов за 11 минут](https://youtu.be/cXCuXNwzdfY) 169 | ### Что почитать 170 | * [Теория по алгоритмам и структурам данных](https://backendinterview.ru/algostruct/index.html) 171 | * Грокаем алгоритмы. Иллюстрированное пособие для программистов и любопытствующих | Бхаргава Адитья 172 | * Алгоритмы. Руководство по разработке. 3-е изд. | Стивен Скиена 173 | * Алгоритмы. Построение и анализ | Клиффорд Штайн, Рональд Ривест 174 | --- 175 | 176 | # Сеть 177 | * HTTP 178 | * Разница между HTTP и HTTPS 179 | * Типы HTTP запросов 180 | * Статус коды 181 | * Поля и заголовки HTTP запросов 182 | * Порты 183 | * Cookies 184 | * SSL/TLS 185 | * DNS 186 | * IP: IPv4 и IPv6 187 | * Сетевые протоколы 188 | * OSI 189 | * TCP и UDP 190 | * TCP/IP 191 | * FTP, SMPT, POP3, IMAP 192 | * WebSockets 193 | * Reverse proxy 194 | 195 | ### Что почитать 196 | * [Основы сетей](https://backendinterview.ru/network/index.html) 197 | --- 198 | 199 | # Базы данных 200 | * Нормальные формы, нормализация и денормализация БД 201 | * Ключи: первичные, внешние, составные 202 | * Функции, представления, процедуры 203 | * Индексы 204 | * Оконные функции 205 | * Транзакции 206 | * Базовый синтаксис SQL: SELECT, UPDATE, INSERT, DELETE 207 | * Объединение таблиц и агрегаторные функции: JOIN, HAVING, GROUP BY 208 | * ACID 209 | * Репликация и шардинг 210 | * Работа с PostgreSQL и SQLite в Python с помощью библиотек psycopg2 или sqlite3 211 | * Инструменты администрирования: pgAdmin или SQLiteStudio 212 | 213 | ## СУБД 214 | * **SQL**: 215 | - SQLite 216 | - PostgreSQL 217 | - MySQL 218 | 219 | * **NoSQL**: 220 | - Redis 221 | - Memcached 222 | - Tarantool 223 | - MongoDB 224 | 225 | ### Курсы и туториалы 226 | * [Курс лекций по базам данных от Технопарка](https://www.youtube.com/playlist?list=PLrCZzMib1e9oOFQbuOgjKYbRUoA8zGKnj) 227 | * [Database Management Systems](https://www.youtube.com/playlist?list=PLBlnK6fEyqRi_CUQ-FXxgzKQ1dwr_ZJWZ) 228 | * [Python SQLite](https://www.youtube.com/playlist?list=PLA0M1Bcd0w8x4Inr5oYttMK6J47vxgv6J) 229 | * [Уроки PostgreSQL для начинающих. PostgreSQL с нуля](https://www.youtube.com/playlist?list=PLPPIc-4tm3YQsdhSV1qzAgDKTuMUNnPmp) 230 | * [Базы данных от R class Tech](https://www.youtube.com/playlist?list=PLf30vI0hEi1v435cBmZSHkr1QAJdOk9mb) 231 | * [Practical Database Design: Theory Into Practice](https://www.youtube.com/playlist?list=PLOLrQ9Pn6caxigVJw2jHwIpH7gdb1zrmu) 232 | * [Интерактивный учебник SQL](https://sqlbolt.com/) 233 | * [Многопрофильный учебник Python](https://proproprogs.ru/python) — Раздел «СУБД SQLite» 234 | * [Принципы нормализации реляционных баз данных](https://coggle.it/diagram/XZousBz2ikjJKnHr/t/принципы-нормализации-реляционных-бд) 235 | * [Нормальные формы баз данных: Объясняем на пальцах](https://youtu.be/zqQxWdTpSIA) 236 | * [Что такое ACID? | Самый частый вопрос бэкендеру](https://youtu.be/gOB3hpAVIIQ) 237 | 238 | ### Что почитать 239 | * PostgreSQL. Основы языка SQL | Евгений Моргунов 240 | * PostgreSQL 11. Мастерство разработки | Ганс-Юрген Шениг 241 | * [Классическая теория баз данных](https://backendinterview.ru/db/index.html) 242 | * [Руководство SQLite на английском](https://docs.python.org/3/library/sqlite3.html) 243 | * [Руководство SQLite на русском](https://metanit.com/sql/sqlite/) 244 | * [Документация PostgreSQL на английском](https://postgrespro.com/docs/postgresql) 245 | * [Документация PostgreSQL на русском](https://postgrespro.ru/docs/postgresql) 246 | * [Руководство PostgreSQL на русском](https://metanit.com/sql/postgresql/) 247 | --- 248 | 249 | # HTML/CSS/Bootstrap 250 | Все бэкендеры должны знать хотя бы азы фронтенд технологий. HTML (язык гипертекстовой разметки) и CSS (каскадные таблицы стилей) — база, позволяющая оформлять веб-страницы. Вы должны уметь минимально верстать страницы. Нет, вы не должны делать это профессионально, но вы должны знать о семантической разметке, о настройке шрифтов, местоположений блоков на странице, margins и paddings, уметь использовать flex-боксы, флоаты, таблицы и т.д. Кстати, про адаптивную верстку тоже хорошо бы знать и уметь. 251 | 252 | ### Курсы и туториалы 253 | * [Learn HTML – Full Tutorial for Beginners](https://youtu.be/kUMe1FH4CHE) 254 | * [HTML - Полный Курс HTML Для Начинающих](https://youtu.be/W4MIiV4nZDY) 255 | 256 | ### Что почитать 257 | * [Руководство по HTML на русском](https://developer.mozilla.org/ru/docs/Web/HTML) 258 | * [Справочник по HTML на русском](http://htmlbook.ru/html) 259 | * [Руководство по CSS на русском](https://developer.mozilla.org/ru/docs/Web/CSS/Reference) 260 | * [Справочник CSS на русском](http://htmlbook.ru/css) 261 | * [Руководство по HTML5 и CSS3](https://metanit.com/web/html5/) 262 | * [Bootstrap-4 Документация на русском языке](https://bootstrap-4.ru/docs/5.0/getting-started/introduction/) 263 | * [Bootstrap-5 Документация на русском языке](https://bootstrap5.ru/docs/getting-started/introduction) 264 | --- 265 | 266 | # Django 267 | 268 | * Создание проекта и приложений 269 | * Модели 270 | * Миграции 271 | * ORM 272 | * Роуты (Urls) 273 | * Views (FBV и CBV) 274 | * Templates 275 | * Django Admin 276 | * Static files 277 | * Формы (Model Forms) 278 | * Сигналы 279 | * Middleware 280 | * Кэширование 281 | * Контекстные менеджеры 282 | * Авторизация и аутентификация 283 | * User model: roles, permissions 284 | * Сессии 285 | * Management команды 286 | * OAuth 287 | * Тестирование в Django 288 | 289 | ## Проекты для изучения Django на практике 290 | * **To Do App** 291 | Одно из самых простых приложений для знакомства с Django. Вы научитесь настраивать приложение, работать с базой данных, выполнять базовые CRUD-операции. Попробуйте сделать приложение дважды: с использованием function based views (FBV) и class based views (CBV). 292 | * **Интернет-магазин** 293 | Вместе с основами CRUD и аутентификацией, которые нужны большинству интернет-магазинов, вы изучите более сложные отношения между сущностями базы данных. Добавьте также поиск, пагинацию и роли пользователей к вашему магазину. 294 | * **Социальная сеть** 295 | Проект для тренировки проектирования базы данных. Подумайте, как вы реализуете функции "друзья" или "подписки". Как насчет лайков и определения того, какой пост увидит пользователь в своей ленте? 296 | * **Личный блог** 297 | Создайте собственный блог, в котором, например, будете делиться этапами изчения Python и Django. Начните с базовых CRUD-операций для добавления и редактирования постов блога. Научитесь работать с авторизацией и аутентификацией пользователей. Расширьте функциональность приложения, добавив комментарии, подписки на авторов. Сделайте поиск и пагинацию, чтобы обеспечить удобный интерфейс для пользователей. 298 | 299 | ### Курсы и туториалы 300 | * [Бэкенд разработка на Django: с нуля до специалиста](https://www.udemy.com/course/django-full/) 301 | * [Сайт на Django 3. Сервис по сбору данных.](https://www.udemy.com/course/site-on-django-3/) 302 | * [Многопрофильный учебник Python](https://proproprogs.ru/python) — Раздел «Django» 303 | * [Customer Management App (Django 3)](https://www.youtube.com/playlist?list=PL-51WBLyFTg2vW-_6XBoUpE7vpmoR3ztO) 304 | * [Django Project: djblogger](https://www.youtube.com/playlist?list=PLOLrQ9Pn6cawJ9CbY-o_kQC4GOWfhCFHq) 305 | * [Django Project - Build a Simple Blog](https://www.youtube.com/playlist?list=PLOLrQ9Pn6cawWd-5UZM6CIm0uqFXeBcTd) 306 | * [Django - Ecommerce Project](https://www.youtube.com/playlist?list=PLOLrQ9Pn6caxY4Q1U9RjO1bulQp5NDYS_) 307 | * [Django 3 для python (уроки)](https://www.youtube.com/playlist?list=PLA0M1Bcd0w8xO_39zZll2u1lz_Q-Mwn1F) 308 | * [Learn Django - Class-Based Views](https://www.youtube.com/playlist?list=PLOLrQ9Pn6caxNb9eFZJ6LfY29nZkKmmXT) 309 | * [Django Tutorials by Corey Schafer](https://www.youtube.com/playlist?list=PL-osiE80TeTtoQCKZ03TU5fNfx2UY6U4p) 310 | * [Django For Beginners by Tech With Tim](https://youtu.be/sm1mokevMWk) 311 | * [CS50's Web Programming with Python and JavaScript](https://www.youtube.com/playlist?list=PLhQjrBD2T380xvFSUmToMMzERZ3qB5Ueu) 312 | * [Django Database ORM Mastery Course](https://www.youtube.com/playlist?list=PLOLrQ9Pn6cayYycbeBdxHUFrzTqrNE7Pe) 313 | * [Django Permissions](https://www.youtube.com/playlist?list=PLOLrQ9Pn6caxgFX4K33LebBrfw2VmQIVv) 314 | ### Что почитать 315 | * [Руководство на английском](https://docs.djangoproject.com) 316 | * [Руководство на русском](https://djangodoc.ru/) 317 | * Django 4 в примерах | Антонио Меле 318 | * Django 3.0. Практика создания веб-сайтов на Python | Дронов В. А. 319 | --- 320 | 321 | # DRF - Django REST Framework 322 | 323 | * Сериалайзеры 324 | * Авторизация: токены, OAuth2 325 | * View функции и классы 326 | * Viewsets 327 | * Роутеры 328 | * Rate Limiting 329 | * CORS 330 | ### Курсы и туториалы 331 | * [Уроки по Django REST Framework](https://www.youtube.com/playlist?list=PLA0M1Bcd0w8xZA3Kl1fYmOH_MfLpiYMRs) 332 | * [Learn Django Rest Framework](https://www.youtube.com/playlist?list=PLOLrQ9Pn6caw0PjVwymNc64NkUNbZlhFw) 333 | * [Django DRF eCommerce Project](https://www.youtube.com/playlist?list=PLOLrQ9Pn6cawinBJbH5d9IfloO9RRPMiq) 334 | * [Многопрофильный учебник Python](https://proproprogs.ru/python) — Раздел «Django REST Framework» 335 | ### Что почитать 336 | * [DRF - Руководство на английском](https://www.django-rest-framework.org/) 337 | * [DRF - Быстрый старт на русском](https://ilyachch.gitbook.io/django-rest-framework-russian-documentation/overview/quick-start) 338 | --- 339 | 340 | # Больше веб фреймворков 341 | Django — не единственный питоновский веб-фреймворк, но он — мейнстрим. Если знать только что-то одно, то это Django (ну и Django REST Framework как-никак). Помимо Django есть другие фреймворки, например: 342 | * Flask 343 | * FastAPI 344 | * aiohttp 345 | * Sanic 346 | * Quart 347 | * Tornado 348 | * Pyramind 349 | 350 | Все их учить не надо, но знать о существовании стоит. Если вы хотите стать супер-пупер крутым разработчиком, познакомтесь с [Flask](https://www.youtube.com/playlist?list=PL-osiE80TeTs4UjLw5MM6OjgkjFeUxCYH) и [FastAPI](https://youtu.be/0sOvCWFmrtA). Это два микрофреймворка, маленькие и простые, изучить их несложно. Сделайте парочку pet-проектов на них, будет вам плюсом в портфолио и резюме. FastAPI, кстати, с каждым днём становится всё более и более популярным, так что не обходите его стороной. 351 | 352 | --- 353 | 354 | # JavaScript 355 | Пусть вы и бэкенд разработчик, вы должны знать хотя бы азы JavaScript, от вас не требуется глубокого понимания языка. Надо знать нативный JavaScript и JavaScript API браузера. Document.querySelector, работа с CSS стилями из JavaScript, переменные, циклы, функции, работа с AJAX запросами, модель асинхронности JavaScript. Если знаете еще какой-то JS фреймворк (React или Vue), будете вообще красавчиком. 356 | ### Курсы и туториалы 357 | * [JavaScript - Полный Курс по JavaScript (Включает 80 Задач)](https://www.udemy.com/course/javascript-ru) 358 | * [JavaScript - Полный Курс JavaScript Для Начинающих [11 ЧАСОВ]](https://youtu.be/CxgOKJh4zWE) 359 | * [JavaScript Основы для Начинающих - Полный Курс за 6 часов](https://youtu.be/Bluxbh9CaQ0) 360 | * [JavaScript Full Course (2023) - Beginner to Pro](https://youtu.be/GWJKePf-WCM) 361 | * [React Course - Beginner's Tutorial for React JavaScript Library](https://youtu.be/bMknfKXIFA8) 362 | ### Что почитать 363 | * [Vue.js - Документация на русском](https://ru.vuejs.org/) 364 | * [React - Документация на русском](https://ru.react.js.org/docs/getting-started.html) 365 | --- 366 | 367 | # Linux 368 | Если вы бэкенд разработчик, вы должны знать Linux. Что значит знать Linux? Это значит, что вы можете решать все свои рабочие вопросы в терминале, вам должно быть комфортно работать в консоли. Вы можете использовать терминальные команды и утилиты, такие как cat, less, head/tail, grep и ripgrep, awk, xargs, htop, git и прочие. Если вы бэкендер, то линукс это ваша среда, на которой будет работать ваш код, вы должны быть с ней на ТЫ. 369 | 370 | Вы должны уметь полностью настроить для себя сервер. Установка и конфигурация nginx, gunicorn/uwsgi, django, celery, postgresql, redis — всё это не должно быть для вас проблемой. 371 | 372 | ### Курсы и туториалы 373 | * [Linux for Programmers](https://www.youtube.com/playlist?list=PLzMcBGfZo4-nUIIMsz040W_X-03QH5c5h) 374 | 375 | ### Что почитать 376 | * [Искусство командной строки](https://github.com/jlevy/the-art-of-command-line) 377 | --- 378 | 379 | # Инфрастуктура и деплой 380 | * Docker + Docker Compose 381 | * Kubernetes 382 | * Ansible 383 | * CI/CD инструменты и пайплайны 384 | * Хостинги: AWS, Microsoft Azure, Google Cloud, YandexCloud, Selectel 385 | 386 | ### Курсы и туториалы 387 | * [Основы Docker. Большой практический выпуск](https://youtu.be/QF4ZF857m44) 388 | * [Docker - Полный курс Docker](https://www.udemy.com/course/docker-ru/) 389 | * [Docker - Полный курс Docker Для Начинающих](https://youtu.be/_uZQtRyF6Eg) 390 | * [Docker Mastery with Django](https://www.youtube.com/playlist?list=PLOLrQ9Pn6cazCfL7v4CdaykNoWMQymM_C) 391 | * [Deploy Django into Production with Kubernetes, Docker, & Github Actions](https://youtu.be/NAOsLaB6Lfc) 392 | 393 | ### Что почитать 394 | * [Учебник Docker на русском](https://t.me/devs_store/81) 395 | --- 396 | 397 | # Дополнительные технологии 398 | 399 | * Git 400 | * ORM: SQLAlchemy, Tortoise 401 | * Alembic 402 | * NGINX 403 | * WSGI/ASGI 404 | * Gunicorn/Uvicorn 405 | * Celery 406 | * RabbitMQ 407 | * Kafka 408 | 409 | ### Курсы и туториалы 410 | * [Git Book на русском языке](https://git-scm.com/book/ru/v2) 411 | * [Интерактивный учебник Git](https://learngitbranching.js.org/) 412 | * [Руководство GitHub](https://docs.github.com/en/get-started/quickstart) 413 | * [Nginx Mastery](https://www.youtube.com/playlist?list=PLOLrQ9Pn6cawvMA5JjhzoQrnKbYGYQqx1) 414 | * [Learn Django - Celery](https://www.youtube.com/playlist?list=PLOLrQ9Pn6caz-6WpcBYxV84g9gwptoN20) 415 | --- 416 | 417 | # Side навыки 418 | * Паттерны программирования 419 | * Архитектурные паттерны: REST, RESTful, SOAP, RPC, GraphQL 420 | * Процессы разработки 421 | * Понимание бизнес-логики 422 | * Умение писать чистый, читаемый, поддерживаемый код: 423 | * Соблюдение конвенций стиля написания кода 424 | * Грамотный нейминг 425 | * YAGNI: You Aren’t Gonna Need It 426 | * DRY: Don’t Repeat Yourself 427 | * KISS: Keep It Simple, Stupid 428 | * GRASP: General Responsibility Assignment Software Patterns 429 | * SOLID 430 | * S: Single-responsibility principle 431 | * O: Open–closed principle 432 | * L: Liskov substitution principle 433 | * I: Interface segregation principle 434 | * D: Dependency inversion principle 435 | * Основы информационной безопасности: 436 | * SQL-инъекции 437 | * XSS 438 | * CSRF 439 | 440 | ### Что почитать 441 | * Чистый код: создание, анализ и рефакторинг | Роберт Мартин 442 | * Совершенный код | Стив Макконнелл 443 | * Рефакторинг. Улучшение проекта существующего кода | Мартин Фаулер 444 | * Чистая архитектура. Искусство разработки программного обеспечения | Роберт Мартин 445 | * Паттерны разработки на Python: TDD, DDD и событийно-ориентированная архитектура | Персиваль Гарри, Грегори Боб 446 | * Высоконагруженные приложения. Программирование, масштабирование, поддержка | Клеппман Мартин 447 | * System Design. Подготовка к сложному интервью | Алекс Сюй 448 | * Чистый Agile. Основы гибкости | Роберт Мартин 449 | * Идеальный программист. Как стать профессионалом разработки ПО | Роберт Мартин 450 | * Идеальная работа. Программирование без прикрас | Роберт Мартин 451 | * [System design primer](https://github.com/donnemartin/system-design-primer) 452 | * [Арихтектура ПО](https://backendinterview.ru/architecture/index.html) 453 | * [Информационная безопасность](https://backendinterview.ru/ib.html) 454 | --- 455 | 456 | # Soft skills 457 | Да, это тоже важно, софт скилы нужны. Каким бы мега-супер-пупер-дупер классным программистом вы не были, если вы банально не умеете общаться с людьми, доносить до других свои мысли, вам будет тяжело. Хардам вас могут научить уже после трудойстройства, но софты вы должны развивать сами. 458 | 459 | 460 | # Английский язык и умение гуглить 461 | Без знания английского языка в наше время никуда, особенно программисту. Если вы умеете читать английские технические тексты, можете понимать английскую речь и обучаться по иностранным курсам и туториалам — вы большой молодец. Английский — несомненный плюс при трудоустройстве. Возможность откликаться на зарубежные вакансии, потенциальная возможность релокации. 462 | 463 | Умение гуглить — ещё один необходимый программисту навык. Умение гуглить позволяет вам самостоятельно и быстро находить ответы на любые свои вопросы в сети, это способность к быстрому и эффктивному самообучению, что критично важно. Можно пол дня пытаться обойти какую-то проблему, а можно за 5 минут, правильно сформулировав вопрос к Google, найти 3 решения, разобраться с ними и найти лучшее. Поэтому да, английский и умение гуглить (на английском языке тоже) это очень важно. 464 | 465 | # Pet-проекты 466 | Отсутствие опыта — проблема всех начинающих разработчиков. Для устройства на работу нужен опыт, а без работы этот опыт не получить — замкнутый круг. Pet-проекты могут помочь набраться опыта. Сделайте 3-5 нестыдных production ready проектов и добавьте их в своё резюме. Принимайте участие в проектах с открытым исходным кодом. 467 | 468 | # Полезные ссылки 469 | - [Коллекция IT книг](https://drive.google.com/drive/folders/1Z2E120p5yCfLVFW_0moYsoesdrmjGiW9) 470 | - [Cheatsheet for backend developers](https://github.com/cheatsnake/backend-cheats) 471 | - [Comprehensive Python Cheatsheet](https://gto76.github.io/python-cheatsheet/) 472 | - [Path to a free self-taught education in Computer Science!](https://github.com/ossu/computer-science) 473 | - [A complete computer science study plan to become a software engineer.](https://github.com/jwasham/coding-interview-university) 474 | - [Curated list of project-based tutorials](https://github.com/practical-tutorials/project-based-learning) 475 | - [Interactive roadmaps, guides and other educational content to help developers grow in their careers.](https://github.com/kamranahmedse/developer-roadmap) 476 | - [A list of practical projects that anyone can solve in any programming language.](https://github.com/karan/Projects) 477 | - [A collection of design patterns/idioms in Python](https://github.com/faif/python-patterns) 478 | - [Short Python code snippets for all your development needs](https://github.com/30-seconds/30-seconds-of-python) 479 | - [Microservice Architecture and System Design with Python & Kubernetes](https://youtu.be/hmkF77F9TLw) 480 | - [Yandex: Школа бэкенд-разработки 2019](https://www.youtube.com/playlist?list=PLQC2_0cDcSKBHamFYA6ncnc_fYuEQUy0s) 481 | - [Yandex: Школа бэкенд-разработки 2021](https://www.youtube.com/playlist?list=PLQC2_0cDcSKCMKnywAS8eI_EgCcE3yx0r) 482 | - [Yandex: Летние школы бэкенд-разработки 2022](https://www.youtube.com/playlist?list=PLQC2_0cDcSKB0fq36NuDhbpcd20OVNPBp) 483 | --------------------------------------------------------------------------------