Engineering Patterns¶
A curated collection of timeless software engineering patterns - concepts that predate modern frameworks and will outlast them. These are the foundations that help you reason about any codebase, from embedded systems to distributed clouds.
How to use this resource:
- New to software engineering? Start with Tier 0: Computational Foundations and work your way up
- Looking for a specific topic? Use the Glossary or Search
- Want a guided path? See Learning Paths by role
- Exploring trade-offs? Check the Tension Map
264 concepts organized into 19 domains across 4 tiers of abstraction.
Tier 0: Computational Foundations¶
Pure computer science concepts that exist independent of any system. These are the mental models that let you reason about code in any language, on any platform.
- Programming Paradigms (13 concepts)
- Data Structures (14 concepts)
- Algorithmic Thinking (14 concepts)
- Algorithm Patterns (14 concepts)
- Type Systems & Memory (14 concepts)
- Compute & Memory Foundations (14 concepts)
- Storage & I/O Foundations (14 concepts)
Tier 1: System Constraints¶
Patterns that emerge when computation meets the physical world: multiple processors, networks, storage systems. These constraints shape how we build real software.
- Concurrency & Parallelism (14 concepts)
- Distributed Fundamentals (14 concepts)
- Distributed Patterns (13 concepts)
- Data Modeling & Persistence (14 concepts)
- Networking Foundations (14 concepts)
Tier 2: Architectural Judgment¶
How to organize code and systems. These domains require judgment - there are trade-offs, not right answers. Experience teaches which patterns fit which contexts.
- Software Architecture (14 concepts)
- Software Design (14 concepts)
- API Design (14 concepts)
- Testing Strategies (14 concepts)
- Security Patterns (14 concepts)
Tier 3: Applied Domains¶
Specialized knowledge for specific concerns. These apply Tier 0-2 concepts to particular problem spaces.
- Performance Optimization (14 concepts)
- Observability (14 concepts)