In “Building Bridges,” I describe a philosophy of software architecture based on the idea of systems that span theory (the “left bank” of the river) and computational reality (the “right bank” of the river). In this philosophy, the business value that we deliver is primarily in the “middle of the river,” so to speak. If theory governs one bank and practical constraints another, there’s a significant gap between them that also requires design.