Fundamentals of Software Architecture by Mark Richards & Neal Ford

Fundamentals of Software Architecture

Authors: Mark Richards and Neal Ford
Published: 2020
Core Focus: A comprehensive guide to modern software architecture, covering architectural thinking, styles, patterns, and the evolving role of architects.

Key Highlights

The Eight Core Expectations of Software Architects

  1. Make architecture decisions - Define the rules and constraints for systems
  2. Continually analyze the architecture - Look for improvements and identify risks
  3. Keep current with trends - Understand emerging patterns and technologies
  4. Ensure compliance - Verify teams follow architectural decisions
  5. Diverse exposure and experience - Broad technical knowledge across domains
  6. Business domain knowledge - Understand the problem space deeply
  7. Interpersonal skills - Communicate, collaborate, and lead effectively
  8. Navigate politics - Work within organizational constraints

Architecture Characteristics (Non-Functional Requirements)

Critical Insight: Never shoot for the best architecture—shoot for the least worst architecture. Every decision is a trade-off.

The Architecture Decision Record (ADR)

Document architectural decisions with:

Eight Fallacies of Distributed Computing

  1. The network is reliable
  2. Latency is zero
  3. Bandwidth is infinite
  4. The network is secure
  5. Topology doesn’t change
  6. There is one administrator
  7. Transport cost is zero
  8. The network is homogeneous

Why This Matters: Every distributed system violates these assumptions. Staff engineers must design resilience into every layer.

Architecture Styles Overview

Evolutionary Architecture

The Staff Engineer’s Takeaway

Architecture is about trade-offs, not right answers. The book emphasizes:

  1. Think in trade-offs: Every decision sacrifices something. Make it explicit.
  2. Analyze before choosing: Understand your architectural characteristics before picking a style.
  3. Document decisions: Future you (and your team) will thank you.
  4. Stay hands-on: Architects who don’t code lose credibility and context.
  5. Communicate constantly: Architecture dies in isolation.

Practical Application

Quick Facts

Bottom Line

This book transforms how you think about building systems. It’s not about memorizing patterns—it’s about developing architectural thinking: analyzing trade-offs, understanding context, and making decisions that balance competing concerns. Essential reading for any Staff+ engineer responsible for technical direction.