Invest in the design of the system every day. Strive to make the design of the system an excellent fit for the needs of the system that day.
When your understanding of the best possible design leaps forward, work gradually but persistently to bring the design back into alignment with your understanding.
- Design up front
- No Design
"is the path of least resistance"
When is the last Responsible Moment?
- The God-object
- The Monolith
"destroys conceptual purity"
"tolerate the unfinished"
Mis-application worse than Non-application
"Work gradually but persistently to bring the system back into alignment with your understanding"
Branch by Abstraction
- Code - Functionality
- Infrastructure - Scale
Architecture as a shared responsibility
Fitness Feedback Mechanism
- When did things improve?
- When did things get worse?
- How can we do better?