
- Just Enough Software Architecture
- Domain Driven Design - Tackling Complexity in the Heart of Software (Eric Evans) I recommend this one more than Vaughn Vernon's DDD.
- Clean Architecture (Robert Martin)
- Fundamentals of Software Architecture: an Engineering Approach
- Design Patterns (Gamma et al)
- Site Reliability Engineering: How Google Runs Production Systems
- Refactoring: Improving the Design of Existing Code (2nd Edition) (Addison-Wesley Signature Series (Fowler))
- Refactoring to Patterns
- Patterns of Enterprise Application Architecture
-Head First Design Patterns Building Extensible and Maintainable Object Oriented Software and I
- https://www.youtube.com/watch?v=odxOPxYJdjg
- "Architecture Modernization: Socio-technical alignment of software, strategy, and structure"
- Software Architecture in Practice
- Documenting Software Architectures: Views and Beyond
- Head first: Software Architecture
Fairbanks points out that there's risk in every design. How much it should influence your architecture depends on how much it matters to your project.
He uses the example of installing a mailbox. You shouldn't approach that with the same level of planning you'd use to architect a building. They're similar projects in some sense, but risk with the former is so much lower that it isn't worth it.
In this case, for some projects, the risk of low accessibility might be significant enough that it should be high priority. For others, dependency churn or framework bloat might be higher. Or tooling capabilities. It depends on what you're building.
- 'Just Enough Software Architecture', by George Fairbanks.
- 'Risk and Cost Driven Architecture', by Eltjo Poort.
It reminds me of George Fairbanks’ Just Enough Software Architecture. He tells a story about his father, a civil engineer, who didn’t apply every engineering technique he knew when installing a mailbox. He just dug a hole, put in a post, and filled it with concrete.
The idea is simple: the effort you spend on architecture should be proportional to the risks involved. Sometimes you need careful analysis, sometimes you don’t.
Seems even more relevant now with AI coding.