Software Design & Architecture

roadmap.sh: https://roadmap.sh/software-design-architecture

Suggested path through the Software Design & Architecture nodes. Each node links to its lesson when written.

Nodes

Clean code

  • Be Consistent
  • Meaningful Naming
  • Indentation & Code Style
  • Keep Methods/Classes/Files Small
  • Pure Functions
  • Minimize Cyclomatic Complexity
  • Avoid Passing Nulls & Booleans
  • Keep Framework Code Distant
  • Use Correct Constructs
  • Keep Tests Trivial
  • Avoid Premature Optimization
  • Command Query Separation
  • Structured Programming
  • Good Comments / Self-Documenting Code

Programming paradigms

  • Structured Programming
  • Object-Oriented Programming
  • Functional Programming
  • Imperative vs Declarative

Object-oriented programming

  • Abstraction
  • Encapsulation
  • Inheritance
  • Polymorphism
  • Composition over Inheritance
  • Law of Demeter

Design principles

  • DRY (Don’t Repeat Yourself)
  • KISS (Keep It Simple, Stupid)
  • YAGNI (You Aren’t Gonna Need It)
  • SOLID Principles
  • Single Responsibility Principle
  • Open/Closed Principle
  • Liskov Substitution Principle
  • Interface Segregation Principle
  • Dependency Inversion Principle
  • Separation of Concerns
  • Coupling & Cohesion
  • Encapsulate What Varies
  • Program Against Abstractions
  • Hollywood Principle

Design patterns

  • Gang of Four (GoF) Patterns
  • Creational Patterns
  • Structural Patterns
  • Behavioral Patterns
  • Singleton
  • Factory & Abstract Factory
  • Builder
  • Adapter
  • Decorator
  • Facade
  • Strategy
  • Observer
  • Command
  • Dependency Injection
  • Anti-Patterns

Architectural principles

  • Component Principles
  • Policy vs Detail
  • Coupling & Cohesion (Architecture)
  • Boundaries
  • Composition vs Inheritance
  • Stable Dependencies Principle
  • Stable Abstractions Principle

Architectural styles

  • Structural Styles
  • Messaging Styles
  • Distributed Styles
  • Monolithic vs Distributed
  • Layered Architecture
  • Event-Driven Architecture
  • Microkernel / Plugin
  • Pipe & Filter
  • Service-Based Architecture
  • Space-Based Architecture

Architectural patterns

  • Microservices
  • Monolithic Apps
  • Serverless
  • Event Sourcing
  • CQRS
  • Hexagonal (Ports & Adapters)
  • Clean Architecture
  • Onion Architecture
  • MVC / MVP / MVVM
  • Domain-Driven Design

Enterprise patterns

  • DTOs
  • Identity Maps
  • Use Cases / Interactors
  • Repositories
  • Entities & Value Objects
  • Domain Services
  • Application Services
  • Mappers
  • Gateways
  • ORMs

Resources

See resources.md.

Project ideas

  • Refactor a small monolithic CRUD app into Clean / Hexagonal architecture, separating domain, use cases, and infrastructure adapters.
  • Build a worked example that applies all five SOLID principles, then write a companion piece showing the smelly “before” version of each.
  • Implement the same feature (e.g. an order workflow) twice — once with classic layered CRUD and once with CQRS + Event Sourcing — and document the trade-offs.

1 item under this folder.