Learning Paths
Low-Level Design
Design patternsReusable solutions to common software design problems, catalogued by the Gang of Four (GoF) in 1994, SOLID principlesFive OOP design principles — Single Responsibility, Open/Closed, Liskov Substitution, Interface Segregation, Dependency Inversion, OOPObject-Oriented Programming — a paradigm based on encapsulation, inheritance, polymorphism, and abstraction case studies, and advanced topics like DI containersDependency Injection containers — frameworks that automatically resolve and inject object dependencies at runtime and reflectionThe ability to inspect and modify type metadata, methods, and properties at runtime.
High-Level Design
Distributed systemsSystems where components on networked computers communicate and coordinate to achieve a common goal, scalabilityA system's ability to handle increased load by adding resources — vertically (bigger machine) or horizontally (more machines) patterns, load balancingDistributing incoming network traffic across multiple servers to ensure no single server is overwhelmed, cachingStoring frequently accessed data in fast storage (memory) to reduce latency and database load, message queuesMiddleware that enables asynchronous communication between services by buffering messages (e.g., RabbitMQ, Kafka), and real-world architecture.