└── README.md /README.md: -------------------------------------------------------------------------------- 1 | # PHP Software Engineer roadmap 2 | 3 | Everything you should know as **software engineer** who work on PHP stack 4 | 5 | ## OOP 6 | - Class / Object 7 | - Interface and polymorphism 8 | - Abstraction 9 | - Inheritance 10 | - Trait 11 | 12 | ## Clean Code 13 | - ### Principles 14 | - SOLID 15 | - DRY 16 | - KISS 17 | - ### Design patterns 18 | - Singltone 19 | - Factory 20 | - Strategy 21 | - Decorator 22 | - Adapter 23 | - Proxy 24 | - Chain of Responsibility 25 | - Specification 26 | - Template 27 | - Facade 28 | 29 | - ### PHP Coding style standards 30 | - PSR-2 31 | - PSR-12 32 | - PHP CS Fixer 33 | - Psalm 34 | - CircleCI 35 | 36 | - ### PSR 37 | - PSR-3 `logging` 38 | - PSR-4 `autoloading` 39 | - PSR-6 `Caching interface` 40 | - PSR-11 `Container interface` 41 | - PSR-14 `Event Dispatcher` 42 | 43 | ## Test 44 | - What is software testing? 45 | - Which types of testing should be use? 46 | - Mock / Stub / Spy / Faker 47 | - TDD 48 | - Unit test / PHPUnit / Mockery 49 | 50 | ## Laravel *(Below concepts are mappable to any PHP framework you desired)* 51 | 52 | - **Model and Database** 53 | - Relation ships `1:1` `1:n` `n:m` `polymorphic` 54 | - Mutator/Accessor 55 | - Events 56 | - Observer 57 | - Scope 58 | - Resources 59 | - Pagination 60 | - Seeder 61 | - Migrations 62 | - Query Builder 63 | - Cache 64 | 65 | - **HTTP and Controllers** 66 | - Routing 67 | - Controllers 68 | - Middleware 69 | - Requests and Validation 70 | - Responses 71 | - URL Generations 72 | - Authentication (Sanctum or Passport) 73 | - Authorization 74 | - Error Handlng 75 | - Restul API 76 | - **Architecture concepts** 77 | - Service container 78 | - Service provider 79 | - Facade 80 | - **Test** 81 | - Feature/HTTP Testing 82 | - Mocking dependencies [Queue/FS/Notifications/...] 83 | - Eloquent factories and Database testing 84 | 85 | ## DB 86 | - RDBMS 87 | - Choose `MySQL` or `Postgres` 88 | - SQL: `join` `sub-query` `aggregation` 89 | - DDL 90 | - DML 91 | - DCL 92 | - TCL 93 | - Indexing / Foreign keys / Composite Keys / ... 94 | - Cuncurrency Control and Isolation levels 95 | - Pesimistic and Optimistic locking 96 | - Redis as In Memory db (types/threading system/...) 97 | - Learn a no-sql (ElasticSearch or MongoDB for the beginners) 98 | - Learn PDO and two different patterns of ORMs like Doctrine and Eloquent 99 | 100 | ## Deployment Cencepts 101 | - Basic usage of Linux terminal 102 | - Package/Repository management 103 | - File system manipulations 104 | - Systemctl and Services 105 | - Install PHP and Composer 106 | - Basic Unix ACL 107 | - Docker 108 | - Image 109 | - Container 110 | - Basic storage and mounting 111 | - Basic usage of registry 112 | - Web server 113 | - Nginx basic stuff 114 | - HAProxy (Optional, not required) 115 | - Basic network concepts: Try [khanacademy course](https://www.khanacademy.org/computing/computers-and-internet) 116 | 117 | ## Advanced Concepts 118 | - 12 Factor of Software as service 119 | - Message queue and PubSub [Use `redis` for the sake of simplicity, Use `RabbitMQ` or `Kafka` for more advanced purposes] 120 | - Cache invalidation 121 | 122 | ## Design and Architecture [Advanced topics] 123 | - [UML Diagram](https://www.youtube.com/watch?v=UI6lqHOVHic) 124 | - [Usecase Diagram](https://www.youtube.com/watch?v=zid-MVo7M-E) 125 | - [Sequence Diagram](https://www.youtube.com/watch?v=pCK6prSq8aw&t=19s) 126 | - Event Storming 127 | - Fundamentals of Clean Architecture and seperation of concerns 128 | - CQS/CQRS 129 | - Event Sourcing 130 | - DDD | Hexagonal architecture 131 | 132 | ## Tooling 133 | - Git and Git Flow 134 | - Markdown 135 | - 10 fingers typing 136 | - Learn `vim` or `nano` 137 | --------------------------------------------------------------------------------