Что должен знать бекенд-разработчик?



АЛГОРИТМЫ



* Познакомиться с алгоритмами:

. Сортировки

. Поиска в строке

. Обхода и поиска в структурах данных

. На графах



* Статьи:

. Пузырьковая сортировка и все-все-все (habrahabr) https://habrahabr.ru/post/204600/

. Алгоритмы поиска в строке (habrahabr) https://habrahabr.ru/post/111449/

. Алгоритмы и структуры данных поиска. Лекции и курсы от Яндекса (habrahabr) https://goo.gl/JjvC5n

. Алгоритм Дейкстры. Поиск оптимальных маршрутов на графе (habrahabr) https://habrahabr.ru/post/111361/



* Книга:

. Грокаем алгоритмы. Иллюстрированное пособие для программистов и любопытствующих (Адитья Бхаргава) https://goo.gl/jgeuz3

. Алгоритмы. Вводный курс (Томас Х. Кормен) https://goo.gl/ZMzsZs





СЕРВЕРНЫЕ ЯЗЫКИ ПРОГРАММИРОВАНИЯ

Цель - освоить несколько серверных языков программирования.



Нельзя останавливаться на одном языке, так как у вас может появиться 'JAVA головного мозга' - неспособность думать за пределами своего языка программирования.



Лозунг: нужно программировать не на языке программирования, а используя его.



* Примеры серверных языков:

. PHP

. Python

. Ruby

* Статьи:

. Типы данных

. Функциональное программирование

. Объектно-ориентированное программирование

. Тестирование





ПАТТЕРНЫ ПРОГРАММИРОВАНИЯ

* Познакомиться cо слелующими типами паттернов:

. Порождающие шаблоны проектирования

. Структурные шаблоны проектирования

. Поведенческие шаблоны проектирования



* Статьи:

. DesignPatternsPHP https://goo.gl/xTW5dw

. Шаблон проектирования (wikipedia) https://goo.gl/7WreCS

. Шпаргалка по шаблонам проектирования (habrahabr) https://goo.gl/mjgNSU

. Справочник «Паттерны проектирования» http://design-pattern.ru/

. Design Patterns for Humans (Github) https://goo.gl/18ENLQ

. Каталог паттернов проектирования https://goo.gl/q9KyZE



* Видео:

. Webinar: Patterns (Hexlet) https://goo.gl/ioB2Ey



* Книга:

. Приемы объектно-ориентированного проектирования. Паттерны проектирования (Э. Гамма, Р. Хелм, Р. Джонсон, Д. Влиссилес.) https://goo.gl/DRpXeT





ПРИНЦИПЫ ПРОГРАММИРОВАНИЯ

* Познакомиться с принципами:

. DRY

. KISS

. YAGNI

. SOLID



* Статья:

. Принципы программирования (wikipedia) https://goo.gl/hbi7qZ



РЕГУЛЯРНЫЕ ВЫРАЖЕНИЯ

* Усвоить понятия:

. Квантификация

. Жадность

. Группировка



* Статьи:

. Регулярные выражения (wikipedia) https://goo.gl/xKZTz7

. Жадные и ленивые квантификаторы (learn.javascript) https://goo.gl/WCbVWg





SQL



* Усвоить понятия:

. DDL, DML, DQL

. Создание и удаление базы данных, таблицы

. Добавление, обновление и удаление записи

. Схема (SCHEMA)

. Представления (VIEWS)

. WHERE

. LIMIT, OFFSET

. ORDER BY

. GROUP BY

. JOIN

. Подзапросы



* Статьи:

. Что такое SQL (wikipedia) https://goo.gl/2kufz2

. Схема базы данных (wikipedia) https://goo.gl/WhQrY1

. Представления в MySQL (habrahabr) https://goo.gl/JA95Tb

. Квалифицированный выбор при использовании предложений https://goo.gl/383gXA

. Полнотекстовый поиск и его возможности (habrahabr) https://goo.gl/nKwwFr



* Курсы:

. Базы данных: SQL (DDL/DML) (Hexlet) https://goo.gl/TMTJNa

. Базы данных: SQL (DQL) (Hexlet) https://goo.gl/ngtzSe



ПРОЕКТИРОВАНИЕ БАЗ ДАННЫХ

* Усвоить понятия:

. Нормализация

. Денормализация

. Связи



* Статьи:

. Проектирование баз данных (wikipedia) https://goo.gl/NtJbmf

. Нормальная форма (wikipedia) https://goo.gl/68A4D9

. Нормализация отношений. Шесть нормальных форм (habrahabr) https://goo.gl/NqMT9z

. Денормализация БД. Зачем? Когда? Как? (habrahabr) https://goo.gl/E4A4zU



ФРЕЙМВОРКИ

Для разных языков программирования существуют разные фреймворки, не нужно изучать всё сразу, необходимо взять несколько фреймворков за основу.



* PHP фреймворки:

. Slim microframework http://www.slimframework.com/

. Laravel https://laravel.com/

. Symfony https://symfony.com/

. Yii http://www.yiiframework.com/



* Python фреймворки:

. Django https://www.djangoproject.com/

. Flask http://flask.pocoo.org/



* Ruby фреймворки:

. Ruby on Rails http://rubyonrails.org/



* Статьи:

. Фреймворк (wikipedia) https://goo.gl/z3sKAa

. Не учите фреймворки, учите архитектуру (habrahabr) https://habrahabr.ru/post/253297/



ПАКЕТНЫЙ МЕНЕДЖЕР