Interface Driven
Speaking of feedback loops and developer velocity, is there a way to look at the way we've done things in the past, learn from it, and make changes so that we can move faster in the future? In the software architecture world we talk about patterns such as monoliths, microservices, event driven, and space-based, but what if there's a better way to think about it? Instead of letting the system components drive the architecture, what if we let the interfaces drive? Clean, clear, understandable interfaces reduce cognitive load. This lets people and teams focus on the value add they bring to the overall system and not worry about, or be surprised by, the implementation details of the components around them.