- Начальный этап:
- Сперва изучения основнова стека, это - HTML, CSS, Javascript (основы) и PHP
- Изучения базы данных (MySQL), синтаксис SQL и CRUD-операции
- Практика. Создание своих проектов.
- Изучить базовое понятие HTTP, HTTPS, TCP/UDP
- Изучение начального ООП, понятие синтаксиса
- Изучение Composer и Packagist
- Изучение GIT
- Владения базовыми командами из консоли
- Начально-средний:
- Изучение фреймворка Laravel/Symfony
- Создание проекта с использованием фреймворка и разных пакетов. Или перевод старых проектов на фреймворк
- Регулярные выражения
- Базовая защита от взлома: XSRF, XSS, etc
- Изучение продвинуто базу данных
- Joins: Inner join, left join, right join
- Умение спроектировать базу данных
- Связи между таблицами
- Защита от SQL-инъекции
- Отличие Timestamp от Datetime
- Составление и оптимизация SQL запросов
- Индексирование
- Нормализация и денормализация
- Транзакции и их уровни
- ER-diagrams
- N+1 Problem
- Nested sets, materialize path etc
- Более глубокое изучение PHP/ООП:
- DI
- Генераторы: yield и т.д
- DI-Container
- IOC
- SPL-библиотеки
- Автозагрузка классов
- Рефакторинг кода старых проектов с использованием DI-Container, не использование фасадов
- Изучение нереляционной базы данных: Redis/Memcache
- Профилирование запроса с помощью Xdebug
- Иметь понимание об CI/CD-процессах
- Перейти на Linux (Ubuntu, Arch, Manjaro и в конце arch i3 :))
- Изучение побочных вещей:
- REST API
- JWT-технология
- Swagger
- Postman или аналоги
- OAuth
- Git flow
- Обработка задач в фоне
- supervisord
- cron
- systemd
- Изучения тестирования в PHP. Интеграционные тесты, функциональные - PHPUnit, пирамида тестирования
- Cредний уровень:
- Изучение анализаторов в PHP: CodeShiffer, Psalm
- Пройти PSR
- Изучение паттернов проектирования
- Тестирование
- Основы тестирования, виды тестирования
- PHPUnit
- Integration Testing
- Function Testing
- Прикрутить тесты к проектам. Практика
- Изучение базы данных углубленно:
- Агрегация
- Оконные функций
- Подзапросы
- План выполнения запроса
- Временные таблицы
- Хранимые процедуры
- Триггеры
- Изучить Docker, базовое владение с docker-compose.
- CI/CD, Jenkins, Kubernetis (необязательно)
- Перевод проектов на Docker, настройка CI/CD
- Изучение ООП углубленно:
- Закон диметрии
- Low coupling и High Cohesion
- Контракты, контрактное программирование
- SOLID
- DRY
- KISS
- YAGNI
- PSR-стандарты и т.д
- GRASP
- Пакетные принципы
- Доработка проектов с использованием углубленного ООП: SOLID, low coupling & high cohesion и т.д
- Изучение паттерн проектирования (снова): простые паттерны, архитектурные паттерны и т.д
- Изучение основ алгоритмов и структура данных
- Очереди, стек, деревья и т.д
- эффективные алгоритмы
- временная и пространственная сложность
- O-нотация.
- Изучения архитектуры:
- DDD
- Clean Architecture
- Читаешь много книг про архитектуру, стримы Соера, смотришь доклады
- Попытки написания по TDD
- Изучение RabbitMQ
- Изучение высоконагруженные приложения
- Высокий уровень:
- Изучить другой язык программирования: GO
- Изучение микросервис
- Изучение высоконагруженных систем: репликация, шардирование и т.д (Читаем кабанчика)
- Многопоточность, ассинхронность и т.д, все что будет затрагиваться в новом языке, изучить
- Дальше буду дорабатывать этот список
Изучить другой язык программирования для расширения кругозора (JavaScript, Python, GO, Rust и т.д)
А и еще самое главное: прокачивайся и в других сферах, программирование не единственная вещь в мире
Полезные ссылки: