Architecture Recommended Reading List
Systems
Building Evolutionary Architecture, by Ford, Parsons & Kua
Provides a holistic overview of the current landscape of large-scale distributed systems with a perspective of how well they support on-going evolutionary changes.
Aligns very well with edX architecture thoughts on domain-driven design and the reactive manifesto.
Explains Fitness functions and how to use them to evolve a large-scale system.
Some book club notes are captured at Building Evolutionary Architecture.
Domain-driven Design, by Eric Evans
Provides a fundamental perspective on designing software with an emphasis on modeling business needs and creating a common ubiquitous language with an ongoing partnership between engineers and knowledge experts.
Additionally, an understanding of its design principles leads to an essential perspective on where to create boundaries around microservices and how they should interact (a.k.a., bounded contexts).
Overall, this original book is hard to read since it is wordy and redundant. However, there are various attempts at creating more comprehensible texts for DDD, including the recommended one below.
A group of brave and persistent edX engineers ventured into reading this original text and captured notes at Domain-Driven Design Book Club Notes.
Patterns, Principles, and Practices of Domain-driven Design, by Scott Millet
This is a must-read for anyone interested in designing microservices and their interactions! It clearly explains the main concepts of Domain-Driven Design, while incorporating modern ideas of Reactive Manifesto and Self-contained Systems (although not necessarily using those terms).
It is relatively a lengthy book, but definitely not as long as Eric Evan's original DDD text - and the last chapters with coding examples can be quickly skimmed through (or even skipped).
Building Microservices, by Sam Newman
A good overview of microservices with a recommended design mindset.
Information on some tools and patterns when implementing and managing microservices.
Notes captured at Building Microservices.
Very clearly describes and explains how a well-crafted message-driven (event-passing) system architecture can lend itself to a highly Responsive, Resilient, and Elastic system.
edX experiences in following this manifesto have thus far yielded good results.
Building on top of the design principles of the Reactive Manifesto, SCS takes a more extreme standpoint and encourages entirely autonomous, highly decoupled, self-contained services that contain their own UI, business logic, and data storage, with only asynchronous communications between SCS'.
The slides at the top of their page provide great visuals of these concepts.
A superb book on systems thinking, including key concepts such stocks, flows, and feedback loops.
It will likely change the way you look at the world around you, whether it be climate change or organizational dynamics or system architecture.
Coding Best Practices
Clean Code, by Robert Martin (Uncle Bob)
Good perspective on coding best practices - though some may have differing thoughts on some recommendations.
Book club notes captured at Clean Code.
A Philosophy of Software Design, by John Osterhaut
Relatively easy to read, given its structure of short sections. Covers concepts of information hiding, controlling complexity, and naming.
Extensions
Clean Architecture, by Robert Martin (Uncle Bob)
Excellent description of how SOLID coding design principles can be taken to a higher (course-grained) component level.
Great read to formulate ideas around plugins and extensions.
Frontend Architecture
Atomic Design, by Brad Frost
1st half provides a ubiquitous language for reusable frontend components: Atoms, Molecules, Organisms, Templates, and Pages.
2nd half speaks to the challenges and importance of alignment throughout the organization on developing, using, and maintaining a Design System.
This is the resource that Nimisha used when she introduced micro-frontends as an architectural pattern at edX.
Building Micro-Frontends, by Luca Mezzalira
Luca was an invited guest at Arch Hour: Arch Tea with Luca Mezzalira (Pre-Work) - 2020-07-09
His book covers both architecture theory and tactical best practices for MFEs.
Soft Skills
Non-violent Communication: A Language of Life, by Marshall Rosenberg
"If we change ourselves, we can change the world and changing ourselves begins with changing our language and methods of communication." - Arun Gandhi, grandson of Mahatma Gandhi
Part 1 provides a structured method for communication: Observation, Feeling, Need, Request
Part 2 describes empathic listening, which can be transformative in any relationship. Simply paraphrasing and echoing what you hear enables compassionate communication.
Change Management
ADKAR - technique to help individuals transition through changes
Kotter's 8 steps - framework for large-scale changes
SCARF: a brain-based model for collaborating with and influencing others - neuroscience-backed understanding of our need to move away from perceived threats and toward perceived rewards.