Skip to main content

Foundational Concepts

Start here to ground yourself in the essentials every architect and senior engineer should internalize before diving into patterns and scale. This section builds a shared vocabulary and a set of mental models that the rest of the manual assumes. It frames what we mean by software architecture, how to think in systems, and which programming paradigms and data foundations shape day‑to‑day design decisions.

“Form follows function.” — Louis Sullivan

What you’ll get:

  • Architecture vs. design: scope, time horizons, and trade‑offs (see comparison)
  • Systems thinking: boundaries, feedback loops, constraints (start with basics)
  • Programming paradigms: object‑oriented, functional, event‑driven/reactive, and dataflow (overview: paradigms)
  • Distributed systems basics: failure modes, coordination, and consistency & resiliency
  • Data fundamentals: modeling, storage, indexing, and access patterns (see data fundamentals)

How to use this section:

  • Start with a grounding of what software architecture is and is not (see overview) so your decisions have crisp scope and intent.
  • Practice systems thinking to draw boundaries, identify feedback loops, and reason about constraints, capacity, and change (learn more).
  • Rehearse multiple programming paradigms to expand your solution space and choose the right mental model for a problem (guide).
  • Revisit data fundamentals early—data shape and evolution often dominate architectural trade‑offs later (guide).
A mind map overview of foundational concepts: architecture, systems thinking, paradigms, and data.

Related topics:

References

  1. Martin Fowler, Architecture ↗️

  2. The Twelve‑Factor App ↗️