Designing, Building, and Evolving Complex Software with First Principles
Introduction: The Engineer’s Blind Spot
- The Incident That Broke Everything
- Why Component Thinking Fails at Scale
- What Systems Thinking Gives You
- How to Read This Book
Chapter 1: What Is a System?
- From Cybernetics to Software: A Brief History
- Defining Systems, Boundaries, and Environments
- Simple, Complicated, Complex, Chaotic
- Software as a Complex Adaptive System
Chapter 2: The Language of Systems — Stocks, Flows, and Feedback
- Stocks and Flows in Software Systems
- Reinforcing and Balancing Loops
- Delays: The Silent Killer of Stability
- Nonlinearity and Threshold Effects
Chapter 3: Emergence, Nonlinearity, and Unintended Consequences
- What Emergence Really Means
- Phase Transitions in Software Systems
- The Second-Order Effects of Optimization
- Designing for Unknown Unknowns
Chapter 4: Feedback Loops in Production Systems
- Cascading Failures as Positive Feedback
- Self-Healing and Balancing Feedback
- Runaway Loops: Retries, Backpressure, and Chaos
- Operational Feedback: From Monitoring to Action
Chapter 5: Causal Loop Diagrams and System Dynamics Modeling
- Drawing Causal Loop Diagrams for Software Systems
- From Qualitative to Quantitative: Stock-and-Flow Models
- Simulating Your System Before You Build It
- When Models Help and When They Mislead
Chapter 6: Leverage Points — Where to Intervene
- Donella Meadows’ Hierarchy of Leverage Points
- Low-Leverage Fixes: Parameters, Buffers, and Band-Aids
- Mid-Level Leverage: Feedback Structures and Information Flows
- High-Leverage Interventions: Paradigms, Goals, and Mental Models
Chapter 7: Resilience, Adaptation, and Antifragility
- Reliability Versus Resilience
- Designing for Failure, Not Preventing It
- Adaptive Systems: Can Software Evolve on Its Own?
- Antifragility in Engineering Practice
Chapter 8: Sociotechnical Systems — Conway’s Law and Beyond
- Conway’s Law, Inverted Conway, and Reality
- Organizational Topology as Architecture
- Culture as a System Property
- Aligning Teams, Processes, and Systems
Chapter 9: Technical Debt as a System Dynamic
- What Technical Debt Really Is (And Isn’t)
- The Feedback Loops of Debt Accumulation
- Interest Rates, Compounding, and Tipping Points
- Strategies for Sustainable Debt Management
Chapter 10: Architecture Through a Systems Lens
- Coupling, Cohesion, and Emergent Complexity
- Architectural Patterns as System Topologies
- The Tradeoff Triangle: Consistency, Availability, Latency
- Designing for Evolution, Not Perfection
Chapter 11: Distributed Systems and Emergent Behavior
- Distributed Systems as Complex Networks
- Consensus, Coordination, and Failure Modes
- Eventual Consistency as an Emergent Property
- Partition Tolerance and System Topology
Chapter 12: Microservices, Domain-Driven Design, and Bounded Contexts
- Why Monoliths Work (Until They Don’t)
- Bounded Contexts as System Boundaries
- Service Decomposition Using Systems Principles
- The Hidden Costs of Distributed Architectures
Chapter 13: Event-Driven Architectures and Data Flow Systems
- Events as the Fundamental Unit of Change
- Event Sourcing and Temporal Systems Thinking
- Streaming, Backpressure, and Flow Control
- Data Engineering as System Design
Chapter 14: Observability, Reliability, and Feedback Loops
- Observability as a Closed Feedback Loop
- Metrics, Logs, Traces, and System Understanding
- SLOs, Error Budgets, and Balancing Loops
- Chaos Engineering: Probing the System
Chapter 15: Performance, Scalability, and Capacity as System Properties
- Bottlenecks, Throughput, and Little’s Law
- Scaling Laws and Diminishing Returns
- Capacity Planning as Dynamic Modeling
- Performance Anti-Patterns: Systemic Causes
Chapter 16: DevOps, Platform Engineering, and AI-Assisted Development
- DevOps as Feedback Loop Acceleration
- Platform Engineering: Designing the Meta-System
- AI-Assisted Development as a System Intervention
- The Long-Term Dynamics of Automation
Chapter 17: Case Studies — Systems Thinking in Production
- Postmortem as Systems Analysis
- Case Study: The Cascading Failure That Took Down Half the Internet
- Case Study: How a Company Restructured Its Way to Better Software
- Patterns Across Incidents: What Systems Thinking Reveals
Chapter 18: Security as a System Property
- Security Is Not a Feature: It Is a System Property
- Attack Surfaces as Emergent Complexity
- Zero Trust as Continuous Feedback Control
- Defense in Depth: Layered Resilience Against Unknown Threats
- Supply Chain Dependencies and Systemic Risk
- Security Observability and the Detection Response Loop
Conclusion: The Systems Mindset
- From Principles to Practice: Your New Mental Models
- Leading With Systems Thinking
- The Future of Complex Software Systems
