Architecture Repository/Process/Resources

= =

Our favorite books and resources to continue your systems architecture study

Status: Ongoing development

Most people begin systems architecture with technical knowledge and expertise. Some argue that the next step is to gain more technical knowledge, become the senior technical leader and design infrastructure. Others, including the Wikimedia Architecture Team, argue that the more essential next step is learning to think in systems. And to communicate that thinking effectively and collectively.

Our focus is on developing three foundational skills that we don’t learn (comprehensively) by coding:


 * Conceptual design and systems thinking
 * Collective reasoning and decision making
 * Integrative leadership and communicating across boundaries

Both paths matter. We’ve included resources covering current implementational thinking too. With the caveat that those skills are valuable *in context*. If the system will legitimately be improved by a tool, by all means, adopt it. The trick is to know where the leverage points really are -- will changes improve the health and design of a system overall?

It depends. Architecture is discovering what it depends on.

Primary

 * [book] Thinking in Systems: THE primer by Donella Meadows
 * [book] The Art of Systems Architecting by Mark Maier, Eberhardt Rechtin
 * [book] Becoming a Technical Leader by Gerald Weinberg
 * [course] Farnam Street’s Decision by Design course and/or [book] The Great Mental Models by Shane Parrish
 * [ebook] Technical leadership masterclass (free ebook) by Ruth Malan is a good place to begin, you can follow any resource of interest from there
 * [book] Domain Driven Design by Eric Evans

Secondary

 * [course] Argumentation: The study of effective reasoning
 * [book] Switch: How to change things when change is hard by Chip and Dan Heath
 * [website] Farnam Street website, especially the Decision Making section
 * [paper] Reactive Manifesto
 * [website] Thoughtworks collection of patterns in distributed systems
 * [paper] Model your application domain, not your json structures
 * [book] The Mythical Man Month by Fred Brooks
 * [course] Domain-Driven Design Fundamentals
 * [book] Design Unbound: Designing for emergence in a white water world v1 by Ann M. Pendleton-Jullian, John Seely Brown is about physical architecture but the overlaps with system design are essential.
 * [book] Accelerate: The Science of Lean Software and DevOps: Building and scaling High Performing Technology Organizations by Nicole Forsgren and Jez Humble
 * [book] Technology Strategy Patterns by Eben Hewitt
 * [ebook]What is Domain-Driven Design by Vladik Khononov
 * [book] Building Evolutionary Architectures by Neal Ford
 * [book] Release it! by Michael Nygard
 * [book] Design it! By Michael Keeling
 * [book] Lean Architecture for Agile Software Development - James Coplein
 * [book] Patterns of Enterprise Application Architecture by Martin Fowler
 * [book] Documenting Software Architectures: Views and Beyond (2nd Edition) by Paul Clements, Felix Bachmann and Len Bass
 * [book] An Introduction to Enterprise Architecture by Scott Bernard

Also worth exploring

 * [book] Start with Why by Simon Simek
 * [book] Site Reliability Engineering by Niall Richard Murphy
 * [book] Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems by Martin Kleppmann
 * [book] Seeing Organizational Patterns by Keidel


 * [ebook] Atomic Design (in progress)
 * [book] Building Microservices by Sam Newman
 * [book] RESTful Web APIs - Mike Amundsen
 * [course] Courses in TOGAF are valuable because they require extensive structuring of systems knowledge, which helps create good habits without applying TOGAF (like learning classical piano even if you’re a punk rocker)
 * [book] The Systems Thinker: Essential Thinking Skills For Solving Problems, Managing Chaos, and Creating Lasting Solutions in a Complex World by Albert Rutherford
 * [book] Site Reliability Engineering by Betsy Beyer, Chris Jones, Niall Richard Murphy, Jennifer Petoff
 * [book] Designing Distributed Systems by Brendan Burns
 * [book] Patterns, principles and practices of domain-driven design by Nick Tune and Scott Millet
 * [book] Don’t make me think by Steve Krug
 * [book] Leading Transformation by Nathan Furr, Kyle Nei and Thomas Zoega Ramsoy
 * [book] The Power of Full Engagement: Managing Energy, Not Time, Is the Key to High Performance and Personal Renewal by Jim Loehr and Tony Schwartz is an essential because architecture depends on the quality of our energy

Especially interesting (but tangentially related)

 * [book] The Timeless Way of Building and Notes on the Synthesis of Form by Christopher Alexander
 * [book] Reasons Neglect: Rationality and Organizing by Barbara Townley
 * [book] Architecture as a Metaphor by Kojin Karatani
 * [book] Complexity: the Emerging Science at the Edge of Order & Chaos by M Mitchell Waldrop
 * [book] The Architecture of Happiness by Alain de Botton
 * Books by James Glieck
 * [book] The Inmates are Running the Asylum by Alan Cooper
 * A wonderful reading list that isn’t about architecture